diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/MAXREFDES117_Code_Documentation.pdf b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/MAXREFDES117_Code_Documentation.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..8a3a781d4bd547688da15fc7a9159859a61fec8a
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/MAXREFDES117_Code_Documentation.pdf differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/MainPage.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/MainPage.html
new file mode 100644
index 0000000000000000000000000000000000000000..ef34a5b82b681a83ddfe49d1b43db3e9771cd8b0
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/MainPage.html
@@ -0,0 +1 @@
+<meta http-equiv="Refresh" content="0; url=html\index.html">
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/MAXREFDES117_Block_Diagram.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/MAXREFDES117_Block_Diagram.png
new file mode 100644
index 0000000000000000000000000000000000000000..80f3301aa8c2165a625e0edbdc0ced433b1181ac
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/MAXREFDES117_Block_Diagram.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/MAXREFDES117_firmware_Flowchart.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/MAXREFDES117_firmware_Flowchart.png
new file mode 100644
index 0000000000000000000000000000000000000000..f71455986af0687dbca1a601e0e09f0065b76217
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/MAXREFDES117_firmware_Flowchart.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8cpp.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..0907ba25c0798613689225f3c43948114b161b3a
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8cpp.html
@@ -0,0 +1,123 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/Adafruit_NeoPixel.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_adafruit___neo_pixel_8cpp.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Adafruit_NeoPixel.cpp File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>&quot;</code><br/>
+</div>
+<p><a href="_adafruit___neo_pixel_8cpp_source.html">Go to the source code of this file.</a></p>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_adafruit___neo_pixel_8cpp.html">Adafruit_NeoPixel.cpp</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8cpp_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8cpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..536c863d83799ca80ed81349abc6842855cbb501
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8cpp_source.html
@@ -0,0 +1,1320 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/Adafruit_NeoPixel.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_adafruit___neo_pixel_8cpp_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Adafruit_NeoPixel.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="_adafruit___neo_pixel_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*-------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">  Arduino library to control a wide variety of WS2811- and WS2812-based RGB</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">  LED devices such as Adafruit FLORA RGB Smart Pixels and NeoPixel strips.</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">  Currently handles 400 and 800 KHz bitstreams on 8, 12 and 16 MHz ATmega</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">  MCUs, with LEDs wired for various color orders.  8 MHz MCUs provide</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">  output on PORTB and PORTD, while 16 MHz chips can handle most output pins</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">  (possible exception with upper PORT registers on the Arduino Mega).</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">  Written by Phil Burgess / Paint Your Dragon for Adafruit Industries,</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">  contributions by PJRC, Michael Miller and other members of the open</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">  source community.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">  Adafruit invests time and resources providing this open source code,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">  please support Adafruit and open-source hardware by purchasing products</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">  from Adafruit!</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">  -------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">  This file is part of the Adafruit NeoPixel library.</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment">  NeoPixel is free software: you can redistribute it and/or modify</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment">  it under the terms of the GNU Lesser General Public License as</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment">  published by the Free Software Foundation, either version 3 of</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">  the License, or (at your option) any later version.</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment">  NeoPixel is distributed in the hope that it will be useful,</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment">  but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">  GNU Lesser General Public License for more details.</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">  You should have received a copy of the GNU Lesser General Public</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">  License along with NeoPixel.  If not, see</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">  &lt;http://www.gnu.org/licenses/&gt;.</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">  -------------------------------------------------------------------------*/</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_adafruit___neo_pixel_8h.html">Adafruit_NeoPixel.h</a>&quot;</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">// Constructor when length, pin and type are known at compile-time:</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#ac314debe6917c8c9b320b785139c6e58">   38</a></span>&#160;<a class="code" href="class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320">Adafruit_NeoPixel::Adafruit_NeoPixel</a>(uint16_t n, uint8_t p, <a class="code" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a> t) :</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;  brightness(0), pixels(NULL), endTime(0), begun(<a class="code" href="algorithm_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>)</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;{</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;  <a class="code" href="class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b">updateType</a>(t);</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;  <a class="code" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">updateLength</a>(n);</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;  <a class="code" href="class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b">setPin</a>(p);</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;}</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">// via Michael Vogt/neophob: empty constructor is used when strand length</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// isn&#39;t known at compile-time; situations where program config might be</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// read from internal flash memory or an SD card, or arrive via serial</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">// command.  If using this constructor, MUST follow up with updateType(),</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">// updateLength(), etc. to establish the strand type, length and pin number!</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320">   51</a></span>&#160;<a class="code" href="class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320">Adafruit_NeoPixel::Adafruit_NeoPixel</a>() :</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  pin(-1), brightness(0), pixels(NULL), endTime(0), begun(<a class="code" href="algorithm_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  numLEDs(0), numBytes(0), rOffset(1), gOffset(0), bOffset(2), wOffset(1)</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;#ifdef <a class="code" href="_adafruit___neo_pixel_8h.html#a9c4067fd0cceb0432d1758fc07ede469">NEO_KHZ400</a></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  , is800KHz(<a class="code" href="algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>)</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;#endif</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;{</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;}</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db">   60</a></span>&#160;<a class="code" href="class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db">Adafruit_NeoPixel::~Adafruit_NeoPixel</a>() {</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="keywordflow">if</span>(pixels)   free(pixels);</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="keywordflow">if</span>(pin &gt;= 0) pinMode(pin, INPUT);</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;}</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7">   65</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7">Adafruit_NeoPixel::begin</a>(<span class="keywordtype">void</span>) {</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  <span class="keywordflow">if</span>(pin &gt;= 0) {</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    pinMode(pin, OUTPUT);</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    digitalWrite(pin, LOW);</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  }</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  begun = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;}</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">   73</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">Adafruit_NeoPixel::updateLength</a>(uint16_t n) {</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  <span class="keywordflow">if</span>(pixels) free(pixels); <span class="comment">// Free existing data (if any)</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  <span class="comment">// Allocate new data -- note: ALL PIXELS ARE CLEARED</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  numBytes = n * ((wOffset == rOffset) ? 3 : 4);</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  <span class="keywordflow">if</span>((pixels = (uint8_t *)malloc(numBytes))) {</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    memset(pixels, 0, numBytes);</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    numLEDs = n;</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    numLEDs = numBytes = 0;</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  }</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;}</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b">   86</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b">Adafruit_NeoPixel::updateType</a>(<a class="code" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a> t) {</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <span class="keywordtype">boolean</span> oldThreeBytesPerPixel = (wOffset == rOffset); <span class="comment">// false if RGBW</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  wOffset = (t &gt;&gt; 6) &amp; 0b11; <span class="comment">// See notes in header file</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  rOffset = (t &gt;&gt; 4) &amp; 0b11; <span class="comment">// regarding R/G/B/W offsets</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  gOffset = (t &gt;&gt; 2) &amp; 0b11;</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  bOffset =  t       &amp; 0b11;</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="preprocessor"></span>  is800KHz = (t &lt; 256);      <span class="comment">// 400 KHz flag is 1&lt;&lt;8</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <span class="comment">// If bytes-per-pixel has changed (and pixel data was previously</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <span class="comment">// allocated), re-allocate to new size.  Will clear any data.</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <span class="keywordflow">if</span>(pixels) {</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keywordtype">boolean</span> newThreeBytesPerPixel = (wOffset == rOffset);</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keywordflow">if</span>(newThreeBytesPerPixel != oldThreeBytesPerPixel) <a class="code" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">updateLength</a>(numLEDs);</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  }</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;}</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="preprocessor">#ifdef ESP8266</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="preprocessor"></span><span class="comment">// ESP8266 show() is external to enforce ICACHE_RAM_ATTR execution</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> <span class="keywordtype">void</span> ICACHE_RAM_ATTR espShow(</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  uint8_t pin, uint8_t *pixels, uint32_t numBytes, uint8_t type);</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="preprocessor">#endif // ESP8266</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">  111</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">Adafruit_NeoPixel::show</a>(<span class="keywordtype">void</span>) {</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  <span class="keywordflow">if</span>(!pixels) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  <span class="comment">// Data latch = 50+ microsecond pause in the output stream.  Rather than</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <span class="comment">// put a delay at the end of the function, the ending time is noted and</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  <span class="comment">// the function will simply hold off (if needed) on issuing the</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  <span class="comment">// subsequent round of data until the latch time has elapsed.  This</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  <span class="comment">// allows the mainline code to start generating the next frame of data</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="comment">// rather than stalling for the latch.</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="keywordflow">while</span>(!<a class="code" href="class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e">canShow</a>());</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <span class="comment">// endTime is a private member (rather than global var) so that mutliple</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <span class="comment">// instances on different pins can be quickly issued in succession (each</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="comment">// instance doesn&#39;t delay the next).</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  <span class="comment">// In order to make this code runtime-configurable to work with any pin,</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="comment">// SBI/CBI instructions are eschewed in favor of full PORT writes via the</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <span class="comment">// OUT or ST instructions.  It relies on two facts: that peripheral</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <span class="comment">// functions (such as PWM) take precedence on output pins, so our PORT-</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <span class="comment">// wide writes won&#39;t interfere, and that interrupts are globally disabled</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  <span class="comment">// while data is being issued to the LEDs, so no other code will be</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="comment">// accessing the PORT.  The code takes an initial &#39;snapshot&#39; of the PORT</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  <span class="comment">// state, computes &#39;pin high&#39; and &#39;pin low&#39; values, and writes these back</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="comment">// to the PORT register as needed.</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  noInterrupts(); <span class="comment">// Need 100% focus on instruction timing</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="preprocessor">#ifdef __AVR__</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="preprocessor"></span><span class="comment">// AVR MCUs -- ATmega &amp; ATtiny (no XMEGA) ---------------------------------</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="keyword">volatile</span> uint16_t</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    i   = numBytes; <span class="comment">// Loop counter</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  <span class="keyword">volatile</span> uint8_t</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;   *ptr = pixels,   <span class="comment">// Pointer to next byte</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    b   = *ptr++,   <span class="comment">// Current byte value</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    hi,             <span class="comment">// PORT w/output bit set high</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    lo;             <span class="comment">// PORT w/output bit set low</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;  <span class="comment">// Hand-tuned assembly code issues data to the LED drivers at a specific</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  <span class="comment">// rate.  There&#39;s separate code for different CPU speeds (8, 12, 16 MHz)</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  <span class="comment">// for both the WS2811 (400 KHz) and WS2812 (800 KHz) drivers.  The</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  <span class="comment">// datastream timing for the LED drivers allows a little wiggle room each</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;  <span class="comment">// way (listed in the datasheets), so the conditions for compiling each</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <span class="comment">// case are set up for a range of frequencies rather than just the exact</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;  <span class="comment">// 8, 12 or 16 MHz values, permitting use with some close-but-not-spot-on</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;  <span class="comment">// devices (e.g. 16.5 MHz DigiSpark).  The ranges were arrived at based</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  <span class="comment">// on the datasheet figures and have not been extensively tested outside</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;  <span class="comment">// the canonical 8/12/16 MHz speeds; there&#39;s no guarantee these will work</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  <span class="comment">// close to the extremes (or possibly they could be pushed further).</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  <span class="comment">// Keep in mind only one CPU speed case actually gets compiled; the</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  <span class="comment">// resulting program isn&#39;t as massive as it might look from source here.</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="comment">// 8 MHz(ish) AVR ---------------------------------------------------------</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="preprocessor">#if (F_CPU &gt;= 7400000UL) &amp;&amp; (F_CPU &lt;= 9500000UL)</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400 // 800 KHz check needed only if 400 KHz support enabled</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;<span class="preprocessor"></span>  <span class="keywordflow">if</span>(is800KHz) {</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <span class="keyword">volatile</span> uint8_t n1, n2 = 0;  <span class="comment">// First, next bits out</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="comment">// Squeezing an 800 KHz stream out of an 8 MHz chip requires code</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="comment">// specific to each PORT register.  At present this is only written</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="comment">// to work with pins on PORTD or PORTB, the most likely use case --</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="comment">// this covers all the pins on the Adafruit Flora and the bulk of</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    <span class="comment">// digital pins on the Arduino Pro 8 MHz (keep in mind, this code</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <span class="comment">// doesn&#39;t even get compiled for 16 MHz boards like the Uno, Mega,</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <span class="comment">// Leonardo, etc., so don&#39;t bother extending this out of hand).</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    <span class="comment">// Additional PORTs could be added if you really need them, just</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    <span class="comment">// duplicate the else and loop and change the PORT.  Each add&#39;l</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="comment">// PORT will require about 150(ish) bytes of program space.</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <span class="comment">// 10 instruction clocks per bit: HHxxxxxLLL</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <span class="comment">// OUT instructions:              ^ ^    ^   (T=0,2,7)</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;<span class="preprocessor">#ifdef PORTD // PORTD isn&#39;t present on ATtiny85, etc.</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    <span class="keywordflow">if</span>(port == &amp;PORTD) {</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;      hi = PORTD |  pinMask;</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;      lo = PORTD &amp; ~pinMask;</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;      n1 = lo;</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;      <span class="keywordflow">if</span>(b &amp; 0x80) n1 = hi;</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;      <span class="comment">// Dirty trick: RJMPs proceeding to the next instruction are used</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;      <span class="comment">// to delay two clock cycles in one instruction word (rather than</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;      <span class="comment">// using two NOPs).  This was necessary in order to squeeze the</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;      <span class="comment">// loop down to exactly 64 words -- the maximum possible for a</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;      <span class="comment">// relative branch.</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;      <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;       <span class="stringliteral">&quot;headD:&quot;</span>                   <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// Clk  Pseudocode</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;        <span class="comment">// Bit 7:</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = hi</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;        <span class="stringliteral">&quot;mov  %[n2]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    n2   = lo</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n1]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = n1</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 6&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(b &amp; 0x40)</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;         <span class="stringliteral">&quot;mov %[n2]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 0-1   n2 = hi</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = lo</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;        <span class="comment">// Bit 6:</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = hi</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;        <span class="stringliteral">&quot;mov  %[n1]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    n1   = lo</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n2]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = n2</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 5&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(b &amp; 0x20)</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;         <span class="stringliteral">&quot;mov %[n1]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 0-1   n1 = hi</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = lo</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        <span class="comment">// Bit 5:</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = hi</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        <span class="stringliteral">&quot;mov  %[n2]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    n2   = lo</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n1]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = n1</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 4&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(b &amp; 0x10)</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;         <span class="stringliteral">&quot;mov %[n2]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 0-1   n2 = hi</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = lo</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        <span class="comment">// Bit 4:</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = hi</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;        <span class="stringliteral">&quot;mov  %[n1]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    n1   = lo</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n2]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = n2</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 3&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(b &amp; 0x08)</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;         <span class="stringliteral">&quot;mov %[n1]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 0-1   n1 = hi</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = lo</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        <span class="comment">// Bit 3:</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = hi</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        <span class="stringliteral">&quot;mov  %[n2]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    n2   = lo</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n1]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = n1</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 2&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(b &amp; 0x04)</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;         <span class="stringliteral">&quot;mov %[n2]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 0-1   n2 = hi</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = lo</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        <span class="comment">// Bit 2:</span></div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = hi</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;        <span class="stringliteral">&quot;mov  %[n1]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    n1   = lo</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n2]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = n2</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 1&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(b &amp; 0x02)</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;         <span class="stringliteral">&quot;mov %[n1]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 0-1   n1 = hi</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = lo</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;        <span class="comment">// Bit 1:</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = hi</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        <span class="stringliteral">&quot;mov  %[n2]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    n2   = lo</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n1]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = n1</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 0&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(b &amp; 0x01)</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;         <span class="stringliteral">&quot;mov %[n2]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 0-1   n2 = hi</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = lo</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;        <span class="stringliteral">&quot;sbiw %[count], 1&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    i-- (don&#39;t act on Z flag yet)</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;        <span class="comment">// Bit 0:</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = hi</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;        <span class="stringliteral">&quot;mov  %[n1]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    n1   = lo</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n2]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = n2</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;        <span class="stringliteral">&quot;ld   %[byte] , %a[ptr]+&quot;</span> <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    b = *ptr++</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 7&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(b &amp; 0x80)</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;         <span class="stringliteral">&quot;mov %[n1]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 0-1   n1 = hi</span></div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = lo</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;        <span class="stringliteral">&quot;brne headD&quot;</span>              <span class="stringliteral">&quot;\n&quot;</span>   <span class="comment">// 2    while(i) (Z flag set above)</span></div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;      : [byte]  <span class="stringliteral">&quot;+r&quot;</span> (b),</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;        [n1]    <span class="stringliteral">&quot;+r&quot;</span> (n1),</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;        [n2]    <span class="stringliteral">&quot;+r&quot;</span> (n2),</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;        [count] <span class="stringliteral">&quot;+w&quot;</span> (i)</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;      : [port]   <span class="stringliteral">&quot;I&quot;</span> (_SFR_IO_ADDR(PORTD)),</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;        [ptr]    <span class="stringliteral">&quot;e&quot;</span> (ptr),</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;        [hi]     <span class="stringliteral">&quot;r&quot;</span> (hi),</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;        [lo]     <span class="stringliteral">&quot;r&quot;</span> (lo));</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(port == &amp;PORTB) {</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;<span class="preprocessor">#endif // PORTD</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;      <span class="comment">// Same as above, just switched to PORTB and stripped of comments.</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;      hi = PORTB |  pinMask;</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;      lo = PORTB &amp; ~pinMask;</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;      n1 = lo;</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;      <span class="keywordflow">if</span>(b &amp; 0x80) n1 = hi;</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;      <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;       <span class="stringliteral">&quot;headB:&quot;</span>                   <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;        <span class="stringliteral">&quot;mov  %[n2]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n1]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 6&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;         <span class="stringliteral">&quot;mov %[n2]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        <span class="stringliteral">&quot;mov  %[n1]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n2]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 5&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;         <span class="stringliteral">&quot;mov %[n1]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;        <span class="stringliteral">&quot;mov  %[n2]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n1]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 4&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;         <span class="stringliteral">&quot;mov %[n2]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;        <span class="stringliteral">&quot;mov  %[n1]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n2]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 3&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;         <span class="stringliteral">&quot;mov %[n1]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;        <span class="stringliteral">&quot;mov  %[n2]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n1]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 2&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;         <span class="stringliteral">&quot;mov %[n2]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;        <span class="stringliteral">&quot;mov  %[n1]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n2]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 1&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;         <span class="stringliteral">&quot;mov %[n1]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;        <span class="stringliteral">&quot;mov  %[n2]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n1]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 0&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;         <span class="stringliteral">&quot;mov %[n2]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;        <span class="stringliteral">&quot;sbiw %[count], 1&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;        <span class="stringliteral">&quot;mov  %[n1]   , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[n2]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;        <span class="stringliteral">&quot;ld   %[byte] , %a[ptr]+&quot;</span> <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 7&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;         <span class="stringliteral">&quot;mov %[n1]   , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;        <span class="stringliteral">&quot;brne headB&quot;</span>              <span class="stringliteral">&quot;\n&quot;</span></div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;      : [byte] <span class="stringliteral">&quot;+r&quot;</span> (b), [n1] <span class="stringliteral">&quot;+r&quot;</span> (n1), [n2] <span class="stringliteral">&quot;+r&quot;</span> (n2), [count] <span class="stringliteral">&quot;+w&quot;</span> (i)</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;      : [port] <span class="stringliteral">&quot;I&quot;</span> (_SFR_IO_ADDR(PORTB)), [ptr] <span class="stringliteral">&quot;e&quot;</span> (ptr), [hi] <span class="stringliteral">&quot;r&quot;</span> (hi),</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;        [lo] <span class="stringliteral">&quot;r&quot;</span> (lo));</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;<span class="preprocessor">#ifdef PORTD</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;<span class="preprocessor"></span>    }    <span class="comment">// endif PORTB</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="preprocessor"></span>  } <span class="keywordflow">else</span> { <span class="comment">// end 800 KHz, do 400 KHz</span></div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;    <span class="comment">// Timing is more relaxed; unrolling the inner loop for each bit is</span></div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    <span class="comment">// not necessary.  Still using the peculiar RJMPs as 2X NOPs, not out</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    <span class="comment">// of need but just to trim the code size down a little.</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;    <span class="comment">// This 400-KHz-datastream-on-8-MHz-CPU code is not quite identical</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;    <span class="comment">// to the 800-on-16 code later -- the hi/lo timing between WS2811 and</span></div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    <span class="comment">// WS2812 is not simply a 2:1 scale!</span></div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;    <span class="comment">// 20 inst. clocks per bit: HHHHxxxxxxLLLLLLLLLL</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;    <span class="comment">// ST instructions:         ^   ^     ^          (T=0,4,10)</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    <span class="keyword">volatile</span> uint8_t next, bit;</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;    hi   = *port |  pinMask;</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;    lo   = *port &amp; ~pinMask;</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;    next = lo;</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;    bit  = 8;</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;     <span class="stringliteral">&quot;head20:&quot;</span>                  <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// Clk  Pseudocode    (T =  0)</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;      <span class="stringliteral">&quot;st   %a[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = hi     (T =  2)</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;      <span class="stringliteral">&quot;sbrc %[byte] , 7&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(b &amp; 128)</span></div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;       <span class="stringliteral">&quot;mov  %[next], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 0-1   next = hi    (T =  4)</span></div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;      <span class="stringliteral">&quot;st   %a[port], %[next]&quot;</span>  <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = next   (T =  6)</span></div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;      <span class="stringliteral">&quot;mov  %[next] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    next = lo     (T =  7)</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;      <span class="stringliteral">&quot;dec  %[bit]&quot;</span>             <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    bit--         (T =  8)</span></div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;      <span class="stringliteral">&quot;breq nextbyte20&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(bit == 0)</span></div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;      <span class="stringliteral">&quot;rol  %[byte]&quot;</span>            <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    b &lt;&lt;= 1       (T = 10)</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;      <span class="stringliteral">&quot;st   %a[port], %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = lo     (T = 12)</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 14)</span></div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 16)</span></div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 18)</span></div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;      <span class="stringliteral">&quot;rjmp head20&quot;</span>             <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    -&gt; head20 (next bit out)</span></div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;     <span class="stringliteral">&quot;nextbyte20:&quot;</span>              <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">//                    (T = 10)</span></div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;      <span class="stringliteral">&quot;st   %a[port], %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = lo     (T = 12)</span></div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;      <span class="stringliteral">&quot;nop&quot;</span>                     <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    nop           (T = 13)</span></div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;      <span class="stringliteral">&quot;ldi  %[bit]  , 8&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    bit = 8       (T = 14)</span></div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;      <span class="stringliteral">&quot;ld   %[byte] , %a[ptr]+&quot;</span> <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    b = *ptr++    (T = 16)</span></div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;      <span class="stringliteral">&quot;sbiw %[count], 1&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    i--           (T = 18)</span></div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;      <span class="stringliteral">&quot;brne head20&quot;</span>             <span class="stringliteral">&quot;\n&quot;</span>   <span class="comment">// 2    if(i != 0) -&gt; (next byte)</span></div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;      : [port]  <span class="stringliteral">&quot;+e&quot;</span> (port),</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;        [byte]  <span class="stringliteral">&quot;+r&quot;</span> (b),</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;        [bit]   <span class="stringliteral">&quot;+r&quot;</span> (bit),</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;        [next]  <span class="stringliteral">&quot;+r&quot;</span> (next),</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;        [count] <span class="stringliteral">&quot;+w&quot;</span> (i)</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;      : [hi]    <span class="stringliteral">&quot;r&quot;</span> (hi),</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;        [lo]    <span class="stringliteral">&quot;r&quot;</span> (lo),</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;        [ptr]   <span class="stringliteral">&quot;e&quot;</span> (ptr));</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;  }</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;<span class="preprocessor">#endif // NEO_KHZ400</span></div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;<span class="comment">// 12 MHz(ish) AVR --------------------------------------------------------</span></div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;<span class="preprocessor">#elif (F_CPU &gt;= 11100000UL) &amp;&amp; (F_CPU &lt;= 14300000UL)</span></div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400 // 800 KHz check needed only if 400 KHz support enabled</span></div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;<span class="preprocessor"></span>  <span class="keywordflow">if</span>(is800KHz) {</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;    <span class="comment">// In the 12 MHz case, an optimized 800 KHz datastream (no dead time</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    <span class="comment">// between bytes) requires a PORT-specific loop similar to the 8 MHz</span></div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;    <span class="comment">// code (but a little more relaxed in this case).</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;    <span class="comment">// 15 instruction clocks per bit: HHHHxxxxxxLLLLL</span></div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;    <span class="comment">// OUT instructions:              ^   ^     ^     (T=0,4,10)</span></div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;    <span class="keyword">volatile</span> uint8_t next;</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;<span class="preprocessor">#ifdef PORTD</span></div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;    <span class="keywordflow">if</span>(port == &amp;PORTD) {</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;      hi   = PORTD |  pinMask;</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;      lo   = PORTD &amp; ~pinMask;</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;      next = lo;</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;      <span class="keywordflow">if</span>(b &amp; 0x80) next = hi;</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;      <span class="comment">// Don&#39;t &quot;optimize&quot; the OUT calls into the bitTime subroutine;</span></div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;      <span class="comment">// we&#39;re exploiting the RCALL and RET as 3- and 4-cycle NOPs!</span></div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;      <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;       <span class="stringliteral">&quot;headD:&quot;</span>                   <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">//        (T =  0)</span></div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;        <span class="stringliteral">&quot;out   %[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">//        (T =  1)</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;        <span class="stringliteral">&quot;rcall bitTimeD&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// Bit 7  (T = 15)</span></div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;        <span class="stringliteral">&quot;out   %[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;        <span class="stringliteral">&quot;rcall bitTimeD&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// Bit 6</span></div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;        <span class="stringliteral">&quot;out   %[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;        <span class="stringliteral">&quot;rcall bitTimeD&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// Bit 5</span></div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;        <span class="stringliteral">&quot;out   %[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;        <span class="stringliteral">&quot;rcall bitTimeD&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// Bit 4</span></div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;        <span class="stringliteral">&quot;out   %[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;        <span class="stringliteral">&quot;rcall bitTimeD&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// Bit 3</span></div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;        <span class="stringliteral">&quot;out   %[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;        <span class="stringliteral">&quot;rcall bitTimeD&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// Bit 2</span></div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;        <span class="stringliteral">&quot;out   %[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;        <span class="stringliteral">&quot;rcall bitTimeD&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// Bit 1</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;        <span class="comment">// Bit 0:</span></div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = hi    (T =  1)</span></div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop      (T =  3)</span></div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;        <span class="stringliteral">&quot;ld   %[byte] , %a[ptr]+&quot;</span> <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    b = *ptr++   (T =  5)</span></div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[next]&quot;</span>  <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = next  (T =  6)</span></div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;        <span class="stringliteral">&quot;mov  %[next] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    next = lo    (T =  7)</span></div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 7&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(b &amp; 0x80) (T =  8)</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;         <span class="stringliteral">&quot;mov %[next] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 0-1    next = hi  (T =  9)</span></div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;        <span class="stringliteral">&quot;nop&quot;</span>                     <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1                 (T = 10)</span></div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = lo    (T = 11)</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;        <span class="stringliteral">&quot;sbiw %[count], 1&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    i--          (T = 13)</span></div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;        <span class="stringliteral">&quot;brne headD&quot;</span>              <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    if(i != 0) -&gt; (next byte)</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;         <span class="stringliteral">&quot;rjmp doneD&quot;</span>             <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;        <span class="stringliteral">&quot;bitTimeD:&quot;</span>               <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">//      nop nop nop     (T =  4)</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;         <span class="stringliteral">&quot;out  %[port], %[next]&quot;</span>  <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = next     (T =  5)</span></div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;         <span class="stringliteral">&quot;mov  %[next], %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    next = lo       (T =  6)</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;         <span class="stringliteral">&quot;rol  %[byte]&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    b &lt;&lt;= 1         (T =  7)</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;         <span class="stringliteral">&quot;sbrc %[byte], 7&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(b &amp; 0x80)    (T =  8)</span></div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;          <span class="stringliteral">&quot;mov %[next], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 0-1   next = hi      (T =  9)</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;         <span class="stringliteral">&quot;nop&quot;</span>                    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1                    (T = 10)</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;         <span class="stringliteral">&quot;out  %[port], %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    PORT = lo       (T = 11)</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;         <span class="stringliteral">&quot;ret&quot;</span>                    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 4    nop nop nop nop (T = 15)</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;         <span class="stringliteral">&quot;doneD:&quot;</span>                 <span class="stringliteral">&quot;\n&quot;</span></div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;        : [byte]  <span class="stringliteral">&quot;+r&quot;</span> (b),</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;          [next]  <span class="stringliteral">&quot;+r&quot;</span> (next),</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;          [count] <span class="stringliteral">&quot;+w&quot;</span> (i)</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;        : [port]   <span class="stringliteral">&quot;I&quot;</span> (_SFR_IO_ADDR(PORTD)),</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;          [ptr]    <span class="stringliteral">&quot;e&quot;</span> (ptr),</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;          [hi]     <span class="stringliteral">&quot;r&quot;</span> (hi),</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;          [lo]     <span class="stringliteral">&quot;r&quot;</span> (lo));</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(port == &amp;PORTB) {</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;<span class="preprocessor">#endif // PORTD</span></div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;      hi   = PORTB |  pinMask;</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;      lo   = PORTB &amp; ~pinMask;</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;      next = lo;</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;      <span class="keywordflow">if</span>(b &amp; 0x80) next = hi;</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;      <span class="comment">// Same as above, just set for PORTB &amp; stripped of comments</span></div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;      <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;       <span class="stringliteral">&quot;headB:&quot;</span>                   <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;        <span class="stringliteral">&quot;out   %[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;        <span class="stringliteral">&quot;rcall bitTimeB&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;        <span class="stringliteral">&quot;out   %[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;        <span class="stringliteral">&quot;rcall bitTimeB&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;        <span class="stringliteral">&quot;out   %[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;        <span class="stringliteral">&quot;rcall bitTimeB&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;        <span class="stringliteral">&quot;out   %[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;        <span class="stringliteral">&quot;rcall bitTimeB&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;        <span class="stringliteral">&quot;out   %[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;        <span class="stringliteral">&quot;rcall bitTimeB&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;        <span class="stringliteral">&quot;out   %[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;        <span class="stringliteral">&quot;rcall bitTimeB&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;        <span class="stringliteral">&quot;out   %[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;        <span class="stringliteral">&quot;rcall bitTimeB&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;        <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;        <span class="stringliteral">&quot;ld   %[byte] , %a[ptr]+&quot;</span> <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[next]&quot;</span>  <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;        <span class="stringliteral">&quot;mov  %[next] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;        <span class="stringliteral">&quot;sbrc %[byte] , 7&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;         <span class="stringliteral">&quot;mov %[next] , %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;        <span class="stringliteral">&quot;nop&quot;</span>                     <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;        <span class="stringliteral">&quot;out  %[port] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;        <span class="stringliteral">&quot;sbiw %[count], 1&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;        <span class="stringliteral">&quot;brne headB&quot;</span>              <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;         <span class="stringliteral">&quot;rjmp doneB&quot;</span>             <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;        <span class="stringliteral">&quot;bitTimeB:&quot;</span>               <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;         <span class="stringliteral">&quot;out  %[port], %[next]&quot;</span>  <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;         <span class="stringliteral">&quot;mov  %[next], %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;         <span class="stringliteral">&quot;rol  %[byte]&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;         <span class="stringliteral">&quot;sbrc %[byte], 7&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;          <span class="stringliteral">&quot;mov %[next], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;         <span class="stringliteral">&quot;nop&quot;</span>                    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;         <span class="stringliteral">&quot;out  %[port], %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;         <span class="stringliteral">&quot;ret&quot;</span>                    <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;         <span class="stringliteral">&quot;doneB:&quot;</span>                 <span class="stringliteral">&quot;\n&quot;</span></div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;        : [byte] <span class="stringliteral">&quot;+r&quot;</span> (b), [next] <span class="stringliteral">&quot;+r&quot;</span> (next), [count] <span class="stringliteral">&quot;+w&quot;</span> (i)</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;        : [port] <span class="stringliteral">&quot;I&quot;</span> (_SFR_IO_ADDR(PORTB)), [ptr] <span class="stringliteral">&quot;e&quot;</span> (ptr), [hi] <span class="stringliteral">&quot;r&quot;</span> (hi),</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;          [lo] <span class="stringliteral">&quot;r&quot;</span> (lo));</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;<span class="preprocessor">#ifdef PORTD</span></div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;<span class="preprocessor"></span>    }</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400</span></div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;<span class="preprocessor"></span>  } <span class="keywordflow">else</span> { <span class="comment">// 400 KHz</span></div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;    <span class="comment">// 30 instruction clocks per bit: HHHHHHxxxxxxxxxLLLLLLLLLLLLLLL</span></div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;    <span class="comment">// ST instructions:               ^     ^        ^    (T=0,6,15)</span></div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;    <span class="keyword">volatile</span> uint8_t next, bit;</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;    hi   = *port |  pinMask;</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;    lo   = *port &amp; ~pinMask;</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;    next = lo;</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;    bit  = 8;</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;    <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;     <span class="stringliteral">&quot;head30:&quot;</span>                  <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// Clk  Pseudocode    (T =  0)</span></div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;      <span class="stringliteral">&quot;st   %a[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = hi     (T =  2)</span></div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;      <span class="stringliteral">&quot;sbrc %[byte] , 7&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(b &amp; 128)</span></div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;       <span class="stringliteral">&quot;mov  %[next], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 0-1   next = hi    (T =  4)</span></div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T =  6)</span></div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;      <span class="stringliteral">&quot;st   %a[port], %[next]&quot;</span>  <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = next   (T =  8)</span></div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 10)</span></div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 12)</span></div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 14)</span></div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;      <span class="stringliteral">&quot;nop&quot;</span>                     <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    nop           (T = 15)</span></div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;      <span class="stringliteral">&quot;st   %a[port], %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = lo     (T = 17)</span></div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 19)</span></div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;      <span class="stringliteral">&quot;dec  %[bit]&quot;</span>             <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    bit--         (T = 20)</span></div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;      <span class="stringliteral">&quot;breq nextbyte30&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(bit == 0)</span></div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;      <span class="stringliteral">&quot;rol  %[byte]&quot;</span>            <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    b &lt;&lt;= 1       (T = 22)</span></div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 24)</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 26)</span></div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 28)</span></div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;      <span class="stringliteral">&quot;rjmp head30&quot;</span>             <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    -&gt; head30 (next bit out)</span></div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;     <span class="stringliteral">&quot;nextbyte30:&quot;</span>              <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">//                    (T = 22)</span></div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;      <span class="stringliteral">&quot;nop&quot;</span>                     <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    nop           (T = 23)</span></div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;      <span class="stringliteral">&quot;ldi  %[bit]  , 8&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    bit = 8       (T = 24)</span></div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;      <span class="stringliteral">&quot;ld   %[byte] , %a[ptr]+&quot;</span> <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    b = *ptr++    (T = 26)</span></div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;      <span class="stringliteral">&quot;sbiw %[count], 1&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    i--           (T = 28)</span></div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;      <span class="stringliteral">&quot;brne head30&quot;</span>             <span class="stringliteral">&quot;\n&quot;</span>   <span class="comment">// 1-2  if(i != 0) -&gt; (next byte)</span></div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;      : [port]  <span class="stringliteral">&quot;+e&quot;</span> (port),</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;        [byte]  <span class="stringliteral">&quot;+r&quot;</span> (b),</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;        [bit]   <span class="stringliteral">&quot;+r&quot;</span> (bit),</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;        [next]  <span class="stringliteral">&quot;+r&quot;</span> (next),</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;        [count] <span class="stringliteral">&quot;+w&quot;</span> (i)</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;      : [hi]     <span class="stringliteral">&quot;r&quot;</span> (hi),</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;        [lo]     <span class="stringliteral">&quot;r&quot;</span> (lo),</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;        [ptr]    <span class="stringliteral">&quot;e&quot;</span> (ptr));</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;  }</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;<span class="preprocessor">#endif // NEO_KHZ400</span></div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;<span class="comment">// 16 MHz(ish) AVR --------------------------------------------------------</span></div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;<span class="preprocessor">#elif (F_CPU &gt;= 15400000UL) &amp;&amp; (F_CPU &lt;= 19000000L)</span></div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400 // 800 KHz check needed only if 400 KHz support enabled</span></div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;<span class="preprocessor"></span>  <span class="keywordflow">if</span>(is800KHz) {</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;    <span class="comment">// WS2811 and WS2812 have different hi/lo duty cycles; this is</span></div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;    <span class="comment">// similar but NOT an exact copy of the prior 400-on-8 code.</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;    <span class="comment">// 20 inst. clocks per bit: HHHHHxxxxxxxxLLLLLLL</span></div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;    <span class="comment">// ST instructions:         ^   ^        ^       (T=0,5,13)</span></div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;    <span class="keyword">volatile</span> uint8_t next, bit;</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;    hi   = *port |  pinMask;</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;    lo   = *port &amp; ~pinMask;</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;    next = lo;</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;    bit  = 8;</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;    <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;     <span class="stringliteral">&quot;head20:&quot;</span>                   <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// Clk  Pseudocode    (T =  0)</span></div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;      <span class="stringliteral">&quot;st   %a[port],  %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = hi     (T =  2)</span></div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;      <span class="stringliteral">&quot;sbrc %[byte],  7&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(b &amp; 128)</span></div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;       <span class="stringliteral">&quot;mov  %[next], %[hi]&quot;</span>     <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 0-1   next = hi    (T =  4)</span></div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;      <span class="stringliteral">&quot;dec  %[bit]&quot;</span>              <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    bit--         (T =  5)</span></div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;      <span class="stringliteral">&quot;st   %a[port],  %[next]&quot;</span>  <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = next   (T =  7)</span></div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;      <span class="stringliteral">&quot;mov  %[next] ,  %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    next = lo     (T =  8)</span></div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;      <span class="stringliteral">&quot;breq nextbyte20&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(bit == 0) (from dec above)</span></div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;      <span class="stringliteral">&quot;rol  %[byte]&quot;</span>             <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    b &lt;&lt;= 1       (T = 10)</span></div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                 <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 12)</span></div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;      <span class="stringliteral">&quot;nop&quot;</span>                      <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    nop           (T = 13)</span></div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;      <span class="stringliteral">&quot;st   %a[port],  %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = lo     (T = 15)</span></div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;      <span class="stringliteral">&quot;nop&quot;</span>                      <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    nop           (T = 16)</span></div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                 <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 18)</span></div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;      <span class="stringliteral">&quot;rjmp head20&quot;</span>              <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    -&gt; head20 (next bit out)</span></div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;     <span class="stringliteral">&quot;nextbyte20:&quot;</span>               <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">//                    (T = 10)</span></div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;      <span class="stringliteral">&quot;ldi  %[bit]  ,  8&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    bit = 8       (T = 11)</span></div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;      <span class="stringliteral">&quot;ld   %[byte] ,  %a[ptr]+&quot;</span> <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    b = *ptr++    (T = 13)</span></div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;      <span class="stringliteral">&quot;st   %a[port], %[lo]&quot;</span>     <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = lo     (T = 15)</span></div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;      <span class="stringliteral">&quot;nop&quot;</span>                      <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    nop           (T = 16)</span></div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;      <span class="stringliteral">&quot;sbiw %[count], 1&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    i--           (T = 18)</span></div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;       <span class="stringliteral">&quot;brne head20&quot;</span>             <span class="stringliteral">&quot;\n&quot;</span>   <span class="comment">// 2    if(i != 0) -&gt; (next byte)</span></div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;      : [port]  <span class="stringliteral">&quot;+e&quot;</span> (port),</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;        [byte]  <span class="stringliteral">&quot;+r&quot;</span> (b),</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;        [bit]   <span class="stringliteral">&quot;+r&quot;</span> (bit),</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;        [next]  <span class="stringliteral">&quot;+r&quot;</span> (next),</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;        [count] <span class="stringliteral">&quot;+w&quot;</span> (i)</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;      : [ptr]    <span class="stringliteral">&quot;e&quot;</span> (ptr),</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;        [hi]     <span class="stringliteral">&quot;r&quot;</span> (hi),</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;        [lo]     <span class="stringliteral">&quot;r&quot;</span> (lo));</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400</span></div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;<span class="preprocessor"></span>  } <span class="keywordflow">else</span> { <span class="comment">// 400 KHz</span></div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;</div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;    <span class="comment">// The 400 KHz clock on 16 MHz MCU is the most &#39;relaxed&#39; version.</span></div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;    <span class="comment">// 40 inst. clocks per bit: HHHHHHHHxxxxxxxxxxxxLLLLLLLLLLLLLLLLLLLL</span></div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;    <span class="comment">// ST instructions:         ^       ^           ^         (T=0,8,20)</span></div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;    <span class="keyword">volatile</span> uint8_t next, bit;</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;    hi   = *port |  pinMask;</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;    lo   = *port &amp; ~pinMask;</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;    next = lo;</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;    bit  = 8;</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;    <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;     <span class="stringliteral">&quot;head40:&quot;</span>                  <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// Clk  Pseudocode    (T =  0)</span></div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;      <span class="stringliteral">&quot;st   %a[port], %[hi]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = hi     (T =  2)</span></div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;      <span class="stringliteral">&quot;sbrc %[byte] , 7&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(b &amp; 128)</span></div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;       <span class="stringliteral">&quot;mov  %[next] , %[hi]&quot;</span>   <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 0-1   next = hi    (T =  4)</span></div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T =  6)</span></div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T =  8)</span></div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;      <span class="stringliteral">&quot;st   %a[port], %[next]&quot;</span>  <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = next   (T = 10)</span></div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 12)</span></div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 14)</span></div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 16)</span></div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 18)</span></div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 20)</span></div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;      <span class="stringliteral">&quot;st   %a[port], %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = lo     (T = 22)</span></div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;      <span class="stringliteral">&quot;nop&quot;</span>                     <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    nop           (T = 23)</span></div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;      <span class="stringliteral">&quot;mov  %[next] , %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    next = lo     (T = 24)</span></div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;      <span class="stringliteral">&quot;dec  %[bit]&quot;</span>             <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    bit--         (T = 25)</span></div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;      <span class="stringliteral">&quot;breq nextbyte40&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1-2  if(bit == 0)</span></div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;      <span class="stringliteral">&quot;rol  %[byte]&quot;</span>            <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    b &lt;&lt;= 1       (T = 27)</span></div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;      <span class="stringliteral">&quot;nop&quot;</span>                     <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    nop           (T = 28)</span></div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 30)</span></div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 32)</span></div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 34)</span></div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 36)</span></div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 38)</span></div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;      <span class="stringliteral">&quot;rjmp head40&quot;</span>             <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    -&gt; head40 (next bit out)</span></div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;     <span class="stringliteral">&quot;nextbyte40:&quot;</span>              <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">//                    (T = 27)</span></div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;      <span class="stringliteral">&quot;ldi  %[bit]  , 8&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 1    bit = 8       (T = 28)</span></div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;      <span class="stringliteral">&quot;ld   %[byte] , %a[ptr]+&quot;</span> <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    b = *ptr++    (T = 30)</span></div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 32)</span></div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;      <span class="stringliteral">&quot;st   %a[port], %[lo]&quot;</span>    <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    PORT = lo     (T = 34)</span></div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;      <span class="stringliteral">&quot;rjmp .+0&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    nop nop       (T = 36)</span></div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;      <span class="stringliteral">&quot;sbiw %[count], 1&quot;</span>        <span class="stringliteral">&quot;\n\t&quot;</span> <span class="comment">// 2    i--           (T = 38)</span></div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;      <span class="stringliteral">&quot;brne head40&quot;</span>             <span class="stringliteral">&quot;\n&quot;</span>   <span class="comment">// 1-2  if(i != 0) -&gt; (next byte)</span></div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;      : [port]  <span class="stringliteral">&quot;+e&quot;</span> (port),</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;        [byte]  <span class="stringliteral">&quot;+r&quot;</span> (b),</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;        [bit]   <span class="stringliteral">&quot;+r&quot;</span> (bit),</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;        [next]  <span class="stringliteral">&quot;+r&quot;</span> (next),</div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;        [count] <span class="stringliteral">&quot;+w&quot;</span> (i)</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;      : [ptr]    <span class="stringliteral">&quot;e&quot;</span> (ptr),</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;        [hi]     <span class="stringliteral">&quot;r&quot;</span> (hi),</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;        [lo]     <span class="stringliteral">&quot;r&quot;</span> (lo));</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;  }</div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;<span class="preprocessor">#endif // NEO_KHZ400</span></div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #error &quot;CPU SPEED NOT SUPPORTED&quot;</span></div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif // end F_CPU ifdefs on __AVR__</span></div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;<span class="comment">// END AVR ----------------------------------------------------------------</span></div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;</div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;<span class="preprocessor">#elif defined(__arm__)</span></div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;<span class="comment">// ARM MCUs -- Teensy 3.0, 3.1, LC, Arduino Due ---------------------------</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;<span class="preprocessor">#if defined(__MK20DX128__) || defined(__MK20DX256__) // Teensy 3.0 &amp; 3.1</span></div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CYCLES_800_T0H  (F_CPU / 4000000)</span></div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CYCLES_800_T1H  (F_CPU / 1250000)</span></div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CYCLES_800      (F_CPU /  800000)</span></div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CYCLES_400_T0H  (F_CPU / 2000000)</span></div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CYCLES_400_T1H  (F_CPU /  833333)</span></div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CYCLES_400      (F_CPU /  400000)</span></div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;  uint8_t          *p   = pixels,</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;                   *end = p + numBytes, pix, mask;</div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;  <span class="keyword">volatile</span> uint8_t *<span class="keyword">set</span> = portSetRegister(pin),</div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;                   *clr = portClearRegister(pin);</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;  uint32_t          cyc;</div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;</div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;  ARM_DEMCR    |= ARM_DEMCR_TRCENA;</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;  ARM_DWT_CTRL |= ARM_DWT_CTRL_CYCCNTENA;</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400 // 800 KHz check needed only if 400 KHz support enabled</span></div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;<span class="preprocessor"></span>  <span class="keywordflow">if</span>(is800KHz) {</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;<span class="preprocessor"></span>    cyc = ARM_DWT_CYCCNT + CYCLES_800;</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;    <span class="keywordflow">while</span>(p &lt; end) {</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;      pix = *p++;</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;      <span class="keywordflow">for</span>(mask = 0x80; mask; mask &gt;&gt;= 1) {</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;        <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc &lt; CYCLES_800);</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;        cyc  = ARM_DWT_CYCCNT;</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;        *<span class="keyword">set</span> = 1;</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;        <span class="keywordflow">if</span>(pix &amp; mask) {</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;          <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc &lt; CYCLES_800_T1H);</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;        } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;          <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc &lt; CYCLES_800_T0H);</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;        }</div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;        *clr = 1;</div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;      }</div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;    }</div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;    <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc &lt; CYCLES_800);</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400</span></div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;<span class="preprocessor"></span>  } <span class="keywordflow">else</span> { <span class="comment">// 400 kHz bitstream</span></div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;    cyc = ARM_DWT_CYCCNT + CYCLES_400;</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;    <span class="keywordflow">while</span>(p &lt; end) {</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;      pix = *p++;</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;      <span class="keywordflow">for</span>(mask = 0x80; mask; mask &gt;&gt;= 1) {</div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;        <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc &lt; CYCLES_400);</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;        cyc  = ARM_DWT_CYCCNT;</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;        *<span class="keyword">set</span> = 1;</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;        <span class="keywordflow">if</span>(pix &amp; mask) {</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;          <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc &lt; CYCLES_400_T1H);</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;        } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;          <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc &lt; CYCLES_400_T0H);</div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;        }</div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;        *clr = 1;</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;      }</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;    }</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;    <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc &lt; CYCLES_400);</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;  }</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;<span class="preprocessor">#endif // NEO_KHZ400</span></div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;<span class="preprocessor">#elif defined(__MKL26Z64__) // Teensy-LC</span></div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;<span class="preprocessor">#if F_CPU == 48000000</span></div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;<span class="preprocessor"></span>  uint8_t          *p   = pixels,</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;           pix, count, dly,</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;                   bitmask = digitalPinToBitMask(pin);</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;  <span class="keyword">volatile</span> uint8_t *reg = portSetRegister(pin);</div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;  uint32_t         num = numBytes;</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;  <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;    <span class="stringliteral">&quot;L%=_begin:&quot;</span>                <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;    <span class="stringliteral">&quot;ldrb   %[pix], [%[p], #0]&quot;</span>     <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;    <span class="stringliteral">&quot;lsl    %[pix], #24&quot;</span>            <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;    <span class="stringliteral">&quot;movs   %[count], #7&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;    <span class="stringliteral">&quot;L%=_loop:&quot;</span>             <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;    <span class="stringliteral">&quot;lsl    %[pix], #1&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;    <span class="stringliteral">&quot;bcs    L%=_loop_one&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;    <span class="stringliteral">&quot;L%=_loop_zero:&quot;</span></div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;    <span class="stringliteral">&quot;strb   %[bitmask], [%[reg], #0]&quot;</span>   <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;    <span class="stringliteral">&quot;movs   %[dly], #4&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;    <span class="stringliteral">&quot;L%=_loop_delay_T0H:&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;    <span class="stringliteral">&quot;sub    %[dly], #1&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;    <span class="stringliteral">&quot;bne    L%=_loop_delay_T0H&quot;</span>     <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;    <span class="stringliteral">&quot;strb   %[bitmask], [%[reg], #4]&quot;</span>   <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;    <span class="stringliteral">&quot;movs   %[dly], #13&quot;</span>            <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;    <span class="stringliteral">&quot;L%=_loop_delay_T0L:&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;    <span class="stringliteral">&quot;sub    %[dly], #1&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;    <span class="stringliteral">&quot;bne    L%=_loop_delay_T0L&quot;</span>     <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;    <span class="stringliteral">&quot;b  L%=_next&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;    <span class="stringliteral">&quot;L%=_loop_one:&quot;</span></div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;    <span class="stringliteral">&quot;strb   %[bitmask], [%[reg], #0]&quot;</span>   <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;    <span class="stringliteral">&quot;movs   %[dly], #13&quot;</span>            <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;    <span class="stringliteral">&quot;L%=_loop_delay_T1H:&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;    <span class="stringliteral">&quot;sub    %[dly], #1&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;    <span class="stringliteral">&quot;bne    L%=_loop_delay_T1H&quot;</span>     <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;    <span class="stringliteral">&quot;strb   %[bitmask], [%[reg], #4]&quot;</span>   <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;    <span class="stringliteral">&quot;movs   %[dly], #4&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;    <span class="stringliteral">&quot;L%=_loop_delay_T1L:&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;    <span class="stringliteral">&quot;sub    %[dly], #1&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;    <span class="stringliteral">&quot;bne    L%=_loop_delay_T1L&quot;</span>     <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;    <span class="stringliteral">&quot;nop&quot;</span>                   <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;    <span class="stringliteral">&quot;L%=_next:&quot;</span>             <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;    <span class="stringliteral">&quot;sub    %[count], #1&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;    <span class="stringliteral">&quot;bne    L%=_loop&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;    <span class="stringliteral">&quot;lsl    %[pix], #1&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;    <span class="stringliteral">&quot;bcs    L%=_last_one&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;    <span class="stringliteral">&quot;L%=_last_zero:&quot;</span></div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;    <span class="stringliteral">&quot;strb   %[bitmask], [%[reg], #0]&quot;</span>   <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;    <span class="stringliteral">&quot;movs   %[dly], #4&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;    <span class="stringliteral">&quot;L%=_last_delay_T0H:&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;    <span class="stringliteral">&quot;sub    %[dly], #1&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;    <span class="stringliteral">&quot;bne    L%=_last_delay_T0H&quot;</span>     <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;    <span class="stringliteral">&quot;strb   %[bitmask], [%[reg], #4]&quot;</span>   <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;    <span class="stringliteral">&quot;movs   %[dly], #10&quot;</span>            <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;    <span class="stringliteral">&quot;L%=_last_delay_T0L:&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;    <span class="stringliteral">&quot;sub    %[dly], #1&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;    <span class="stringliteral">&quot;bne    L%=_last_delay_T0L&quot;</span>     <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;    <span class="stringliteral">&quot;b  L%=_repeat&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;    <span class="stringliteral">&quot;L%=_last_one:&quot;</span></div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;    <span class="stringliteral">&quot;strb   %[bitmask], [%[reg], #0]&quot;</span>   <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;    <span class="stringliteral">&quot;movs   %[dly], #13&quot;</span>            <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;    <span class="stringliteral">&quot;L%=_last_delay_T1H:&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;    <span class="stringliteral">&quot;sub    %[dly], #1&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;    <span class="stringliteral">&quot;bne    L%=_last_delay_T1H&quot;</span>     <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;    <span class="stringliteral">&quot;strb   %[bitmask], [%[reg], #4]&quot;</span>   <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;    <span class="stringliteral">&quot;movs   %[dly], #1&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;    <span class="stringliteral">&quot;L%=_last_delay_T1L:&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;    <span class="stringliteral">&quot;sub    %[dly], #1&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;    <span class="stringliteral">&quot;bne    L%=_last_delay_T1L&quot;</span>     <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;    <span class="stringliteral">&quot;nop&quot;</span>                   <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;    <span class="stringliteral">&quot;L%=_repeat:&quot;</span>               <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;    <span class="stringliteral">&quot;add    %[p], #1&quot;</span>           <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;    <span class="stringliteral">&quot;sub    %[num], #1&quot;</span>         <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;    <span class="stringliteral">&quot;bne    L%=_begin&quot;</span>          <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;    <span class="stringliteral">&quot;L%=_done:&quot;</span>             <span class="stringliteral">&quot;\n\t&quot;</span></div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;    : [p] <span class="stringliteral">&quot;+r&quot;</span> (p),</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;      [pix] <span class="stringliteral">&quot;=&amp;r&quot;</span> (pix),</div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;      [count] <span class="stringliteral">&quot;=&amp;r&quot;</span> (count),</div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;      [dly] <span class="stringliteral">&quot;=&amp;r&quot;</span> (dly),</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;      [num] <span class="stringliteral">&quot;+r&quot;</span> (num)</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;    : [bitmask] <span class="stringliteral">&quot;r&quot;</span> (bitmask),</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;      [reg] <span class="stringliteral">&quot;r&quot;</span> (reg)</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;  );</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#error &quot;Sorry, only 48 MHz is supported, please set Tools &gt; CPU Speed to 48 MHz&quot;</span></div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif // F_CPU == 48000000</span></div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;<span class="preprocessor">#elif defined(__SAMD21G18A__) // Arduino Zero</span></div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;  <span class="comment">// Tried this with a timer/counter, couldn&#39;t quite get adequate</span></div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;  <span class="comment">// resolution.  So yay, you get a load of goofball NOPs...</span></div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;  uint8_t  *ptr, *end, p, bitMask, portNum;</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;  uint32_t  pinMask;</div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;  portNum =  g_APinDescription[pin].ulPort;</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;  pinMask =  1ul &lt;&lt; g_APinDescription[pin].ulPin;</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;  ptr     =  pixels;</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;  end     =  ptr + numBytes;</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;  p       = *ptr++;</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;  bitMask =  0x80;</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;  <span class="keyword">volatile</span> uint32_t *<span class="keyword">set</span> = &amp;(PORT-&gt;Group[portNum].OUTSET.reg),</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;                    *clr = &amp;(PORT-&gt;Group[portNum].OUTCLR.reg);</div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400 // 800 KHz check needed only if 400 KHz support enabled</span></div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;<span class="preprocessor"></span>  <span class="keywordflow">if</span>(is800KHz) {</div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;<span class="preprocessor"></span>    <span class="keywordflow">for</span>(;;) {</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;      *<span class="keyword">set</span> = pinMask;</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;      <span class="keyword">asm</span>(<span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span>);</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;      <span class="keywordflow">if</span>(p &amp; bitMask) {</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;        <span class="keyword">asm</span>(<span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span></div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;            <span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span></div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;            <span class="stringliteral">&quot;nop; nop; nop; nop;&quot;</span>);</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;        *clr = pinMask;</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;      } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;        *clr = pinMask;</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;        <span class="keyword">asm</span>(<span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span></div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;            <span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span></div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;            <span class="stringliteral">&quot;nop; nop; nop; nop;&quot;</span>);</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;      }</div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;      <span class="keywordflow">if</span>(bitMask &gt;&gt;= 1) {</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;        <span class="keyword">asm</span>(<span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span>);</div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;      } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;        <span class="keywordflow">if</span>(ptr &gt;= end) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;        p       = *ptr++;</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;        bitMask = 0x80;</div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;      }</div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;    }</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400</span></div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;<span class="preprocessor"></span>  } <span class="keywordflow">else</span> { <span class="comment">// 400 KHz bitstream</span></div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;    <span class="keywordflow">for</span>(;;) {</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;      *<span class="keyword">set</span> = pinMask;</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;      <span class="keyword">asm</span>(<span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span>);</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;      <span class="keywordflow">if</span>(p &amp; bitMask) {</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;        <span class="keyword">asm</span>(<span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span></div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;            <span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span></div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;            <span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span></div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;            <span class="stringliteral">&quot;nop; nop; nop;&quot;</span>);</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;        *clr = pinMask;</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;      } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;        *clr = pinMask;</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;        <span class="keyword">asm</span>(<span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span></div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;            <span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span></div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;            <span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span></div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;            <span class="stringliteral">&quot;nop; nop; nop;&quot;</span>);</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;      }</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;      <span class="keyword">asm</span>(<span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span></div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;          <span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span></div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;          <span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span></div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;          <span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop; nop;&quot;</span>);</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;      <span class="keywordflow">if</span>(bitMask &gt;&gt;= 1) {</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;        <span class="keyword">asm</span>(<span class="stringliteral">&quot;nop; nop; nop; nop; nop; nop; nop;&quot;</span>);</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;      } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;        <span class="keywordflow">if</span>(ptr &gt;= end) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;        p       = *ptr++;</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;        bitMask = 0x80;</div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;      }</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;    }</div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;  }</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;<span class="preprocessor">#else // Other ARM architecture -- Presumed Arduino Due</span></div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;<span class="preprocessor">  #define SCALE      VARIANT_MCK / 2UL / 1000000UL</span></div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;<span class="preprocessor"></span><span class="preprocessor">  #define INST       (2UL * F_CPU / VARIANT_MCK)</span></div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;<span class="preprocessor"></span><span class="preprocessor">  #define TIME_800_0 ((int)(0.40 * SCALE + 0.5) - (5 * INST))</span></div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;<span class="preprocessor"></span><span class="preprocessor">  #define TIME_800_1 ((int)(0.80 * SCALE + 0.5) - (5 * INST))</span></div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;<span class="preprocessor"></span><span class="preprocessor">  #define PERIOD_800 ((int)(1.25 * SCALE + 0.5) - (5 * INST))</span></div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;<span class="preprocessor"></span><span class="preprocessor">  #define TIME_400_0 ((int)(0.50 * SCALE + 0.5) - (5 * INST))</span></div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;<span class="preprocessor"></span><span class="preprocessor">  #define TIME_400_1 ((int)(1.20 * SCALE + 0.5) - (5 * INST))</span></div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;<span class="preprocessor"></span><span class="preprocessor">  #define PERIOD_400 ((int)(2.50 * SCALE + 0.5) - (5 * INST))</span></div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;  <span class="keywordtype">int</span>             pinMask, time0, time1, period, t;</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;  Pio            *port;</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;  <span class="keyword">volatile</span> WoReg *portSet, *portClear, *timeValue, *timeReset;</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;  uint8_t        *p, *end, pix, mask;</div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;  pmc_set_writeprotect(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;  pmc_enable_periph_clk((uint32_t)TC3_IRQn);</div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;  TC_Configure(TC1, 0,</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;    TC_CMR_WAVE | TC_CMR_WAVSEL_UP | TC_CMR_TCCLKS_TIMER_CLOCK1);</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;  TC_Start(TC1, 0);</div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;</div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;  pinMask   = g_APinDescription[pin].ulPin; <span class="comment">// Don&#39;t &#39;optimize&#39; these into</span></div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;  port      = g_APinDescription[pin].pPort; <span class="comment">// declarations above.  Want to</span></div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;  portSet   = &amp;(port-&gt;PIO_SODR);            <span class="comment">// burn a few cycles after</span></div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;  portClear = &amp;(port-&gt;PIO_CODR);            <span class="comment">// starting timer to minimize</span></div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;  timeValue = &amp;(TC1-&gt;TC_CHANNEL[0].TC_CV);  <span class="comment">// the initial &#39;while&#39;.</span></div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;  timeReset = &amp;(TC1-&gt;TC_CHANNEL[0].TC_CCR);</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;  p         =  pixels;</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;  end       =  p + numBytes;</div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;  pix       = *p++;</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;  mask      = 0x80;</div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400 // 800 KHz check needed only if 400 KHz support enabled</span></div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;<span class="preprocessor"></span>  <span class="keywordflow">if</span>(is800KHz) {</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;<span class="preprocessor"></span>    time0  = TIME_800_0;</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;    time1  = TIME_800_1;</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;    period = PERIOD_800;</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400</span></div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;<span class="preprocessor"></span>  } <span class="keywordflow">else</span> { <span class="comment">// 400 KHz bitstream</span></div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;    time0  = TIME_400_0;</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;    time1  = TIME_400_1;</div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;    period = PERIOD_400;</div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;  }</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;  <span class="keywordflow">for</span>(t = time0;; t = time0) {</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;    <span class="keywordflow">if</span>(pix &amp; mask) t = time1;</div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;    <span class="keywordflow">while</span>(*timeValue &lt; period);</div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;    *portSet   = pinMask;</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;    *timeReset = TC_CCR_CLKEN | TC_CCR_SWTRG;</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;    <span class="keywordflow">while</span>(*timeValue &lt; t);</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;    *portClear = pinMask;</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;    <span class="keywordflow">if</span>(!(mask &gt;&gt;= 1)) {   <span class="comment">// This &#39;inside-out&#39; loop logic utilizes</span></div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;      <span class="keywordflow">if</span>(p &gt;= end) <span class="keywordflow">break</span>; <span class="comment">// idle time to minimize inter-byte delays.</span></div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;      pix = *p++;</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;      mask = 0x80;</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;    }</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;  }</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;  <span class="keywordflow">while</span>(*timeValue &lt; period); <span class="comment">// Wait for last bit</span></div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;  TC_Stop(TC1, 0);</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;<span class="preprocessor">#endif // end Due</span></div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;<span class="comment">// END ARM ----------------------------------------------------------------</span></div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;<span class="preprocessor">#elif defined(ESP8266)</span></div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;<span class="comment">// ESP8266 ----------------------------------------------------------------</span></div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;  <span class="comment">// ESP8266 show() is external to enforce ICACHE_RAM_ATTR execution</span></div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;  espShow(pin, pixels, numBytes, is800KHz);</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;<span class="preprocessor">#endif // ESP8266</span></div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;<span class="comment">// END ARCHITECTURE SELECT ------------------------------------------------</span></div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;  interrupts();</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;  endTime = micros(); <span class="comment">// Save EOD time for latch on next call</span></div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;}</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;<span class="comment">// Set the output pin number</span></div>
+<div class="line"><a name="l01031"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b"> 1031</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b">Adafruit_NeoPixel::setPin</a>(uint8_t p) {</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;  <span class="keywordflow">if</span>(begun &amp;&amp; (pin &gt;= 0)) pinMode(pin, INPUT);</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;  <span class="keywordflow">if</span>(p &gt;= 0) {</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;    pin = p;</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;    <span class="keywordflow">if</span>(begun) {</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;      pinMode(p, OUTPUT);</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;      digitalWrite(p, LOW);</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;    }</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;<span class="preprocessor">#ifdef __AVR__</span></div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;<span class="preprocessor"></span>    port    = portOutputRegister(digitalPinToPort(p));</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;    pinMask = digitalPinToBitMask(p);</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;<span class="preprocessor"></span>  }</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;}</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;<span class="comment">// Set pixel color from separate R,G,B components:</span></div>
+<div class="line"><a name="l01047"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1"> 1047</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1">Adafruit_NeoPixel::setPixelColor</a>(</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; uint16_t n, uint8_t r, uint8_t g, uint8_t b) {</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;  <span class="keywordflow">if</span>(n &lt; numLEDs) {</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;    <span class="keywordflow">if</span>(brightness) { <span class="comment">// See notes in setBrightness()</span></div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;      r = (r * brightness) &gt;&gt; 8;</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;      g = (g * brightness) &gt;&gt; 8;</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;      b = (b * brightness) &gt;&gt; 8;</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;    }</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;    uint8_t *p;</div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;    <span class="keywordflow">if</span>(wOffset == rOffset) { <span class="comment">// Is an RGB-type strip</span></div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;      p = &amp;pixels[n * 3];    <span class="comment">// 3 bytes per pixel</span></div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;    } <span class="keywordflow">else</span> {                 <span class="comment">// Is a WRGB-type strip</span></div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;      p = &amp;pixels[n * 4];    <span class="comment">// 4 bytes per pixel</span></div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;      p[wOffset] = 0;        <span class="comment">// But only R,G,B passed -- set W to 0</span></div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;    }</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;    p[rOffset] = r;          <span class="comment">// R,G,B always stored</span></div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;    p[gOffset] = g;</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;    p[bOffset] = b;</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;  }</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;}</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;<span class="comment">// Set pixel color from &#39;packed&#39; 32-bit RGB color:</span></div>
+<div class="line"><a name="l01070"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#abbf243cce591dc37be507cf173485bc8"> 1070</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1">Adafruit_NeoPixel::setPixelColor</a>(uint16_t n, uint32_t c) {</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;  <span class="keywordflow">if</span>(n &lt; numLEDs) {</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;    uint8_t *p,</div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;      r = (uint8_t)(c &gt;&gt; 16),</div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;      g = (uint8_t)(c &gt;&gt;  8),</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;      b = (uint8_t)c;</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;    <span class="keywordflow">if</span>(brightness) { <span class="comment">// See notes in setBrightness()</span></div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;      r = (r * brightness) &gt;&gt; 8;</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;      g = (g * brightness) &gt;&gt; 8;</div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;      b = (b * brightness) &gt;&gt; 8;</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;    }</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;    <span class="keywordflow">if</span>(wOffset == rOffset) {</div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;      p = &amp;pixels[n * 3];</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;    } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;      p = &amp;pixels[n * 4];</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;      uint8_t w = (uint8_t)(c &gt;&gt; 24);</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;      p[wOffset] = brightness ? ((w * brightness) &gt;&gt; 8) : w;</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;    }</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;    p[rOffset] = r;</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;    p[gOffset] = g;</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;    p[bOffset] = b;</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;  }</div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;}</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;<span class="comment">// Convert separate R,G,B into packed 32-bit RGB color.</span></div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;<span class="comment">// Packed format is always RGB, regardless of LED strand color order.</span></div>
+<div class="line"><a name="l01096"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec"> 1096</a></span>&#160;uint32_t <a class="code" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec">Adafruit_NeoPixel::Color</a>(uint8_t r, uint8_t g, uint8_t b) {</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;  <span class="keywordflow">return</span> ((uint32_t)r &lt;&lt; 16) | ((uint32_t)g &lt;&lt;  8) | b;</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;}</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;<span class="comment">// Convert separate R,G,B,W into packed 32-bit WRGB color.</span></div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;<span class="comment">// Packed format is always WRGB, regardless of LED strand color order.</span></div>
+<div class="line"><a name="l01102"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a9846704aaabd4e102beba5a5484d5738"> 1102</a></span>&#160;uint32_t <a class="code" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec">Adafruit_NeoPixel::Color</a>(uint8_t r, uint8_t g, uint8_t b, uint8_t w) {</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;  <span class="keywordflow">return</span> ((uint32_t)w &lt;&lt; 24) | ((uint32_t)r &lt;&lt; 16) | ((uint32_t)g &lt;&lt;  8) | b;</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;}</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;<span class="comment">// Query color from previously-set pixel (returns packed 32-bit RGB value)</span></div>
+<div class="line"><a name="l01107"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa"> 1107</a></span>&#160;uint32_t <a class="code" href="class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa">Adafruit_NeoPixel::getPixelColor</a>(uint16_t n)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;  <span class="keywordflow">if</span>(n &gt;= numLEDs) <span class="keywordflow">return</span> 0; <span class="comment">// Out of bounds, return no color.</span></div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;  uint8_t *p;</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;  <span class="keywordflow">if</span>(wOffset == rOffset) { <span class="comment">// Is RGB-type device</span></div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;    p = &amp;pixels[n * 3];</div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;    <span class="keywordflow">if</span>(brightness) {</div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;      <span class="comment">// Stored color was decimated by setBrightness().  Returned value</span></div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;      <span class="comment">// attempts to scale back to an approximation of the original 24-bit</span></div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;      <span class="comment">// value used when setting the pixel color, but there will always be</span></div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;      <span class="comment">// some error -- those bits are simply gone.  Issue is most</span></div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;      <span class="comment">// pronounced at low brightness levels.</span></div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;      <span class="keywordflow">return</span> (((uint32_t)(p[rOffset] &lt;&lt; 8) / brightness) &lt;&lt; 16) |</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;             (((uint32_t)(p[gOffset] &lt;&lt; 8) / brightness) &lt;&lt;  8) |</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;             ( (uint32_t)(p[bOffset] &lt;&lt; 8) / brightness       );</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;    } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;      <span class="comment">// No brightness adjustment has been made -- return &#39;raw&#39; color</span></div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;      <span class="keywordflow">return</span> ((uint32_t)p[rOffset] &lt;&lt; 16) |</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;             ((uint32_t)p[gOffset] &lt;&lt;  8) |</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;              (uint32_t)p[bOffset];</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;    }</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;  } <span class="keywordflow">else</span> {                 <span class="comment">// Is RGBW-type device</span></div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;    p = &amp;pixels[n * 4];</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;    <span class="keywordflow">if</span>(brightness) { <span class="comment">// Return scaled color</span></div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;      <span class="keywordflow">return</span> (((uint32_t)(p[wOffset] &lt;&lt; 8) / brightness) &lt;&lt; 24) |</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;             (((uint32_t)(p[rOffset] &lt;&lt; 8) / brightness) &lt;&lt; 16) |</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;             (((uint32_t)(p[gOffset] &lt;&lt; 8) / brightness) &lt;&lt;  8) |</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;             ( (uint32_t)(p[bOffset] &lt;&lt; 8) / brightness       );</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;    } <span class="keywordflow">else</span> { <span class="comment">// Return raw color</span></div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;      <span class="keywordflow">return</span> ((uint32_t)p[wOffset] &lt;&lt; 24) |</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;             ((uint32_t)p[rOffset] &lt;&lt; 16) |</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;             ((uint32_t)p[gOffset] &lt;&lt;  8) |</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;              (uint32_t)p[bOffset];</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;    }</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;  }</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;}</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;<span class="comment">// Returns pointer to pixels[] array.  Pixel data is stored in device-</span></div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;<span class="comment">// native format and is not translated here.  Application will need to be</span></div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;<span class="comment">// aware of specific pixel data format and handle colors appropriately.</span></div>
+<div class="line"><a name="l01148"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067"> 1148</a></span>&#160;uint8_t *<a class="code" href="class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067">Adafruit_NeoPixel::getPixels</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;  <span class="keywordflow">return</span> pixels;</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;}</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;</div>
+<div class="line"><a name="l01152"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b"> 1152</a></span>&#160;uint16_t <a class="code" href="class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b">Adafruit_NeoPixel::numPixels</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;  <span class="keywordflow">return</span> numLEDs;</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;}</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="comment">// Adjust output brightness; 0=darkest (off), 255=brightest.  This does</span></div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;<span class="comment">// NOT immediately affect what&#39;s currently displayed on the LEDs.  The</span></div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;<span class="comment">// next call to show() will refresh the LEDs at this level.  However,</span></div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;<span class="comment">// this process is potentially &quot;lossy,&quot; especially when increasing</span></div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;<span class="comment">// brightness.  The tight timing in the WS2811/WS2812 code means there</span></div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;<span class="comment">// aren&#39;t enough free cycles to perform this scaling on the fly as data</span></div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;<span class="comment">// is issued.  So we make a pass through the existing color data in RAM</span></div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;<span class="comment">// and scale it (subsequent graphics commands also work at this</span></div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;<span class="comment">// brightness level).  If there&#39;s a significant step up in brightness,</span></div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;<span class="comment">// the limited number of steps (quantization) in the old data will be</span></div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;<span class="comment">// quite visible in the re-scaled version.  For a non-destructive</span></div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;<span class="comment">// change, you&#39;ll need to re-render the full strip data.  C&#39;est la vie.</span></div>
+<div class="line"><a name="l01168"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53"> 1168</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53">Adafruit_NeoPixel::setBrightness</a>(uint8_t b) {</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;  <span class="comment">// Stored brightness value is different than what&#39;s passed.</span></div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;  <span class="comment">// This simplifies the actual scaling math later, allowing a fast</span></div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;  <span class="comment">// 8x8-bit multiply and taking the MSB.  &#39;brightness&#39; is a uint8_t,</span></div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;  <span class="comment">// adding 1 here may (intentionally) roll over...so 0 = max brightness</span></div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;  <span class="comment">// (color values are interpreted literally; no scaling), 1 = min</span></div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;  <span class="comment">// brightness (off), 255 = just below max brightness.</span></div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;  uint8_t newBrightness = b + 1;</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;  <span class="keywordflow">if</span>(newBrightness != brightness) { <span class="comment">// Compare against prior value</span></div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;    <span class="comment">// Brightness has changed -- re-scale existing data in RAM</span></div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;    uint8_t  c,</div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;            *ptr           = pixels,</div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;             oldBrightness = brightness - 1; <span class="comment">// De-wrap old brightness value</span></div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;    uint16_t scale;</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;    <span class="keywordflow">if</span>(oldBrightness == 0) scale = 0; <span class="comment">// Avoid /0</span></div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span>(b == 255) scale = 65535 / oldBrightness;</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;    <span class="keywordflow">else</span> scale = (((uint16_t)newBrightness &lt;&lt; 8) - 1) / oldBrightness;</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;    <span class="keywordflow">for</span>(uint16_t i=0; i&lt;numBytes; i++) {</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;      c      = *ptr;</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;      *ptr++ = (c * scale) &gt;&gt; 8;</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;    }</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;    brightness = newBrightness;</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;  }</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;}</div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;<span class="comment">//Return the brightness value</span></div>
+<div class="line"><a name="l01194"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f"> 1194</a></span>&#160;uint8_t <a class="code" href="class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f">Adafruit_NeoPixel::getBrightness</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;  <span class="keywordflow">return</span> brightness - 1;</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;}</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;</div>
+<div class="line"><a name="l01198"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204"> 1198</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204">Adafruit_NeoPixel::clear</a>() {</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;  memset(pixels, 0, numBytes);</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;}</div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_adafruit___neo_pixel_8cpp.html">Adafruit_NeoPixel.cpp</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h.html
new file mode 100644
index 0000000000000000000000000000000000000000..e2da5f83b0a280336babd1df8b4ca6c38a49d296
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h.html
@@ -0,0 +1,670 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/Adafruit_NeoPixel.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_adafruit___neo_pixel_8h.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Data Structures</a> &#124;
+<a href="#define-members">Macros</a> &#124;
+<a href="#typedef-members">Typedefs</a>  </div>
+  <div class="headertitle">
+<div class="title">Adafruit_NeoPixel.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;WProgram.h&gt;</code><br/>
+<code>#include &lt;pins_arduino.h&gt;</code><br/>
+</div>
+<p><a href="_adafruit___neo_pixel_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:aa4f80df5ab240d93359f40956462f758"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#aa4f80df5ab240d93359f40956462f758">NEO_RGB</a>&#160;&#160;&#160;((0 &lt;&lt; 6) | (0 &lt;&lt; 4) | (1 &lt;&lt; 2) | (2))</td></tr>
+<tr class="separator:aa4f80df5ab240d93359f40956462f758"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7d6aaa56c8e2603312cba8dbdf9c5661"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a7d6aaa56c8e2603312cba8dbdf9c5661">NEO_RBG</a>&#160;&#160;&#160;((0 &lt;&lt; 6) | (0 &lt;&lt; 4) | (2 &lt;&lt; 2) | (1))</td></tr>
+<tr class="separator:a7d6aaa56c8e2603312cba8dbdf9c5661"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a95d0d6b0a1f52bc72d9dcea2b3a48e3f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f">NEO_GRB</a>&#160;&#160;&#160;((1 &lt;&lt; 6) | (1 &lt;&lt; 4) | (0 &lt;&lt; 2) | (2))</td></tr>
+<tr class="separator:a95d0d6b0a1f52bc72d9dcea2b3a48e3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abca04ce54125372080f2fbf2afdcf027"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#abca04ce54125372080f2fbf2afdcf027">NEO_GBR</a>&#160;&#160;&#160;((2 &lt;&lt; 6) | (2 &lt;&lt; 4) | (0 &lt;&lt; 2) | (1))</td></tr>
+<tr class="separator:abca04ce54125372080f2fbf2afdcf027"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afde6ec00a4ec8fad0267ae1a6689379e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#afde6ec00a4ec8fad0267ae1a6689379e">NEO_BRG</a>&#160;&#160;&#160;((1 &lt;&lt; 6) | (1 &lt;&lt; 4) | (2 &lt;&lt; 2) | (0))</td></tr>
+<tr class="separator:afde6ec00a4ec8fad0267ae1a6689379e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9129664a08911b56227dd641116f105f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a9129664a08911b56227dd641116f105f">NEO_BGR</a>&#160;&#160;&#160;((2 &lt;&lt; 6) | (2 &lt;&lt; 4) | (1 &lt;&lt; 2) | (0))</td></tr>
+<tr class="separator:a9129664a08911b56227dd641116f105f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4ee056fd3d7b09538908b35643a2508a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a4ee056fd3d7b09538908b35643a2508a">NEO_WRGB</a>&#160;&#160;&#160;((0 &lt;&lt; 6) | (1 &lt;&lt; 4) | (2 &lt;&lt; 2) | (3))</td></tr>
+<tr class="separator:a4ee056fd3d7b09538908b35643a2508a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a266a08af576ed4331db48b16bf572d29"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a266a08af576ed4331db48b16bf572d29">NEO_WRBG</a>&#160;&#160;&#160;((0 &lt;&lt; 6) | (1 &lt;&lt; 4) | (3 &lt;&lt; 2) | (2))</td></tr>
+<tr class="separator:a266a08af576ed4331db48b16bf572d29"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a59561d96a0f8a526ee3448e7b104d8b3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a59561d96a0f8a526ee3448e7b104d8b3">NEO_WGRB</a>&#160;&#160;&#160;((0 &lt;&lt; 6) | (2 &lt;&lt; 4) | (1 &lt;&lt; 2) | (3))</td></tr>
+<tr class="separator:a59561d96a0f8a526ee3448e7b104d8b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af722c80d41894df25c363b9ebf371b4e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#af722c80d41894df25c363b9ebf371b4e">NEO_WGBR</a>&#160;&#160;&#160;((0 &lt;&lt; 6) | (3 &lt;&lt; 4) | (1 &lt;&lt; 2) | (2))</td></tr>
+<tr class="separator:af722c80d41894df25c363b9ebf371b4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3eed3aeba511a2478a1ee8c17516732b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a3eed3aeba511a2478a1ee8c17516732b">NEO_WBRG</a>&#160;&#160;&#160;((0 &lt;&lt; 6) | (2 &lt;&lt; 4) | (3 &lt;&lt; 2) | (1))</td></tr>
+<tr class="separator:a3eed3aeba511a2478a1ee8c17516732b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a015eeccbf1bd19907c34d7b39b63bb84"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a015eeccbf1bd19907c34d7b39b63bb84">NEO_WBGR</a>&#160;&#160;&#160;((0 &lt;&lt; 6) | (3 &lt;&lt; 4) | (2 &lt;&lt; 2) | (1))</td></tr>
+<tr class="separator:a015eeccbf1bd19907c34d7b39b63bb84"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a122c6bb3e44525d2f975dcd89b094267"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a122c6bb3e44525d2f975dcd89b094267">NEO_RWGB</a>&#160;&#160;&#160;((1 &lt;&lt; 6) | (0 &lt;&lt; 4) | (2 &lt;&lt; 2) | (3))</td></tr>
+<tr class="separator:a122c6bb3e44525d2f975dcd89b094267"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9254ebc9367c071457d0321f64c9d5fa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a9254ebc9367c071457d0321f64c9d5fa">NEO_RWBG</a>&#160;&#160;&#160;((1 &lt;&lt; 6) | (0 &lt;&lt; 4) | (3 &lt;&lt; 2) | (2))</td></tr>
+<tr class="separator:a9254ebc9367c071457d0321f64c9d5fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abcce73b2eafdf1bb331a8f02fba95d10"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#abcce73b2eafdf1bb331a8f02fba95d10">NEO_RGWB</a>&#160;&#160;&#160;((2 &lt;&lt; 6) | (0 &lt;&lt; 4) | (1 &lt;&lt; 2) | (3))</td></tr>
+<tr class="separator:abcce73b2eafdf1bb331a8f02fba95d10"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a71f7c6e45f4c63fceca6b5b73c7a7c9d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a71f7c6e45f4c63fceca6b5b73c7a7c9d">NEO_RGBW</a>&#160;&#160;&#160;((3 &lt;&lt; 6) | (0 &lt;&lt; 4) | (1 &lt;&lt; 2) | (2))</td></tr>
+<tr class="separator:a71f7c6e45f4c63fceca6b5b73c7a7c9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7b6b551a990b498bed36aadba4a498d5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a7b6b551a990b498bed36aadba4a498d5">NEO_RBWG</a>&#160;&#160;&#160;((2 &lt;&lt; 6) | (0 &lt;&lt; 4) | (3 &lt;&lt; 2) | (1))</td></tr>
+<tr class="separator:a7b6b551a990b498bed36aadba4a498d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a198dc192119c166c544efc3e89fdd1cd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a198dc192119c166c544efc3e89fdd1cd">NEO_RBGW</a>&#160;&#160;&#160;((3 &lt;&lt; 6) | (0 &lt;&lt; 4) | (2 &lt;&lt; 2) | (1))</td></tr>
+<tr class="separator:a198dc192119c166c544efc3e89fdd1cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa29b3544b4257e851de2e214894d1236"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#aa29b3544b4257e851de2e214894d1236">NEO_GWRB</a>&#160;&#160;&#160;((1 &lt;&lt; 6) | (2 &lt;&lt; 4) | (0 &lt;&lt; 2) | (3))</td></tr>
+<tr class="separator:aa29b3544b4257e851de2e214894d1236"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaaaa406f36f1c596526579944ca7043d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#aaaaa406f36f1c596526579944ca7043d">NEO_GWBR</a>&#160;&#160;&#160;((1 &lt;&lt; 6) | (3 &lt;&lt; 4) | (0 &lt;&lt; 2) | (2))</td></tr>
+<tr class="separator:aaaaa406f36f1c596526579944ca7043d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a35a185ff488486a74745e9094892558c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a35a185ff488486a74745e9094892558c">NEO_GRWB</a>&#160;&#160;&#160;((2 &lt;&lt; 6) | (1 &lt;&lt; 4) | (0 &lt;&lt; 2) | (3))</td></tr>
+<tr class="separator:a35a185ff488486a74745e9094892558c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a722066abc60b560235b3b22082c2e68e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a722066abc60b560235b3b22082c2e68e">NEO_GRBW</a>&#160;&#160;&#160;((3 &lt;&lt; 6) | (1 &lt;&lt; 4) | (0 &lt;&lt; 2) | (2))</td></tr>
+<tr class="separator:a722066abc60b560235b3b22082c2e68e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a20be9abdf372b9c71d9fdacc3e6a9d1a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a20be9abdf372b9c71d9fdacc3e6a9d1a">NEO_GBWR</a>&#160;&#160;&#160;((2 &lt;&lt; 6) | (3 &lt;&lt; 4) | (0 &lt;&lt; 2) | (1))</td></tr>
+<tr class="separator:a20be9abdf372b9c71d9fdacc3e6a9d1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af60d024b8f8954960e59056c57520080"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#af60d024b8f8954960e59056c57520080">NEO_GBRW</a>&#160;&#160;&#160;((3 &lt;&lt; 6) | (2 &lt;&lt; 4) | (0 &lt;&lt; 2) | (1))</td></tr>
+<tr class="separator:af60d024b8f8954960e59056c57520080"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaf438f131d0fa8a0be6791a553145860"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#aaf438f131d0fa8a0be6791a553145860">NEO_BWRG</a>&#160;&#160;&#160;((1 &lt;&lt; 6) | (2 &lt;&lt; 4) | (3 &lt;&lt; 2) | (0))</td></tr>
+<tr class="separator:aaf438f131d0fa8a0be6791a553145860"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2595b8689ce5bd39634d017620ae57b8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a2595b8689ce5bd39634d017620ae57b8">NEO_BWGR</a>&#160;&#160;&#160;((1 &lt;&lt; 6) | (3 &lt;&lt; 4) | (2 &lt;&lt; 2) | (0))</td></tr>
+<tr class="separator:a2595b8689ce5bd39634d017620ae57b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4b4571bfc0a3ebfb4720ce4e5fbe9acf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a4b4571bfc0a3ebfb4720ce4e5fbe9acf">NEO_BRWG</a>&#160;&#160;&#160;((2 &lt;&lt; 6) | (1 &lt;&lt; 4) | (3 &lt;&lt; 2) | (0))</td></tr>
+<tr class="separator:a4b4571bfc0a3ebfb4720ce4e5fbe9acf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aad617c46d4a64cd4ec8d0ed1a0f30073"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#aad617c46d4a64cd4ec8d0ed1a0f30073">NEO_BRGW</a>&#160;&#160;&#160;((3 &lt;&lt; 6) | (1 &lt;&lt; 4) | (2 &lt;&lt; 2) | (0))</td></tr>
+<tr class="separator:aad617c46d4a64cd4ec8d0ed1a0f30073"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a143de1c7084e1f833beecbdae00b321c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a143de1c7084e1f833beecbdae00b321c">NEO_BGWR</a>&#160;&#160;&#160;((2 &lt;&lt; 6) | (3 &lt;&lt; 4) | (1 &lt;&lt; 2) | (0))</td></tr>
+<tr class="separator:a143de1c7084e1f833beecbdae00b321c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5b49f89982b6e60d20f7aaab79030d54"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a5b49f89982b6e60d20f7aaab79030d54">NEO_BGRW</a>&#160;&#160;&#160;((3 &lt;&lt; 6) | (2 &lt;&lt; 4) | (1 &lt;&lt; 2) | (0))</td></tr>
+<tr class="separator:a5b49f89982b6e60d20f7aaab79030d54"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a475fef7028a743310aa4311a97899d5d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d">NEO_KHZ800</a>&#160;&#160;&#160;0x0000</td></tr>
+<tr class="separator:a475fef7028a743310aa4311a97899d5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9c4067fd0cceb0432d1758fc07ede469"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a9c4067fd0cceb0432d1758fc07ede469">NEO_KHZ400</a>&#160;&#160;&#160;0x0100</td></tr>
+<tr class="separator:a9c4067fd0cceb0432d1758fc07ede469"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:a6ff31bc7214a3ae338a80ed6142d69ff"><td class="memItemLeft" align="right" valign="top">typedef uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a></td></tr>
+<tr class="separator:a6ff31bc7214a3ae338a80ed6142d69ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="a9129664a08911b56227dd641116f105f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_BGR&#160;&#160;&#160;((2 &lt;&lt; 6) | (2 &lt;&lt; 4) | (1 &lt;&lt; 2) | (0))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00059">59</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5b49f89982b6e60d20f7aaab79030d54"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_BGRW&#160;&#160;&#160;((3 &lt;&lt; 6) | (2 &lt;&lt; 4) | (1 &lt;&lt; 2) | (0))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00089">89</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a143de1c7084e1f833beecbdae00b321c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_BGWR&#160;&#160;&#160;((2 &lt;&lt; 6) | (3 &lt;&lt; 4) | (1 &lt;&lt; 2) | (0))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00088">88</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afde6ec00a4ec8fad0267ae1a6689379e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_BRG&#160;&#160;&#160;((1 &lt;&lt; 6) | (1 &lt;&lt; 4) | (2 &lt;&lt; 2) | (0))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00058">58</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aad617c46d4a64cd4ec8d0ed1a0f30073"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_BRGW&#160;&#160;&#160;((3 &lt;&lt; 6) | (1 &lt;&lt; 4) | (2 &lt;&lt; 2) | (0))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00087">87</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4b4571bfc0a3ebfb4720ce4e5fbe9acf"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_BRWG&#160;&#160;&#160;((2 &lt;&lt; 6) | (1 &lt;&lt; 4) | (3 &lt;&lt; 2) | (0))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00086">86</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2595b8689ce5bd39634d017620ae57b8"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_BWGR&#160;&#160;&#160;((1 &lt;&lt; 6) | (3 &lt;&lt; 4) | (2 &lt;&lt; 2) | (0))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00085">85</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaf438f131d0fa8a0be6791a553145860"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_BWRG&#160;&#160;&#160;((1 &lt;&lt; 6) | (2 &lt;&lt; 4) | (3 &lt;&lt; 2) | (0))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00084">84</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abca04ce54125372080f2fbf2afdcf027"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_GBR&#160;&#160;&#160;((2 &lt;&lt; 6) | (2 &lt;&lt; 4) | (0 &lt;&lt; 2) | (1))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00057">57</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af60d024b8f8954960e59056c57520080"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_GBRW&#160;&#160;&#160;((3 &lt;&lt; 6) | (2 &lt;&lt; 4) | (0 &lt;&lt; 2) | (1))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00082">82</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a20be9abdf372b9c71d9fdacc3e6a9d1a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_GBWR&#160;&#160;&#160;((2 &lt;&lt; 6) | (3 &lt;&lt; 4) | (0 &lt;&lt; 2) | (1))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00081">81</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a95d0d6b0a1f52bc72d9dcea2b3a48e3f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_GRB&#160;&#160;&#160;((1 &lt;&lt; 6) | (1 &lt;&lt; 4) | (0 &lt;&lt; 2) | (2))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00056">56</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a722066abc60b560235b3b22082c2e68e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_GRBW&#160;&#160;&#160;((3 &lt;&lt; 6) | (1 &lt;&lt; 4) | (0 &lt;&lt; 2) | (2))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00080">80</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a35a185ff488486a74745e9094892558c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_GRWB&#160;&#160;&#160;((2 &lt;&lt; 6) | (1 &lt;&lt; 4) | (0 &lt;&lt; 2) | (3))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00079">79</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaaaa406f36f1c596526579944ca7043d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_GWBR&#160;&#160;&#160;((1 &lt;&lt; 6) | (3 &lt;&lt; 4) | (0 &lt;&lt; 2) | (2))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00078">78</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa29b3544b4257e851de2e214894d1236"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_GWRB&#160;&#160;&#160;((1 &lt;&lt; 6) | (2 &lt;&lt; 4) | (0 &lt;&lt; 2) | (3))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00077">77</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9c4067fd0cceb0432d1758fc07ede469"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_KHZ400&#160;&#160;&#160;0x0100</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00102">102</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a475fef7028a743310aa4311a97899d5d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_KHZ800&#160;&#160;&#160;0x0000</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00100">100</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7d6aaa56c8e2603312cba8dbdf9c5661"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_RBG&#160;&#160;&#160;((0 &lt;&lt; 6) | (0 &lt;&lt; 4) | (2 &lt;&lt; 2) | (1))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00055">55</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a198dc192119c166c544efc3e89fdd1cd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_RBGW&#160;&#160;&#160;((3 &lt;&lt; 6) | (0 &lt;&lt; 4) | (2 &lt;&lt; 2) | (1))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00075">75</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7b6b551a990b498bed36aadba4a498d5"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_RBWG&#160;&#160;&#160;((2 &lt;&lt; 6) | (0 &lt;&lt; 4) | (3 &lt;&lt; 2) | (1))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00074">74</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa4f80df5ab240d93359f40956462f758"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_RGB&#160;&#160;&#160;((0 &lt;&lt; 6) | (0 &lt;&lt; 4) | (1 &lt;&lt; 2) | (2))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00054">54</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a71f7c6e45f4c63fceca6b5b73c7a7c9d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_RGBW&#160;&#160;&#160;((3 &lt;&lt; 6) | (0 &lt;&lt; 4) | (1 &lt;&lt; 2) | (2))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00073">73</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abcce73b2eafdf1bb331a8f02fba95d10"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_RGWB&#160;&#160;&#160;((2 &lt;&lt; 6) | (0 &lt;&lt; 4) | (1 &lt;&lt; 2) | (3))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00072">72</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9254ebc9367c071457d0321f64c9d5fa"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_RWBG&#160;&#160;&#160;((1 &lt;&lt; 6) | (0 &lt;&lt; 4) | (3 &lt;&lt; 2) | (2))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00071">71</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a122c6bb3e44525d2f975dcd89b094267"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_RWGB&#160;&#160;&#160;((1 &lt;&lt; 6) | (0 &lt;&lt; 4) | (2 &lt;&lt; 2) | (3))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00070">70</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a015eeccbf1bd19907c34d7b39b63bb84"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_WBGR&#160;&#160;&#160;((0 &lt;&lt; 6) | (3 &lt;&lt; 4) | (2 &lt;&lt; 2) | (1))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00068">68</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3eed3aeba511a2478a1ee8c17516732b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_WBRG&#160;&#160;&#160;((0 &lt;&lt; 6) | (2 &lt;&lt; 4) | (3 &lt;&lt; 2) | (1))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00067">67</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af722c80d41894df25c363b9ebf371b4e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_WGBR&#160;&#160;&#160;((0 &lt;&lt; 6) | (3 &lt;&lt; 4) | (1 &lt;&lt; 2) | (2))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00066">66</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a59561d96a0f8a526ee3448e7b104d8b3"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_WGRB&#160;&#160;&#160;((0 &lt;&lt; 6) | (2 &lt;&lt; 4) | (1 &lt;&lt; 2) | (3))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00065">65</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a266a08af576ed4331db48b16bf572d29"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_WRBG&#160;&#160;&#160;((0 &lt;&lt; 6) | (1 &lt;&lt; 4) | (3 &lt;&lt; 2) | (2))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00064">64</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4ee056fd3d7b09538908b35643a2508a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NEO_WRGB&#160;&#160;&#160;((0 &lt;&lt; 6) | (1 &lt;&lt; 4) | (2 &lt;&lt; 2) | (3))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00063">63</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a class="anchor" id="a6ff31bc7214a3ae338a80ed6142d69ff"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef uint8_t <a class="el" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00111">111</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_adafruit___neo_pixel_8h.html">Adafruit_NeoPixel.h</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h.js
new file mode 100644
index 0000000000000000000000000000000000000000..ee5a3ab29dae3d3ba52bc7219fd20892d71dfb23
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h.js
@@ -0,0 +1,37 @@
+var _adafruit___neo_pixel_8h =
+[
+    [ "Adafruit_NeoPixel", "class_adafruit___neo_pixel.html", "class_adafruit___neo_pixel" ],
+    [ "NEO_BGR", "_adafruit___neo_pixel_8h.html#a9129664a08911b56227dd641116f105f", null ],
+    [ "NEO_BGRW", "_adafruit___neo_pixel_8h.html#a5b49f89982b6e60d20f7aaab79030d54", null ],
+    [ "NEO_BGWR", "_adafruit___neo_pixel_8h.html#a143de1c7084e1f833beecbdae00b321c", null ],
+    [ "NEO_BRG", "_adafruit___neo_pixel_8h.html#afde6ec00a4ec8fad0267ae1a6689379e", null ],
+    [ "NEO_BRGW", "_adafruit___neo_pixel_8h.html#aad617c46d4a64cd4ec8d0ed1a0f30073", null ],
+    [ "NEO_BRWG", "_adafruit___neo_pixel_8h.html#a4b4571bfc0a3ebfb4720ce4e5fbe9acf", null ],
+    [ "NEO_BWGR", "_adafruit___neo_pixel_8h.html#a2595b8689ce5bd39634d017620ae57b8", null ],
+    [ "NEO_BWRG", "_adafruit___neo_pixel_8h.html#aaf438f131d0fa8a0be6791a553145860", null ],
+    [ "NEO_GBR", "_adafruit___neo_pixel_8h.html#abca04ce54125372080f2fbf2afdcf027", null ],
+    [ "NEO_GBRW", "_adafruit___neo_pixel_8h.html#af60d024b8f8954960e59056c57520080", null ],
+    [ "NEO_GBWR", "_adafruit___neo_pixel_8h.html#a20be9abdf372b9c71d9fdacc3e6a9d1a", null ],
+    [ "NEO_GRB", "_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f", null ],
+    [ "NEO_GRBW", "_adafruit___neo_pixel_8h.html#a722066abc60b560235b3b22082c2e68e", null ],
+    [ "NEO_GRWB", "_adafruit___neo_pixel_8h.html#a35a185ff488486a74745e9094892558c", null ],
+    [ "NEO_GWBR", "_adafruit___neo_pixel_8h.html#aaaaa406f36f1c596526579944ca7043d", null ],
+    [ "NEO_GWRB", "_adafruit___neo_pixel_8h.html#aa29b3544b4257e851de2e214894d1236", null ],
+    [ "NEO_KHZ400", "_adafruit___neo_pixel_8h.html#a9c4067fd0cceb0432d1758fc07ede469", null ],
+    [ "NEO_KHZ800", "_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d", null ],
+    [ "NEO_RBG", "_adafruit___neo_pixel_8h.html#a7d6aaa56c8e2603312cba8dbdf9c5661", null ],
+    [ "NEO_RBGW", "_adafruit___neo_pixel_8h.html#a198dc192119c166c544efc3e89fdd1cd", null ],
+    [ "NEO_RBWG", "_adafruit___neo_pixel_8h.html#a7b6b551a990b498bed36aadba4a498d5", null ],
+    [ "NEO_RGB", "_adafruit___neo_pixel_8h.html#aa4f80df5ab240d93359f40956462f758", null ],
+    [ "NEO_RGBW", "_adafruit___neo_pixel_8h.html#a71f7c6e45f4c63fceca6b5b73c7a7c9d", null ],
+    [ "NEO_RGWB", "_adafruit___neo_pixel_8h.html#abcce73b2eafdf1bb331a8f02fba95d10", null ],
+    [ "NEO_RWBG", "_adafruit___neo_pixel_8h.html#a9254ebc9367c071457d0321f64c9d5fa", null ],
+    [ "NEO_RWGB", "_adafruit___neo_pixel_8h.html#a122c6bb3e44525d2f975dcd89b094267", null ],
+    [ "NEO_WBGR", "_adafruit___neo_pixel_8h.html#a015eeccbf1bd19907c34d7b39b63bb84", null ],
+    [ "NEO_WBRG", "_adafruit___neo_pixel_8h.html#a3eed3aeba511a2478a1ee8c17516732b", null ],
+    [ "NEO_WGBR", "_adafruit___neo_pixel_8h.html#af722c80d41894df25c363b9ebf371b4e", null ],
+    [ "NEO_WGRB", "_adafruit___neo_pixel_8h.html#a59561d96a0f8a526ee3448e7b104d8b3", null ],
+    [ "NEO_WRBG", "_adafruit___neo_pixel_8h.html#a266a08af576ed4331db48b16bf572d29", null ],
+    [ "NEO_WRGB", "_adafruit___neo_pixel_8h.html#a4ee056fd3d7b09538908b35643a2508a", null ],
+    [ "neoPixelType", "_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff", null ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..d42bfc4d260013b381b07a86844219a6b49991c5
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h_source.html
@@ -0,0 +1,299 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/Adafruit_NeoPixel.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_adafruit___neo_pixel_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Adafruit_NeoPixel.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="_adafruit___neo_pixel_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*--------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">  This file is part of the Adafruit NeoPixel library.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">  NeoPixel is free software: you can redistribute it and/or modify</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">  it under the terms of the GNU Lesser General Public License as</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">  published by the Free Software Foundation, either version 3 of</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">  the License, or (at your option) any later version.</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">  NeoPixel is distributed in the hope that it will be useful,</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">  but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">  GNU Lesser General Public License for more details.</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">  You should have received a copy of the GNU Lesser General Public</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">  License along with NeoPixel.  If not, see</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment">  &lt;http://www.gnu.org/licenses/&gt;.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">  --------------------------------------------------------------------*/</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#ifndef ADAFRUIT_NEOPIXEL_H</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ADAFRUIT_NEOPIXEL_H</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#if (ARDUINO &gt;= 100)</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #include &lt;Arduino.h&gt;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #include &lt;WProgram.h&gt;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor"> #include &lt;pins_arduino.h&gt;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// The order of primary colors in the NeoPixel data stream can vary</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// among device types, manufacturers and even different revisions of</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">// the same item.  The third parameter to the Adafruit_NeoPixel</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">// constructor encodes the per-pixel byte offsets of the red, green</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">// and blue primaries (plus white, if present) in the data stream --</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">// the following #defines provide an easier-to-use named version for</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">// each permutation.  e.g. NEO_GRB indicates a NeoPixel-compatible</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">// device expecting three bytes per pixel, with the first byte</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">// containing the green value, second containing red and third</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">// containing blue.  The in-memory representation of a chain of</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// NeoPixels is the same as the data-stream order; no re-ordering of</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">// bytes is required when issuing data to the chain.</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">// Bits 5,4 of this value are the offset (0-3) from the first byte of</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">// a pixel to the location of the red color byte.  Bits 3,2 are the</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">// green offset and 1,0 are the blue offset.  If it is an RGBW-type</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">// device (supporting a white primary in addition to R,G,B), bits 7,6</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">// are the offset to the white byte...otherwise, bits 7,6 are set to</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// the same value as 5,4 (red) to indicate an RGB (not RGBW) device.</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// i.e. binary representation:</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">// 0bWWRRGGBB for RGBW devices</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">// 0bRRRRGGBB for RGB</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment">// RGB NeoPixel permutations; white and red offsets are always same</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">// Offset:         W          R          G          B</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#aa4f80df5ab240d93359f40956462f758">   54</a></span>&#160;<span class="preprocessor">#define NEO_RGB  ((0 &lt;&lt; 6) | (0 &lt;&lt; 4) | (1 &lt;&lt; 2) | (2))</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a7d6aaa56c8e2603312cba8dbdf9c5661">   55</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_RBG  ((0 &lt;&lt; 6) | (0 &lt;&lt; 4) | (2 &lt;&lt; 2) | (1))</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f">   56</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_GRB  ((1 &lt;&lt; 6) | (1 &lt;&lt; 4) | (0 &lt;&lt; 2) | (2))</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#abca04ce54125372080f2fbf2afdcf027">   57</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_GBR  ((2 &lt;&lt; 6) | (2 &lt;&lt; 4) | (0 &lt;&lt; 2) | (1))</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#afde6ec00a4ec8fad0267ae1a6689379e">   58</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_BRG  ((1 &lt;&lt; 6) | (1 &lt;&lt; 4) | (2 &lt;&lt; 2) | (0))</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a9129664a08911b56227dd641116f105f">   59</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_BGR  ((2 &lt;&lt; 6) | (2 &lt;&lt; 4) | (1 &lt;&lt; 2) | (0))</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">// RGBW NeoPixel permutations; all 4 offsets are distinct</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment">// Offset:         W          R          G          B</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a4ee056fd3d7b09538908b35643a2508a">   63</a></span>&#160;<span class="preprocessor">#define NEO_WRGB ((0 &lt;&lt; 6) | (1 &lt;&lt; 4) | (2 &lt;&lt; 2) | (3))</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a266a08af576ed4331db48b16bf572d29">   64</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_WRBG ((0 &lt;&lt; 6) | (1 &lt;&lt; 4) | (3 &lt;&lt; 2) | (2))</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a59561d96a0f8a526ee3448e7b104d8b3">   65</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_WGRB ((0 &lt;&lt; 6) | (2 &lt;&lt; 4) | (1 &lt;&lt; 2) | (3))</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#af722c80d41894df25c363b9ebf371b4e">   66</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_WGBR ((0 &lt;&lt; 6) | (3 &lt;&lt; 4) | (1 &lt;&lt; 2) | (2))</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a3eed3aeba511a2478a1ee8c17516732b">   67</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_WBRG ((0 &lt;&lt; 6) | (2 &lt;&lt; 4) | (3 &lt;&lt; 2) | (1))</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a015eeccbf1bd19907c34d7b39b63bb84">   68</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_WBGR ((0 &lt;&lt; 6) | (3 &lt;&lt; 4) | (2 &lt;&lt; 2) | (1))</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a122c6bb3e44525d2f975dcd89b094267">   70</a></span>&#160;<span class="preprocessor">#define NEO_RWGB ((1 &lt;&lt; 6) | (0 &lt;&lt; 4) | (2 &lt;&lt; 2) | (3))</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a9254ebc9367c071457d0321f64c9d5fa">   71</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_RWBG ((1 &lt;&lt; 6) | (0 &lt;&lt; 4) | (3 &lt;&lt; 2) | (2))</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#abcce73b2eafdf1bb331a8f02fba95d10">   72</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_RGWB ((2 &lt;&lt; 6) | (0 &lt;&lt; 4) | (1 &lt;&lt; 2) | (3))</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a71f7c6e45f4c63fceca6b5b73c7a7c9d">   73</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_RGBW ((3 &lt;&lt; 6) | (0 &lt;&lt; 4) | (1 &lt;&lt; 2) | (2))</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a7b6b551a990b498bed36aadba4a498d5">   74</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_RBWG ((2 &lt;&lt; 6) | (0 &lt;&lt; 4) | (3 &lt;&lt; 2) | (1))</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a198dc192119c166c544efc3e89fdd1cd">   75</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_RBGW ((3 &lt;&lt; 6) | (0 &lt;&lt; 4) | (2 &lt;&lt; 2) | (1))</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#aa29b3544b4257e851de2e214894d1236">   77</a></span>&#160;<span class="preprocessor">#define NEO_GWRB ((1 &lt;&lt; 6) | (2 &lt;&lt; 4) | (0 &lt;&lt; 2) | (3))</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#aaaaa406f36f1c596526579944ca7043d">   78</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_GWBR ((1 &lt;&lt; 6) | (3 &lt;&lt; 4) | (0 &lt;&lt; 2) | (2))</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a35a185ff488486a74745e9094892558c">   79</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_GRWB ((2 &lt;&lt; 6) | (1 &lt;&lt; 4) | (0 &lt;&lt; 2) | (3))</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a722066abc60b560235b3b22082c2e68e">   80</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_GRBW ((3 &lt;&lt; 6) | (1 &lt;&lt; 4) | (0 &lt;&lt; 2) | (2))</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a20be9abdf372b9c71d9fdacc3e6a9d1a">   81</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_GBWR ((2 &lt;&lt; 6) | (3 &lt;&lt; 4) | (0 &lt;&lt; 2) | (1))</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#af60d024b8f8954960e59056c57520080">   82</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_GBRW ((3 &lt;&lt; 6) | (2 &lt;&lt; 4) | (0 &lt;&lt; 2) | (1))</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#aaf438f131d0fa8a0be6791a553145860">   84</a></span>&#160;<span class="preprocessor">#define NEO_BWRG ((1 &lt;&lt; 6) | (2 &lt;&lt; 4) | (3 &lt;&lt; 2) | (0))</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a2595b8689ce5bd39634d017620ae57b8">   85</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_BWGR ((1 &lt;&lt; 6) | (3 &lt;&lt; 4) | (2 &lt;&lt; 2) | (0))</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a4b4571bfc0a3ebfb4720ce4e5fbe9acf">   86</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_BRWG ((2 &lt;&lt; 6) | (1 &lt;&lt; 4) | (3 &lt;&lt; 2) | (0))</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#aad617c46d4a64cd4ec8d0ed1a0f30073">   87</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_BRGW ((3 &lt;&lt; 6) | (1 &lt;&lt; 4) | (2 &lt;&lt; 2) | (0))</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a143de1c7084e1f833beecbdae00b321c">   88</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_BGWR ((2 &lt;&lt; 6) | (3 &lt;&lt; 4) | (1 &lt;&lt; 2) | (0))</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a5b49f89982b6e60d20f7aaab79030d54">   89</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_BGRW ((3 &lt;&lt; 6) | (2 &lt;&lt; 4) | (1 &lt;&lt; 2) | (0))</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="comment">// Add NEO_KHZ400 to the color order value to indicate a 400 KHz</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="comment">// device.  All but the earliest v1 NeoPixels expect an 800 KHz data</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="comment">// stream, this is the default if unspecified.  Because flash space</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="comment">// is very limited on ATtiny devices (e.g. Trinket, Gemma), v1</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="comment">// NeoPixels aren&#39;t handled by default on those chips, though it can</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="comment">// be enabled by removing the ifndef/endif below -- but code will be</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="comment">// bigger.  Conversely, can disable the NEO_KHZ400 line on other MCUs</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="comment">// to remove v1 support and save a little space.</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d">  100</a></span>&#160;<span class="preprocessor">#define NEO_KHZ800 0x0000 // 800 KHz datastream</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#ifndef __AVR_ATtiny85__</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a9c4067fd0cceb0432d1758fc07ede469">  102</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NEO_KHZ400 0x0100 // 400 KHz datastream</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="comment">// If 400 KHz support is enabled, the third parameter to the constructor</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="comment">// requires a 16-bit value (in order to select 400 vs 800 KHz speed).</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="comment">// If only 800 KHz is enabled (as is default on ATtiny), an 8-bit value</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="comment">// is sufficient to encode pixel color order, saving some space.</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">  111</a></span>&#160;<span class="preprocessor"></span><span class="keyword">typedef</span> uint8_t  <a class="code" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a>;</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="preprocessor"></span><span class="keyword">typedef</span> uint16_t <a class="code" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a>;</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html">  116</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a> {</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="comment">// Constructor: number of LEDs, pin number, LED type</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <a class="code" href="class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320">Adafruit_NeoPixel</a>(uint16_t n, uint8_t p=6, <a class="code" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a> t=<a class="code" href="_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f">NEO_GRB</a> + <a class="code" href="_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d">NEO_KHZ800</a>);</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <a class="code" href="class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320">Adafruit_NeoPixel</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <a class="code" href="class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db">~Adafruit_NeoPixel</a>();</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="keywordtype">void</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7">begin</a>(<span class="keywordtype">void</span>),</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">show</a>(<span class="keywordtype">void</span>),</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b">setPin</a>(uint8_t p),</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1">setPixelColor</a>(uint16_t n, uint8_t r, uint8_t g, uint8_t b),</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1">setPixelColor</a>(uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w),</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1">setPixelColor</a>(uint16_t n, uint32_t c),</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53">setBrightness</a>(uint8_t),</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>(),</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">updateLength</a>(uint16_t n),</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b">updateType</a>(<a class="code" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a> t);</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  uint8_t</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;   *<a class="code" href="class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067">getPixels</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>,</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f">getBrightness</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  uint16_t</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b">numPixels</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="keyword">static</span> uint32_t</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec">Color</a>(uint8_t r, uint8_t g, uint8_t b),</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec">Color</a>(uint8_t r, uint8_t g, uint8_t b, uint8_t w);</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  uint32_t</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa">getPixelColor</a>(uint16_t n) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e">  147</a></span>&#160;    <a class="code" href="class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e">canShow</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> (micros() - endTime) &gt;= 50L; }</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  <span class="keywordtype">boolean</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="preprocessor">#ifdef NEO_KHZ400  // If 400 KHz NeoPixel support enabled...</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="preprocessor"></span>    is800KHz,      <span class="comment">// ...true if 800 KHz pixels</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<span class="preprocessor"></span>    begun;         <span class="comment">// true if begin() previously called</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;  uint16_t</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    numLEDs,       <span class="comment">// Number of RGB LEDs in strip</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    numBytes;      <span class="comment">// Size of &#39;pixels&#39; buffer below (3 or 4 bytes/pixel)</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;  int8_t</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    pin;           <span class="comment">// Output pin number (-1 if not yet set)</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  uint8_t</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    brightness,</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;   *pixels,        <span class="comment">// Holds LED color values (3 or 4 bytes each)</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    rOffset,       <span class="comment">// Index of red byte within each 3- or 4-byte pixel</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    gOffset,       <span class="comment">// Index of green byte</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    bOffset,       <span class="comment">// Index of blue byte</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    wOffset;       <span class="comment">// Index of white byte (same as rOffset if no white)</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  uint32_t</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    endTime;       <span class="comment">// Latch timing reference</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="preprocessor">#ifdef __AVR__</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="preprocessor"></span>  <span class="keyword">volatile</span> uint8_t</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    *port;         <span class="comment">// Output PORT register</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  uint8_t</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    pinMask;       <span class="comment">// Output PORT bitmask</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;};</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="preprocessor">#endif // ADAFRUIT_NEOPIXEL_H</span></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_adafruit___neo_pixel_8h.html">Adafruit_NeoPixel.h</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..fa65439080ea4f4bd4be8ebbdeb83b3790660d8a
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp.html
@@ -0,0 +1,377 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_MBED/MAX30102/MAX30102.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_m_a_x30102_8cpp.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">MAX30102.cpp File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;mbed.h&quot;</code><br/>
+<code>#include &quot;<a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>&quot;</code><br/>
+</div>
+<p><a href="_m_a_x30102_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ae3e7ab47cd5395225bf7c67b8ee84976"><td class="memItemLeft" align="right" valign="top">I2C&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a> (I2C_SDA, I2C_SCL)</td></tr>
+<tr class="separator:ae3e7ab47cd5395225bf7c67b8ee84976"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">maxim_max30102_write_reg</a> (uint8_t uch_addr, uint8_t uch_data)</td></tr>
+<tr class="memdesc:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a value to a MAX30102 register.  <a href="#a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a><br/></td></tr>
+<tr class="separator:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f">maxim_max30102_read_reg</a> (uint8_t uch_addr, uint8_t *puch_data)</td></tr>
+<tr class="memdesc:a0cd2c5a58e57ebbe8c9361384798331f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a MAX30102 register.  <a href="#a0cd2c5a58e57ebbe8c9361384798331f"></a><br/></td></tr>
+<tr class="separator:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4113aeee76935425d8a557a79a4193df"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df">maxim_max30102_init</a> ()</td></tr>
+<tr class="memdesc:a4113aeee76935425d8a557a79a4193df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the MAX30102.  <a href="#a4113aeee76935425d8a557a79a4193df"></a><br/></td></tr>
+<tr class="separator:a4113aeee76935425d8a557a79a4193df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968">maxim_max30102_read_fifo</a> (uint32_t *pun_red_led, uint32_t *pun_ir_led)</td></tr>
+<tr class="memdesc:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a set of samples from the MAX30102 FIFO register.  <a href="#a483073cbc9dbb7a5a2495ce2ae4fb968"></a><br/></td></tr>
+<tr class="separator:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1df3bb178b66379a2975c56395c47d9b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b">maxim_max30102_reset</a> ()</td></tr>
+<tr class="memdesc:a1df3bb178b66379a2975c56395c47d9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the MAX30102.  <a href="#a1df3bb178b66379a2975c56395c47d9b"></a><br/></td></tr>
+<tr class="separator:a1df3bb178b66379a2975c56395c47d9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><hr/>
+<p>Project: MAXREFDES117# Filename: <a class="el" href="_m_a_x30102_8cpp.html">max30102.cpp</a> Description: This module is an embedded controller driver for the MAX30102 <hr/>
+<p>This code follows the following naming conventions:</p>
+<p>char ch_pmod_value char (array) s_pmod_s_string[16] float f_pmod_value int32_t n_pmod_value int32_t (array) an_pmod_value[16] int16_t w_pmod_value int16_t (array) aw_pmod_value[16] uint16_t uw_pmod_value uint16_t (array) auw_pmod_value[16] uint8_t uch_pmod_value uint8_t (array) auch_pmod_buffer[16] uint32_t un_pmod_value int32_t * pn_pmod_value <hr/>
+
+<p>Definition in file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p>
+</div><h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ae3e7ab47cd5395225bf7c67b8ee84976"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">I2C i2c </td>
+          <td>(</td>
+          <td class="paramtype">I2C_SDA&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">I2C_SCL&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a4113aeee76935425d8a557a79a4193df"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_init </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Initialize the MAX30102. </p>
+<dl class="section user"><dt>Details</dt><dd>This function initializes the MAX30102</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00115">115</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a483073cbc9dbb7a5a2495ce2ae4fb968"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_read_fifo </td>
+          <td>(</td>
+          <td class="paramtype">uint32_t *&#160;</td>
+          <td class="paramname"><em>pun_red_led</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint32_t *&#160;</td>
+          <td class="paramname"><em>pun_ir_led</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Read a set of samples from the MAX30102 FIFO register. </p>
+<dl class="section user"><dt>Details</dt><dd>This function reads a set of samples from the MAX30102 FIFO register</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pun_red_led</td><td>- pointer that stores the red LED reading data </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pun_ir_led</td><td>- pointer that stores the IR LED reading data</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00152">152</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0cd2c5a58e57ebbe8c9361384798331f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_read_reg </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>uch_addr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t *&#160;</td>
+          <td class="paramname"><em>puch_data</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Read a MAX30102 register. </p>
+<dl class="section user"><dt>Details</dt><dd>This function reads a MAX30102 register</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">puch_data</td><td>- pointer that stores the register data</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00090">90</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1df3bb178b66379a2975c56395c47d9b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_reset </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reset the MAX30102. </p>
+<dl class="section user"><dt>Details</dt><dd>This function resets the MAX30102</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00205">205</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_write_reg </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>uch_addr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>uch_data</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write a value to a MAX30102 register. </p>
+<dl class="section user"><dt>Details</dt><dd>This function writes a value to a MAX30102 register</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">uch_data</td><td>- register data</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00068">68</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_d4a9a7556cca61907ce453116086a23a.html">MAX30102</a></li><li class="navelem"><a class="el" href="_m_a_x30102_8cpp.html">MAX30102.cpp</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp.js
new file mode 100644
index 0000000000000000000000000000000000000000..16c93c0968ca725ac1e8ecc03d936be156659b0b
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp.js
@@ -0,0 +1,9 @@
+var _m_a_x30102_8cpp =
+[
+    [ "i2c", "_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976", null ],
+    [ "maxim_max30102_init", "_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df", null ],
+    [ "maxim_max30102_read_fifo", "_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968", null ],
+    [ "maxim_max30102_read_reg", "_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f", null ],
+    [ "maxim_max30102_reset", "_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b", null ],
+    [ "maxim_max30102_write_reg", "_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6", null ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..da5160050291873897a8886aa7f1e65f8b9142c0
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp_source.html
@@ -0,0 +1,266 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_MBED/MAX30102/MAX30102.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_m_a_x30102_8cpp_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">MAX30102.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="_m_a_x30102_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">/*******************************************************************************</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">* copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">* to deal in the Software without restriction, including without limitation</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">* The above copyright notice and this permission notice shall be included</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">* in all copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">* THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">* Products, Inc. Branding Policy.</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment">* The mere transfer of this software does not imply any licenses</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">* ownership rights.</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">*******************************************************************************</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">*/</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#include &quot;mbed.h&quot;</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_m_a_x30102_8h.html">MAX30102.h</a>&quot;</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#ifdef TARGET_MAX32600MBED</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor"></span>I2C <a class="code" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a>(I2C1_SDA, I2C1_SCL);</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor"></span>I2C <a class="code" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a>(I2C_SDA, I2C_SCL);</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">   68</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(uint8_t uch_addr, uint8_t uch_data)</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;{</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="keywordtype">char</span> ach_i2c_data[2];</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  ach_i2c_data[0]=uch_addr;</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  ach_i2c_data[1]=uch_data;</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  </div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;  <span class="keywordflow">if</span>(<a class="code" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a>.write(<a class="code" href="_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>, ach_i2c_data, 2, <span class="keyword">false</span>)==0)</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;}</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f">   90</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(uint8_t uch_addr, uint8_t *puch_data)</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;{</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <span class="keywordtype">char</span> ch_i2c_data;</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  ch_i2c_data=uch_addr;</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  <span class="keywordflow">if</span>(<a class="code" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a>.write(<a class="code" href="_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>, &amp;ch_i2c_data, 1, <span class="keyword">true</span>)!=0)</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <span class="keywordflow">if</span>(<a class="code" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a>.read(<a class="code" href="_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37">I2C_READ_ADDR</a>, &amp;ch_i2c_data, 1, <span class="keyword">false</span>)==0)</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  {</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    *puch_data=(uint8_t) ch_i2c_data;</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  }</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;}</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df">  115</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df" title="Initialize the MAX30102.">maxim_max30102_init</a>()</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;{</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d">REG_INTR_ENABLE_1</a>,0xc0)) <span class="comment">// INTR setting</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1">REG_INTR_ENABLE_2</a>,0x00))</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115">REG_FIFO_WR_PTR</a>,0x00))  <span class="comment">//FIFO_WR_PTR[4:0]</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707">REG_OVF_COUNTER</a>,0x00))  <span class="comment">//OVF_COUNTER[4:0]</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f">REG_FIFO_RD_PTR</a>,0x00))  <span class="comment">//FIFO_RD_PTR[4:0]</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca">REG_FIFO_CONFIG</a>,0x0f))  <span class="comment">//sample avg = 1, fifo rollover=false, fifo almost full = 17</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">REG_MODE_CONFIG</a>,0x03))   <span class="comment">//0x02 for Red only, 0x03 for SpO2 mode 0x07 multimode LED</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0">REG_SPO2_CONFIG</a>,0x27))  <span class="comment">// SPO2_ADC range = 4096nA, SPO2 sample rate (100 Hz), LED pulseWidth (400uS)</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  </div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b">REG_LED1_PA</a>,0x24))   <span class="comment">//Choose value for ~ 7mA for LED1</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21">REG_LED2_PA</a>,0x24))   <span class="comment">// Choose value for ~ 7mA for LED2</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1">REG_PILOT_PA</a>,0x7f))   <span class="comment">// Choose value for ~ 25mA for Pilot LED</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>;  </div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;}</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;</div>
+<div class="line"><a name="l00152"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968">  152</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>(uint32_t *pun_red_led, uint32_t *pun_ir_led)</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;{</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  uint32_t un_temp;</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> uch_temp;</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  *pun_red_led=0;</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  *pun_ir_led=0;</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  <span class="keywordtype">char</span> ach_i2c_data[6];</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  </div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  <span class="comment">//read and clear status register</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  <a class="code" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(<a class="code" href="_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191">REG_INTR_STATUS_1</a>, &amp;uch_temp);</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  <a class="code" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(<a class="code" href="_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a">REG_INTR_STATUS_2</a>, &amp;uch_temp);</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  </div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;  ach_i2c_data[0]=<a class="code" href="_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd">REG_FIFO_DATA</a>;</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  <span class="keywordflow">if</span>(<a class="code" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a>.write(<a class="code" href="_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>, ach_i2c_data, 1, <span class="keyword">true</span>)!=0)</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  <span class="keywordflow">if</span>(<a class="code" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a>.read(<a class="code" href="_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37">I2C_READ_ADDR</a>, ach_i2c_data, 6, <span class="keyword">false</span>)!=0)</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  {</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;  }</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  un_temp=(<span class="keywordtype">unsigned</span> char) ach_i2c_data[0];</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;  un_temp&lt;&lt;=16;</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;  *pun_red_led+=un_temp;</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  un_temp=(<span class="keywordtype">unsigned</span> char) ach_i2c_data[1];</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  un_temp&lt;&lt;=8;</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  *pun_red_led+=un_temp;</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  un_temp=(<span class="keywordtype">unsigned</span> char) ach_i2c_data[2];</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  *pun_red_led+=un_temp;</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  </div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;  un_temp=(<span class="keywordtype">unsigned</span> char) ach_i2c_data[3];</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  un_temp&lt;&lt;=16;</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  *pun_ir_led+=un_temp;</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  un_temp=(<span class="keywordtype">unsigned</span> char) ach_i2c_data[4];</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  un_temp&lt;&lt;=8;</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  *pun_ir_led+=un_temp;</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;  un_temp=(<span class="keywordtype">unsigned</span> char) ach_i2c_data[5];</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  *pun_ir_led+=un_temp;</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  *pun_red_led&amp;=0x03FFFF;  <span class="comment">//Mask MSB [23:18]</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  *pun_ir_led&amp;=0x03FFFF;  <span class="comment">//Mask MSB [23:18]</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  </div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;  </div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;}</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;</div>
+<div class="line"><a name="l00205"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd">  205</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b" title="Reset the MAX30102.">maxim_max30102_reset</a>()</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;{</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">REG_MODE_CONFIG</a>,0x40))</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">true</span>;    </div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;}</div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_d4a9a7556cca61907ce453116086a23a.html">MAX30102</a></li><li class="navelem"><a class="el" href="_m_a_x30102_8cpp.html">MAX30102.cpp</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h.html
new file mode 100644
index 0000000000000000000000000000000000000000..e568cf7d134bac81f60757e32424e8695ef8d396
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h.html
@@ -0,0 +1,737 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_MBED/MAX30102/MAX30102.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_m_a_x30102_8h.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Macros</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">MAX30102.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;mbed.h&quot;</code><br/>
+</div>
+<p><a href="_m_a_x30102_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a7978167075eb8954c1090fc7ce9647c6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>&#160;&#160;&#160;0xAE</td></tr>
+<tr class="separator:a7978167075eb8954c1090fc7ce9647c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a11a0148c64950f3315f38d957cd43d37"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37">I2C_READ_ADDR</a>&#160;&#160;&#160;0xAF</td></tr>
+<tr class="separator:a11a0148c64950f3315f38d957cd43d37"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7d161a2394a67a2176d549edb94f4191"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191">REG_INTR_STATUS_1</a>&#160;&#160;&#160;0x00</td></tr>
+<tr class="separator:a7d161a2394a67a2176d549edb94f4191"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a61d809a1e313a2787b23e96de9554c4a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a">REG_INTR_STATUS_2</a>&#160;&#160;&#160;0x01</td></tr>
+<tr class="separator:a61d809a1e313a2787b23e96de9554c4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae07f3c26106a0a37b6eddd8d2653137d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d">REG_INTR_ENABLE_1</a>&#160;&#160;&#160;0x02</td></tr>
+<tr class="separator:ae07f3c26106a0a37b6eddd8d2653137d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab8d58d945ad576d492f669c7b9affbf1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1">REG_INTR_ENABLE_2</a>&#160;&#160;&#160;0x03</td></tr>
+<tr class="separator:ab8d58d945ad576d492f669c7b9affbf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aba8c69cb46224fb35783f5b60e75b115"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115">REG_FIFO_WR_PTR</a>&#160;&#160;&#160;0x04</td></tr>
+<tr class="separator:aba8c69cb46224fb35783f5b60e75b115"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af9c8026aa9a22fad4c22ee6b10613707"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707">REG_OVF_COUNTER</a>&#160;&#160;&#160;0x05</td></tr>
+<tr class="separator:af9c8026aa9a22fad4c22ee6b10613707"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3b9d75d4ac3cb579e8b46dea27f4303f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f">REG_FIFO_RD_PTR</a>&#160;&#160;&#160;0x06</td></tr>
+<tr class="separator:a3b9d75d4ac3cb579e8b46dea27f4303f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a05bf6ede83fa400eac4dd65788d996fd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd">REG_FIFO_DATA</a>&#160;&#160;&#160;0x07</td></tr>
+<tr class="separator:a05bf6ede83fa400eac4dd65788d996fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad1b1bbfe23c9461e0ae75b71b9f805ca"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca">REG_FIFO_CONFIG</a>&#160;&#160;&#160;0x08</td></tr>
+<tr class="separator:ad1b1bbfe23c9461e0ae75b71b9f805ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:accdea52b28f1bd3f4cd63d05ab12887f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">REG_MODE_CONFIG</a>&#160;&#160;&#160;0x09</td></tr>
+<tr class="separator:accdea52b28f1bd3f4cd63d05ab12887f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a38546015e987a72b8c9eb13228237dd0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0">REG_SPO2_CONFIG</a>&#160;&#160;&#160;0x0A</td></tr>
+<tr class="separator:a38546015e987a72b8c9eb13228237dd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5f3a6641b201203d41ed3d23b638a96b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b">REG_LED1_PA</a>&#160;&#160;&#160;0x0C</td></tr>
+<tr class="separator:a5f3a6641b201203d41ed3d23b638a96b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7df43b0f854c9caf2fe04ccdebb18d21"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21">REG_LED2_PA</a>&#160;&#160;&#160;0x0D</td></tr>
+<tr class="separator:a7df43b0f854c9caf2fe04ccdebb18d21"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a371750304ec49457d3d38f60428f8ff1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1">REG_PILOT_PA</a>&#160;&#160;&#160;0x10</td></tr>
+<tr class="separator:a371750304ec49457d3d38f60428f8ff1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9d333cff4d002cb1d09a319e6917bc5c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c">REG_MULTI_LED_CTRL1</a>&#160;&#160;&#160;0x11</td></tr>
+<tr class="separator:a9d333cff4d002cb1d09a319e6917bc5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a05ed274928d49bb6ddd6def6e45fac10"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10">REG_MULTI_LED_CTRL2</a>&#160;&#160;&#160;0x12</td></tr>
+<tr class="separator:a05ed274928d49bb6ddd6def6e45fac10"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a579a9e43d89bdda85d9ccb206339d681"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681">REG_TEMP_INTR</a>&#160;&#160;&#160;0x1F</td></tr>
+<tr class="separator:a579a9e43d89bdda85d9ccb206339d681"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5321d8a33f1225ab437032e0e8ecbb3d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d">REG_TEMP_FRAC</a>&#160;&#160;&#160;0x20</td></tr>
+<tr class="separator:a5321d8a33f1225ab437032e0e8ecbb3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad16bc92e2f92e516ca396214861a6379"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379">REG_TEMP_CONFIG</a>&#160;&#160;&#160;0x21</td></tr>
+<tr class="separator:ad16bc92e2f92e516ca396214861a6379"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3d80b09e301a0155949b7c337ce5f5ab"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab">REG_PROX_INT_THRESH</a>&#160;&#160;&#160;0x30</td></tr>
+<tr class="separator:a3d80b09e301a0155949b7c337ce5f5ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a16f4b970762f7e8aa1f5c7a780a48c23"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23">REG_REV_ID</a>&#160;&#160;&#160;0xFE</td></tr>
+<tr class="separator:a16f4b970762f7e8aa1f5c7a780a48c23"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a46083d1b6d3e1d5f89b0f1598dc6d163"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163">REG_PART_ID</a>&#160;&#160;&#160;0xFF</td></tr>
+<tr class="separator:a46083d1b6d3e1d5f89b0f1598dc6d163"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a4113aeee76935425d8a557a79a4193df"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df">maxim_max30102_init</a> ()</td></tr>
+<tr class="memdesc:a4113aeee76935425d8a557a79a4193df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the MAX30102.  <a href="#a4113aeee76935425d8a557a79a4193df"></a><br/></td></tr>
+<tr class="separator:a4113aeee76935425d8a557a79a4193df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968">maxim_max30102_read_fifo</a> (uint32_t *pun_red_led, uint32_t *pun_ir_led)</td></tr>
+<tr class="memdesc:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a set of samples from the MAX30102 FIFO register.  <a href="#a483073cbc9dbb7a5a2495ce2ae4fb968"></a><br/></td></tr>
+<tr class="separator:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">maxim_max30102_write_reg</a> (uint8_t uch_addr, uint8_t uch_data)</td></tr>
+<tr class="memdesc:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a value to a MAX30102 register.  <a href="#a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a><br/></td></tr>
+<tr class="separator:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f">maxim_max30102_read_reg</a> (uint8_t uch_addr, uint8_t *puch_data)</td></tr>
+<tr class="memdesc:a0cd2c5a58e57ebbe8c9361384798331f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a MAX30102 register.  <a href="#a0cd2c5a58e57ebbe8c9361384798331f"></a><br/></td></tr>
+<tr class="separator:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a94ab5935f6ce28aa5ce31aa842eb83dd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd">maxim_max30102_reset</a> (void)</td></tr>
+<tr class="memdesc:a94ab5935f6ce28aa5ce31aa842eb83dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the MAX30102.  <a href="#a94ab5935f6ce28aa5ce31aa842eb83dd"></a><br/></td></tr>
+<tr class="separator:a94ab5935f6ce28aa5ce31aa842eb83dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><hr/>
+<p>Project: MAXREFDES117# Filename: <a class="el" href="_m_a_x30102_8h.html">max30102.h</a> Description: This module is an embedded controller driver header file for MAX30102 <hr/>
+<p>This code follows the following naming conventions:</p>
+<p>char ch_pmod_value char (array) s_pmod_s_string[16] float f_pmod_value int32_t n_pmod_value int32_t (array) an_pmod_value[16] int16_t w_pmod_value int16_t (array) aw_pmod_value[16] uint16_t uw_pmod_value uint16_t (array) auw_pmod_value[16] uint8_t uch_pmod_value uint8_t (array) auch_pmod_buffer[16] uint32_t un_pmod_value int32_t * pn_pmod_value <hr/>
+
+<p>Definition in file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+</div><h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="a11a0148c64950f3315f38d957cd43d37"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define I2C_READ_ADDR&#160;&#160;&#160;0xAF</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00065">65</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7978167075eb8954c1090fc7ce9647c6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define I2C_WRITE_ADDR&#160;&#160;&#160;0xAE</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00064">64</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad1b1bbfe23c9461e0ae75b71b9f805ca"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_FIFO_CONFIG&#160;&#160;&#160;0x08</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00076">76</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a05bf6ede83fa400eac4dd65788d996fd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_FIFO_DATA&#160;&#160;&#160;0x07</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00075">75</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3b9d75d4ac3cb579e8b46dea27f4303f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_FIFO_RD_PTR&#160;&#160;&#160;0x06</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00074">74</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aba8c69cb46224fb35783f5b60e75b115"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_FIFO_WR_PTR&#160;&#160;&#160;0x04</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00072">72</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae07f3c26106a0a37b6eddd8d2653137d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_INTR_ENABLE_1&#160;&#160;&#160;0x02</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00070">70</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab8d58d945ad576d492f669c7b9affbf1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_INTR_ENABLE_2&#160;&#160;&#160;0x03</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00071">71</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7d161a2394a67a2176d549edb94f4191"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_INTR_STATUS_1&#160;&#160;&#160;0x00</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00068">68</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a61d809a1e313a2787b23e96de9554c4a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_INTR_STATUS_2&#160;&#160;&#160;0x01</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00069">69</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5f3a6641b201203d41ed3d23b638a96b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_LED1_PA&#160;&#160;&#160;0x0C</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00079">79</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7df43b0f854c9caf2fe04ccdebb18d21"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_LED2_PA&#160;&#160;&#160;0x0D</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00080">80</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="accdea52b28f1bd3f4cd63d05ab12887f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_MODE_CONFIG&#160;&#160;&#160;0x09</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00077">77</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9d333cff4d002cb1d09a319e6917bc5c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_MULTI_LED_CTRL1&#160;&#160;&#160;0x11</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00082">82</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a05ed274928d49bb6ddd6def6e45fac10"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_MULTI_LED_CTRL2&#160;&#160;&#160;0x12</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00083">83</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af9c8026aa9a22fad4c22ee6b10613707"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_OVF_COUNTER&#160;&#160;&#160;0x05</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00073">73</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a46083d1b6d3e1d5f89b0f1598dc6d163"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_PART_ID&#160;&#160;&#160;0xFF</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00089">89</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a371750304ec49457d3d38f60428f8ff1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_PILOT_PA&#160;&#160;&#160;0x10</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00081">81</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3d80b09e301a0155949b7c337ce5f5ab"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_PROX_INT_THRESH&#160;&#160;&#160;0x30</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00087">87</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a16f4b970762f7e8aa1f5c7a780a48c23"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_REV_ID&#160;&#160;&#160;0xFE</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00088">88</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a38546015e987a72b8c9eb13228237dd0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_SPO2_CONFIG&#160;&#160;&#160;0x0A</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00078">78</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad16bc92e2f92e516ca396214861a6379"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_TEMP_CONFIG&#160;&#160;&#160;0x21</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00086">86</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5321d8a33f1225ab437032e0e8ecbb3d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_TEMP_FRAC&#160;&#160;&#160;0x20</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00085">85</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a579a9e43d89bdda85d9ccb206339d681"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_TEMP_INTR&#160;&#160;&#160;0x1F</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00084">84</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a4113aeee76935425d8a557a79a4193df"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_init </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Initialize the MAX30102. </p>
+<dl class="section user"><dt>Details</dt><dd>This function initializes the MAX30102</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00115">115</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a483073cbc9dbb7a5a2495ce2ae4fb968"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_read_fifo </td>
+          <td>(</td>
+          <td class="paramtype">uint32_t *&#160;</td>
+          <td class="paramname"><em>pun_red_led</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint32_t *&#160;</td>
+          <td class="paramname"><em>pun_ir_led</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Read a set of samples from the MAX30102 FIFO register. </p>
+<dl class="section user"><dt>Details</dt><dd>This function reads a set of samples from the MAX30102 FIFO register</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pun_red_led</td><td>- pointer that stores the red LED reading data </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pun_ir_led</td><td>- pointer that stores the IR LED reading data</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00152">152</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0cd2c5a58e57ebbe8c9361384798331f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_read_reg </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>uch_addr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t *&#160;</td>
+          <td class="paramname"><em>puch_data</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Read a MAX30102 register. </p>
+<dl class="section user"><dt>Details</dt><dd>This function reads a MAX30102 register</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">puch_data</td><td>- pointer that stores the register data</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00090">90</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a94ab5935f6ce28aa5ce31aa842eb83dd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_reset </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reset the MAX30102. </p>
+<dl class="section user"><dt>Details</dt><dd>This function resets the MAX30102</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00205">205</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_write_reg </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>uch_addr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>uch_data</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write a value to a MAX30102 register. </p>
+<dl class="section user"><dt>Details</dt><dd>This function writes a value to a MAX30102 register</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">uch_data</td><td>- register data</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00068">68</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_d4a9a7556cca61907ce453116086a23a.html">MAX30102</a></li><li class="navelem"><a class="el" href="_m_a_x30102_8h.html">MAX30102.h</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h.js
new file mode 100644
index 0000000000000000000000000000000000000000..064f9661bb6050f35c6a82a426481e5f83b908c3
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h.js
@@ -0,0 +1,32 @@
+var _m_a_x30102_8h =
+[
+    [ "I2C_READ_ADDR", "_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37", null ],
+    [ "I2C_WRITE_ADDR", "_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6", null ],
+    [ "REG_FIFO_CONFIG", "_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca", null ],
+    [ "REG_FIFO_DATA", "_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd", null ],
+    [ "REG_FIFO_RD_PTR", "_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f", null ],
+    [ "REG_FIFO_WR_PTR", "_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115", null ],
+    [ "REG_INTR_ENABLE_1", "_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d", null ],
+    [ "REG_INTR_ENABLE_2", "_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1", null ],
+    [ "REG_INTR_STATUS_1", "_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191", null ],
+    [ "REG_INTR_STATUS_2", "_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a", null ],
+    [ "REG_LED1_PA", "_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b", null ],
+    [ "REG_LED2_PA", "_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21", null ],
+    [ "REG_MODE_CONFIG", "_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f", null ],
+    [ "REG_MULTI_LED_CTRL1", "_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c", null ],
+    [ "REG_MULTI_LED_CTRL2", "_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10", null ],
+    [ "REG_OVF_COUNTER", "_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707", null ],
+    [ "REG_PART_ID", "_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163", null ],
+    [ "REG_PILOT_PA", "_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1", null ],
+    [ "REG_PROX_INT_THRESH", "_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab", null ],
+    [ "REG_REV_ID", "_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23", null ],
+    [ "REG_SPO2_CONFIG", "_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0", null ],
+    [ "REG_TEMP_CONFIG", "_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379", null ],
+    [ "REG_TEMP_FRAC", "_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d", null ],
+    [ "REG_TEMP_INTR", "_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681", null ],
+    [ "maxim_max30102_init", "_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df", null ],
+    [ "maxim_max30102_read_fifo", "_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968", null ],
+    [ "maxim_max30102_read_reg", "_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f", null ],
+    [ "maxim_max30102_reset", "_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd", null ],
+    [ "maxim_max30102_write_reg", "_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6", null ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..eb9ec8d29a36d18263cc5744e5152127cb155473
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h_source.html
@@ -0,0 +1,191 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_MBED/MAX30102/MAX30102.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_m_a_x30102_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">MAX30102.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="_m_a_x30102_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">/*******************************************************************************</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">* copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">* to deal in the Software without restriction, including without limitation</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">* The above copyright notice and this permission notice shall be included</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">* in all copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">* THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">* Products, Inc. Branding Policy.</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment">* The mere transfer of this software does not imply any licenses</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">* ownership rights.</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">*******************************************************************************</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">*/</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#ifndef MAX30102_H_</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define MAX30102_H_</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#include &quot;mbed.h&quot;</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">   64</a></span>&#160;<span class="preprocessor">#define I2C_WRITE_ADDR 0xAE</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37">   65</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_READ_ADDR 0xAF</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="comment">//register addresses</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191">   68</a></span>&#160;<span class="preprocessor">#define REG_INTR_STATUS_1 0x00</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a">   69</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_INTR_STATUS_2 0x01</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d">   70</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_INTR_ENABLE_1 0x02</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1">   71</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_INTR_ENABLE_2 0x03</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115">   72</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_WR_PTR 0x04</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707">   73</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_OVF_COUNTER 0x05</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f">   74</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_RD_PTR 0x06</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd">   75</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_DATA 0x07</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca">   76</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_CONFIG 0x08</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">   77</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_MODE_CONFIG 0x09</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0">   78</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_SPO2_CONFIG 0x0A</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b">   79</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_LED1_PA 0x0C</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21">   80</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_LED2_PA 0x0D</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1">   81</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_PILOT_PA 0x10</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c">   82</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_MULTI_LED_CTRL1 0x11</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10">   83</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_MULTI_LED_CTRL2 0x12</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681">   84</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_TEMP_INTR 0x1F</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d">   85</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_TEMP_FRAC 0x20</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379">   86</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_TEMP_CONFIG 0x21</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab">   87</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_PROX_INT_THRESH 0x30</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23">   88</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_REV_ID 0xFE</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163">   89</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_PART_ID 0xFF</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df" title="Initialize the MAX30102.">maxim_max30102_init</a>();</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>(uint32_t *pun_red_led, uint32_t *pun_ir_led);</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(uint8_t uch_addr, uint8_t uch_data);</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(uint8_t uch_addr, uint8_t *puch_data);</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b" title="Reset the MAX30102.">maxim_max30102_reset</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* MAX30102_H_ */</span><span class="preprocessor"></span></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_d4a9a7556cca61907ce453116086a23a.html">MAX30102</a></li><li class="navelem"><a class="el" href="_m_a_x30102_8h.html">MAX30102.h</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino.html
new file mode 100644
index 0000000000000000000000000000000000000000..27f63e70a08440ec331dc8282f176655a39e4578
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino.html
@@ -0,0 +1,324 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/RD117_ARDUINO.ino File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_r_d117___a_r_d_u_i_n_o_8ino.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Macros</a> &#124;
+<a href="#func-members">Functions</a> &#124;
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">RD117_ARDUINO.ino File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;Arduino.h&gt;</code><br/>
+<code>#include &quot;<a class="el" href="algorithm_8h_source.html">algorithm.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="max30102_8h_source.html">max30102.h</a>&quot;</code><br/>
+</div>
+<p><a href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a2134a5a06f0865c945543a1f07eba387"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>&#160;&#160;&#160;255</td></tr>
+<tr class="separator:a2134a5a06f0865c945543a1f07eba387"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a4fc01d736fe50cf5b977f755b675f11d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a4fc01d736fe50cf5b977f755b675f11d">setup</a> ()</td></tr>
+<tr class="separator:a4fc01d736fe50cf5b977f755b675f11d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afe461d27b9c48d5921c00d521181f12f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#afe461d27b9c48d5921c00d521181f12f">loop</a> ()</td></tr>
+<tr class="separator:afe461d27b9c48d5921c00d521181f12f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a602d2fccfb9f55d84f81b0c4d6f01589"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a> [100]</td></tr>
+<tr class="separator:a602d2fccfb9f55d84f81b0c4d6f01589"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aac1c23af668ef1d6750bfd4a5f6422fe"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a> [100]</td></tr>
+<tr class="separator:aac1c23af668ef1d6750bfd4a5f6422fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac16b6dd0e762f0ccc30e7102f97260d6"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a></td></tr>
+<tr class="separator:ac16b6dd0e762f0ccc30e7102f97260d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a54d8056bd9812e0b8f73f911dcc21dfd"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a54d8056bd9812e0b8f73f911dcc21dfd">n_spo2</a></td></tr>
+<tr class="separator:a54d8056bd9812e0b8f73f911dcc21dfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2518324dce002f592cf6d7f0b1ad9024"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a></td></tr>
+<tr class="separator:a2518324dce002f592cf6d7f0b1ad9024"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3171c70bfa71c3a4f960bf3e8203d13f"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a></td></tr>
+<tr class="separator:a3171c70bfa71c3a4f960bf3e8203d13f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a43fb8ea97a26647405ca359095323280"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a></td></tr>
+<tr class="separator:a43fb8ea97a26647405ca359095323280"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac5e493da8cbdd1414d56e8f08282fcc2"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a></td></tr>
+<tr class="separator:ac5e493da8cbdd1414d56e8f08282fcc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="a2134a5a06f0865c945543a1f07eba387"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define MAX_BRIGHTNESS&#160;&#160;&#160;255</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00088">88</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="afe461d27b9c48d5921c00d521181f12f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void loop </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00144">144</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4fc01d736fe50cf5b977f755b675f11d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void setup </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00108">108</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Variable Documentation</h2>
+<a class="anchor" id="a602d2fccfb9f55d84f81b0c4d6f01589"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">uint32_t aun_ir_buffer[100]</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00096">96</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aac1c23af668ef1d6750bfd4a5f6422fe"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">uint32_t aun_red_buffer[100]</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00097">97</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a43fb8ea97a26647405ca359095323280"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int8_t ch_hr_valid</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00103">103</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2518324dce002f592cf6d7f0b1ad9024"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int8_t ch_spo2_valid</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00101">101</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3171c70bfa71c3a4f960bf3e8203d13f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int32_t n_heart_rate</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00102">102</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac16b6dd0e762f0ccc30e7102f97260d6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int32_t n_ir_buffer_length</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00099">99</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a54d8056bd9812e0b8f73f911dcc21dfd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int32_t n_spo2</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00100">100</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac5e493da8cbdd1414d56e8f08282fcc2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">uint8_t uch_dummy</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00104">104</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html">RD117_ARDUINO.ino</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino.js
new file mode 100644
index 0000000000000000000000000000000000000000..0c3b4a8a19c9ee7ef1b58aa9890f7853b9cb5369
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino.js
@@ -0,0 +1,14 @@
+var _r_d117___a_r_d_u_i_n_o_8ino =
+[
+    [ "MAX_BRIGHTNESS", "_r_d117___a_r_d_u_i_n_o_8ino.html#a2134a5a06f0865c945543a1f07eba387", null ],
+    [ "loop", "_r_d117___a_r_d_u_i_n_o_8ino.html#afe461d27b9c48d5921c00d521181f12f", null ],
+    [ "setup", "_r_d117___a_r_d_u_i_n_o_8ino.html#a4fc01d736fe50cf5b977f755b675f11d", null ],
+    [ "aun_ir_buffer", "_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589", null ],
+    [ "aun_red_buffer", "_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe", null ],
+    [ "ch_hr_valid", "_r_d117___a_r_d_u_i_n_o_8ino.html#a43fb8ea97a26647405ca359095323280", null ],
+    [ "ch_spo2_valid", "_r_d117___a_r_d_u_i_n_o_8ino.html#a2518324dce002f592cf6d7f0b1ad9024", null ],
+    [ "n_heart_rate", "_r_d117___a_r_d_u_i_n_o_8ino.html#a3171c70bfa71c3a4f960bf3e8203d13f", null ],
+    [ "n_ir_buffer_length", "_r_d117___a_r_d_u_i_n_o_8ino.html#ac16b6dd0e762f0ccc30e7102f97260d6", null ],
+    [ "n_spo2", "_r_d117___a_r_d_u_i_n_o_8ino.html#a54d8056bd9812e0b8f73f911dcc21dfd", null ],
+    [ "uch_dummy", "_r_d117___a_r_d_u_i_n_o_8ino.html#ac5e493da8cbdd1414d56e8f08282fcc2", null ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..bb557886f9f23c300a2aaa6b4470a744ead7e329
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino_source.html
@@ -0,0 +1,330 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/RD117_ARDUINO.ino Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_r_d117___a_r_d_u_i_n_o_8ino_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">RD117_ARDUINO.ino</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="_r_d117___a_r_d_u_i_n_o_8ino.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">/*******************************************************************************</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">* copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">* to deal in the Software without restriction, including without limitation</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">* The above copyright notice and this permission notice shall be included</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">* in all copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">* THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">* Products, Inc. Branding Policy.</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">* The mere transfer of this software does not imply any licenses</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment">* ownership rights.</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">*******************************************************************************</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">*/</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="algorithm_8h.html">algorithm.h</a>&quot;</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="max30102_8h.html">max30102.h</a>&quot;</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="comment">//if Adafruit Flora development board is chosen, include NeoPixel library and define an NeoPixel object</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="preprocessor">#if defined(ARDUINO_AVR_FLORA8)</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &quot;<a class="code" href="_adafruit___neo_pixel_8h.html">adafruit_neopixel.h</a>&quot;</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="preprocessor">#define BRIGHTNESS_DIVISOR 8  //to lower the max brightness of the neopixel LED</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="preprocessor"></span><a class="code" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a> LED = <a class="code" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a>(1, 8, <a class="code" href="_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f">NEO_GRB</a> + <a class="code" href="_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d">NEO_KHZ800</a>);</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2134a5a06f0865c945543a1f07eba387">   88</a></span>&#160;<span class="preprocessor">#define MAX_BRIGHTNESS 255</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="preprocessor">#if defined(ARDUINO_AVR_UNO)</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="preprocessor"></span><span class="comment">//Arduino Uno doesn&#39;t have enough SRAM to store 100 samples of IR led data and red led data in 32-bit format</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="comment">//To solve this problem, 16-bit MSB of the sampled data will be truncated.  Samples become 16-bit data.</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;uint16_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>[100]; <span class="comment">//infrared LED sensor data</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;uint16_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[100];  <span class="comment">//red LED sensor data</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">   96</a></span>&#160;<span class="preprocessor"></span>uint32_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>[100]; <span class="comment">//infrared LED sensor data</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">   97</a></span>&#160;uint32_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[100];  <span class="comment">//red LED sensor data</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac16b6dd0e762f0ccc30e7102f97260d6">   99</a></span>&#160;<span class="preprocessor"></span>int32_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>; <span class="comment">//data length</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a54d8056bd9812e0b8f73f911dcc21dfd">  100</a></span>&#160;int32_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a54d8056bd9812e0b8f73f911dcc21dfd">n_spo2</a>;  <span class="comment">//SPO2 value</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2518324dce002f592cf6d7f0b1ad9024">  101</a></span>&#160;int8_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>;  <span class="comment">//indicator to show if the SPO2 calculation is valid</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a3171c70bfa71c3a4f960bf3e8203d13f">  102</a></span>&#160;int32_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>; <span class="comment">//heart rate value</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a43fb8ea97a26647405ca359095323280">  103</a></span>&#160;int8_t  <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>;  <span class="comment">//indicator to show if the heart rate calculation is valid</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac5e493da8cbdd1414d56e8f08282fcc2">  104</a></span>&#160;uint8_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a>;</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="comment">// the setup routine runs once when you press reset:</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a4fc01d736fe50cf5b977f755b675f11d">  108</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a4fc01d736fe50cf5b977f755b675f11d">setup</a>() {</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="preprocessor">#if defined(ARDUINO_AVR_LILYPAD_USB)    </span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<span class="preprocessor"></span>  pinMode(13, OUTPUT);  <span class="comment">//LED output pin on Lilypad</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="preprocessor">#if defined(ARDUINO_AVR_FLORA8)</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="preprocessor"></span>  <span class="comment">//Initialize the LED</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  LED.<a class="code" href="class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7">begin</a>();</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  LED.<a class="code" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">show</a>();</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <a class="code" href="max30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b" title="Reset the MAX30102.">maxim_max30102_reset</a>(); <span class="comment">//resets the MAX30102</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="comment">// initialize serial communication at 115200 bits per second:</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  Serial.begin(115200);</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  pinMode(10, INPUT);  <span class="comment">//pin D10 connects to the interrupt output pin of the MAX30102</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  delay(1000);</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <a class="code" href="max30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(<a class="code" href="max30102_8h.html#a7d161a2394a67a2176d549edb94f4191">REG_INTR_STATUS_1</a>,&amp;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a>);  <span class="comment">//Reads/clears the interrupt status register</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  <span class="keywordflow">while</span>(Serial.available()==0)  <span class="comment">//wait until user presses a key</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  {</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    Serial.write(27);       <span class="comment">// ESC command</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    Serial.print(F(<span class="stringliteral">&quot;[2J&quot;</span>));    <span class="comment">// clear screen command</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="preprocessor">#if defined(ARDUINO_AVR_LILYPAD_USB)    </span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="preprocessor"></span>    Serial.println(F(<span class="stringliteral">&quot;Lilypad&quot;</span>));</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#if defined(ARDUINO_AVR_FLORA8)</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="preprocessor"></span>    Serial.println(F(<span class="stringliteral">&quot;Adafruit Flora&quot;</span>));</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="preprocessor"></span>    Serial.println(F(<span class="stringliteral">&quot;Press any key to start conversion&quot;</span>));</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    delay(1000);</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;  }</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a>=Serial.read();</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <a class="code" href="max30102_8cpp.html#a4113aeee76935425d8a557a79a4193df" title="Initialize the MAX30102.">maxim_max30102_init</a>();  <span class="comment">//initialize the MAX30102</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;}</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="comment">// the loop routine runs over and over again forever:</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#afe461d27b9c48d5921c00d521181f12f">  144</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#afe461d27b9c48d5921c00d521181f12f">loop</a>() {</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  uint32_t un_min, un_max, un_prev_data, un_brightness;  <span class="comment">//variables to calculate the on-board LED brightness that reflects the heartbeats</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  int32_t i;</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="keywordtype">float</span> f_temp;</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  </div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;  un_brightness=0;</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;  un_min=0x3FFFF;</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  un_max=0;</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  </div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>=100;  <span class="comment">//buffer length of 100 stores 4 seconds of samples running at 25sps</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <span class="comment">//read the first 100 samples, and determine the signal range</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;  <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>;i++)</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;  {</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <span class="keywordflow">while</span>(digitalRead(10)==1);  <span class="comment">//wait until the interrupt pin asserts</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <a class="code" href="max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>((<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>+i), (<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>+i));  <span class="comment">//read from MAX30102 FIFO</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    </div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <span class="keywordflow">if</span>(un_min&gt;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i])</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;      un_min=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i];  <span class="comment">//update signal min</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="keywordflow">if</span>(un_max&lt;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i])</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;      un_max=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i];  <span class="comment">//update signal max</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    Serial.print(F(<span class="stringliteral">&quot;red=&quot;</span>));</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    Serial.print(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i], DEC);</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    Serial.print(F(<span class="stringliteral">&quot;, ir=&quot;</span>));</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    Serial.println(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>[i], DEC);</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  }</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  un_prev_data=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i];</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  <span class="comment">//calculate heart rate and SpO2 after first 100 samples (first 4 seconds of samples)</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  <a class="code" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6" title="Calculate the heart rate and SpO2 level.">maxim_heart_rate_and_oxygen_saturation</a>(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>, n_ir_buffer_length, <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>, &amp;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a54d8056bd9812e0b8f73f911dcc21dfd">n_spo2</a>, &amp;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>, &amp;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>, &amp;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>); </div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;  <span class="comment">//Continuously taking samples from MAX30102.  Heart rate and SpO2 are calculated every 1 second</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  <span class="keywordflow">while</span>(1)</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;  {</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    i=0;</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    un_min=0x3FFFF;</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    un_max=0;</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    <span class="comment">//dumping the first 25 sets of samples in the memory and shift the last 75 sets of samples to the top</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="keywordflow">for</span>(i=25;i&lt;100;i++)</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    {</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;      <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i-25]=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i];</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;      <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>[i-25]=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>[i];</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;      <span class="comment">//update the signal min and max</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;      <span class="keywordflow">if</span>(un_min&gt;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i])</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;        un_min=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i];</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;      <span class="keywordflow">if</span>(un_max&lt;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i])</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        un_max=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i];</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    }</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    <span class="comment">//take 25 sets of samples before calculating the heart rate.</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    <span class="keywordflow">for</span>(i=75;i&lt;100;i++)</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    {</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;      un_prev_data=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i-1];</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;      <span class="keywordflow">while</span>(digitalRead(10)==1);</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;      digitalWrite(9, !digitalRead(9));</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;      <a class="code" href="max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>((<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>+i), (<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>+i));</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;      <span class="comment">//calculate the brightness of the LED</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;      <span class="keywordflow">if</span>(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i]&gt;un_prev_data)</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;      {</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        f_temp=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i]-un_prev_data;</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;        f_temp/=(un_max-un_min);</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;        f_temp*=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>;</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        f_temp=un_brightness-f_temp;</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;        <span class="keywordflow">if</span>(f_temp&lt;0)</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;          un_brightness=0;</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;        <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;          un_brightness=(int)f_temp;</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;      }</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;      <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;      {</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;        f_temp=un_prev_data-<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i];</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        f_temp/=(un_max-un_min);</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;        f_temp*=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>;</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;        un_brightness+=(int)f_temp;</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        <span class="keywordflow">if</span>(un_brightness&gt;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>)</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;          un_brightness=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>;</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;      }</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;<span class="preprocessor">#if defined(ARDUINO_AVR_LILYPAD_USB)  </span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;<span class="preprocessor"></span>      analogWrite(13, un_brightness);</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;<span class="preprocessor">#if defined(ARDUINO_AVR_FLORA8)</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;<span class="preprocessor"></span>      LED.<a class="code" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1">setPixelColor</a>(0, un_brightness/BRIGHTNESS_DIVISOR, 0, 0);</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;      LED.<a class="code" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">show</a>();</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;      <span class="comment">//send samples and calculation result to terminal program through UART</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;      Serial.print(F(<span class="stringliteral">&quot;red=&quot;</span>));</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;      Serial.print(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i], DEC);</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;      Serial.print(F(<span class="stringliteral">&quot;, ir=&quot;</span>));</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;      Serial.print(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>[i], DEC);</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;      </div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;      Serial.print(F(<span class="stringliteral">&quot;, HR=&quot;</span>));</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;      Serial.print(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>, DEC);</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;      </div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;      Serial.print(F(<span class="stringliteral">&quot;, HRvalid=&quot;</span>));</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;      Serial.print(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>, DEC);</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;      </div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;      Serial.print(F(<span class="stringliteral">&quot;, SPO2=&quot;</span>));</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;      Serial.print(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a54d8056bd9812e0b8f73f911dcc21dfd">n_spo2</a>, DEC);</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;      Serial.print(F(<span class="stringliteral">&quot;, SPO2Valid=&quot;</span>));</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;      Serial.println(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>, DEC);</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    }</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    <a class="code" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6" title="Calculate the heart rate and SpO2 level.">maxim_heart_rate_and_oxygen_saturation</a>(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>, n_ir_buffer_length, <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>, &amp;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a54d8056bd9812e0b8f73f911dcc21dfd">n_spo2</a>, &amp;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>, &amp;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>, &amp;<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>); </div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  }</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;}</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160; </div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html">RD117_ARDUINO.ino</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h.html
new file mode 100644
index 0000000000000000000000000000000000000000..7ac8bbe70f1c2287e1f34192a7f71ca1d9d1f92a
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h.html
@@ -0,0 +1,654 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/SoftI2CMaster.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_soft_i2_c_master_8h.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Macros</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">SoftI2CMaster.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;avr/io.h&gt;</code><br/>
+<code>#include &lt;Arduino.h&gt;</code><br/>
+</div>
+<p><a href="_soft_i2_c_master_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:ae00bf2b1fa56ce97ea467dc60682022c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#ae00bf2b1fa56ce97ea467dc60682022c">SOFTI2DMASTER_H_</a></td></tr>
+<tr class="separator:ae00bf2b1fa56ce97ea467dc60682022c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afa3215f0aa766367f5d34bee80929152"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#afa3215f0aa766367f5d34bee80929152">I2C_TIMEOUT</a>&#160;&#160;&#160;100</td></tr>
+<tr class="separator:afa3215f0aa766367f5d34bee80929152"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a206ca6aa556565db88a5302050eb3936"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a206ca6aa556565db88a5302050eb3936">I2C_NOINTERRUPT</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:a206ca6aa556565db88a5302050eb3936"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0e1c9e6ca00fe824f98e8b7310589f5f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a0e1c9e6ca00fe824f98e8b7310589f5f">I2C_SLOWMODE</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:a0e1c9e6ca00fe824f98e8b7310589f5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8c3c7226e23b36189d1ec6b7d3504499"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a8c3c7226e23b36189d1ec6b7d3504499">FAC</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:a8c3c7226e23b36189d1ec6b7d3504499"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9e64b8013968d3d107154c4044643481"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a9e64b8013968d3d107154c4044643481">I2C_CPUFREQ</a>&#160;&#160;&#160;(F_CPU/<a class="el" href="_soft_i2_c_master_8h.html#a8c3c7226e23b36189d1ec6b7d3504499">FAC</a>)</td></tr>
+<tr class="separator:a9e64b8013968d3d107154c4044643481"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3bf497cc1d59d184775241e80a21085e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a3bf497cc1d59d184775241e80a21085e">_SOFTI2C_H</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:a3bf497cc1d59d184775241e80a21085e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a954e80e3d9812f381eb05af7e7081cc2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a954e80e3d9812f381eb05af7e7081cc2">I2C_FASTMODE</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:a954e80e3d9812f381eb05af7e7081cc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae704dfa4c0384f5d618fbfd14e0dec80"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#ae704dfa4c0384f5d618fbfd14e0dec80">I2C_TIMEOUT_DELAY_LOOPS</a>&#160;&#160;&#160;(<a class="el" href="_soft_i2_c_master_8h.html#a9e64b8013968d3d107154c4044643481">I2C_CPUFREQ</a>/1000UL)*I2C_TIMEOUT/4000UL</td></tr>
+<tr class="separator:ae704dfa4c0384f5d618fbfd14e0dec80"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a970e76c45294e29445ecbf139e6c386a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a970e76c45294e29445ecbf139e6c386a">I2C_MAX_STRETCH</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:a970e76c45294e29445ecbf139e6c386a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2af652afc14dc884cb2b42683d45c8df"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a>&#160;&#160;&#160;(((<a class="el" href="_soft_i2_c_master_8h.html#a9e64b8013968d3d107154c4044643481">I2C_CPUFREQ</a>/25000L)/2-19)/3)</td></tr>
+<tr class="separator:a2af652afc14dc884cb2b42683d45c8df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab5c0fbe837494c5f9130a5914854250d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#ab5c0fbe837494c5f9130a5914854250d">I2C_READ</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:ab5c0fbe837494c5f9130a5914854250d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9536bf85bced4f4e549a82fb18eb6140"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a9536bf85bced4f4e549a82fb18eb6140">I2C_WRITE</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:a9536bf85bced4f4e549a82fb18eb6140"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a16bb6708250d17ee2118d29e4865a653"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>&#160;&#160;&#160;(_SFR_IO_ADDR(SDA_PORT) - 1)</td></tr>
+<tr class="separator:a16bb6708250d17ee2118d29e4865a653"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5020a160f5b8f0a1697cfadbe778424b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b">SCL_DDR</a>&#160;&#160;&#160;(_SFR_IO_ADDR(SCL_PORT) - 1)</td></tr>
+<tr class="separator:a5020a160f5b8f0a1697cfadbe778424b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae154abbe60d159b6f4951ade68cc5fae"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#ae154abbe60d159b6f4951ade68cc5fae">SDA_OUT</a>&#160;&#160;&#160;_SFR_IO_ADDR(SDA_PORT)</td></tr>
+<tr class="separator:ae154abbe60d159b6f4951ade68cc5fae"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a07204a69a1872edbb272cde4d0c1e23f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a07204a69a1872edbb272cde4d0c1e23f">SCL_OUT</a>&#160;&#160;&#160;_SFR_IO_ADDR(SCL_PORT)</td></tr>
+<tr class="separator:a07204a69a1872edbb272cde4d0c1e23f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac4b553fc156d15aeeeaaf6cfe7695c83"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83">SDA_IN</a>&#160;&#160;&#160;(_SFR_IO_ADDR(SDA_PORT) - 2)</td></tr>
+<tr class="separator:ac4b553fc156d15aeeeaaf6cfe7695c83"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a10c618a025b8bdb8ea596fdc24197f49"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>&#160;&#160;&#160;(_SFR_IO_ADDR(SCL_PORT) - 2)</td></tr>
+<tr class="separator:a10c618a025b8bdb8ea596fdc24197f49"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0e6fc492b674d6ccceccb06e3bbf907b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a0e6fc492b674d6ccceccb06e3bbf907b">__tmp_reg__</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:a0e6fc492b674d6ccceccb06e3bbf907b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a342f1dd5ca489cfb78fffa200fcee9d9"><td class="memItemLeft" align="right" valign="top">boolean&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="el" href="_soft_i2_c_master_8h.html#ad5dc48c57198db1ee444a61405d2ea3d">i2c_init</a>(void)</td></tr>
+<tr class="separator:a342f1dd5ca489cfb78fffa200fcee9d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2ccdf1a08647bd236d7988a794dc403c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a2ccdf1a08647bd236d7988a794dc403c">i2c_delay_half</a> (void)</td></tr>
+<tr class="separator:a2ccdf1a08647bd236d7988a794dc403c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a55c46a9ce2c4eaec0c5878436a4a6b5b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a55c46a9ce2c4eaec0c5878436a4a6b5b">i2c_wait_scl_high</a> (void)</td></tr>
+<tr class="separator:a55c46a9ce2c4eaec0c5878436a4a6b5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad5dc48c57198db1ee444a61405d2ea3d"><td class="memItemLeft" align="right" valign="top">boolean&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#ad5dc48c57198db1ee444a61405d2ea3d">i2c_init</a> (void)</td></tr>
+<tr class="separator:ad5dc48c57198db1ee444a61405d2ea3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a876a5d83cf8b5fa662b04a81657d8d30"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30">i2c_start</a> (uint8_t addr)</td></tr>
+<tr class="separator:a876a5d83cf8b5fa662b04a81657d8d30"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a68105c3bb259544bcc000c21b8e5d355"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a68105c3bb259544bcc000c21b8e5d355">i2c_rep_start</a> (uint8_t addr)</td></tr>
+<tr class="separator:a68105c3bb259544bcc000c21b8e5d355"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5e2e89e9b3cb2a075d3d46bb148a42e9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a5e2e89e9b3cb2a075d3d46bb148a42e9">i2c_start_wait</a> (uint8_t addr)</td></tr>
+<tr class="separator:a5e2e89e9b3cb2a075d3d46bb148a42e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad35d4e4f52ca74b503d5e5e1e0a3f5f3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3">i2c_stop</a> (void)</td></tr>
+<tr class="separator:ad35d4e4f52ca74b503d5e5e1e0a3f5f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5abe73d680cae254aafa5227e6d87a13"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">i2c_write</a> (uint8_t value)</td></tr>
+<tr class="separator:a5abe73d680cae254aafa5227e6d87a13"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a717c8440b070832a7d3375cfd5a526ef"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a> (bool last)</td></tr>
+<tr class="separator:a717c8440b070832a7d3375cfd5a526ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="a0e6fc492b674d6ccceccb06e3bbf907b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define __tmp_reg__&#160;&#160;&#160;0</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00199">199</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3bf497cc1d59d184775241e80a21085e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _SOFTI2C_H&#160;&#160;&#160;1</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00085">85</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8c3c7226e23b36189d1ec6b7d3504499"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define FAC&#160;&#160;&#160;1</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00081">81</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9e64b8013968d3d107154c4044643481"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define I2C_CPUFREQ&#160;&#160;&#160;(F_CPU/<a class="el" href="_soft_i2_c_master_8h.html#a8c3c7226e23b36189d1ec6b7d3504499">FAC</a>)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00082">82</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2af652afc14dc884cb2b42683d45c8df"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define I2C_DELAY_COUNTER&#160;&#160;&#160;(((<a class="el" href="_soft_i2_c_master_8h.html#a9e64b8013968d3d107154c4044643481">I2C_CPUFREQ</a>/25000L)/2-19)/3)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00174">174</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a954e80e3d9812f381eb05af7e7081cc2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define I2C_FASTMODE&#160;&#160;&#160;0</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00129">129</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a970e76c45294e29445ecbf139e6c386a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define I2C_MAX_STRETCH&#160;&#160;&#160;1</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00161">161</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a206ca6aa556565db88a5302050eb3936"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define I2C_NOINTERRUPT&#160;&#160;&#160;0</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00079">79</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab5c0fbe837494c5f9130a5914854250d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define I2C_READ&#160;&#160;&#160;1</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00187">187</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0e1c9e6ca00fe824f98e8b7310589f5f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define I2C_SLOWMODE&#160;&#160;&#160;1</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00080">80</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afa3215f0aa766367f5d34bee80929152"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define I2C_TIMEOUT&#160;&#160;&#160;100</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00078">78</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae704dfa4c0384f5d618fbfd14e0dec80"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define I2C_TIMEOUT_DELAY_LOOPS&#160;&#160;&#160;(<a class="el" href="_soft_i2_c_master_8h.html#a9e64b8013968d3d107154c4044643481">I2C_CPUFREQ</a>/1000UL)*I2C_TIMEOUT/4000UL</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00159">159</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9536bf85bced4f4e549a82fb18eb6140"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define I2C_WRITE&#160;&#160;&#160;0</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00188">188</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5020a160f5b8f0a1697cfadbe778424b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define SCL_DDR&#160;&#160;&#160;(_SFR_IO_ADDR(SCL_PORT) - 1)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00192">192</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a10c618a025b8bdb8ea596fdc24197f49"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define SCL_IN&#160;&#160;&#160;(_SFR_IO_ADDR(SCL_PORT) - 2)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00196">196</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a07204a69a1872edbb272cde4d0c1e23f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define SCL_OUT&#160;&#160;&#160;_SFR_IO_ADDR(SCL_PORT)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00194">194</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a16bb6708250d17ee2118d29e4865a653"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define SDA_DDR&#160;&#160;&#160;(_SFR_IO_ADDR(SDA_PORT) - 1)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00191">191</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac4b553fc156d15aeeeaaf6cfe7695c83"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define SDA_IN&#160;&#160;&#160;(_SFR_IO_ADDR(SDA_PORT) - 2)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00195">195</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae154abbe60d159b6f4951ade68cc5fae"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define SDA_OUT&#160;&#160;&#160;_SFR_IO_ADDR(SDA_PORT)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00193">193</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae00bf2b1fa56ce97ea467dc60682022c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define SOFTI2DMASTER_H_</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00059">59</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a342f1dd5ca489cfb78fffa200fcee9d9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __attribute__ </td>
+          <td>(</td>
+          <td class="paramtype">(noinline)&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a2ccdf1a08647bd236d7988a794dc403c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void i2c_delay_half </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00207">207</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad5dc48c57198db1ee444a61405d2ea3d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">boolean i2c_init </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00272">272</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a717c8440b070832a7d3375cfd5a526ef"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">uint8_t i2c_read </td>
+          <td>(</td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>last</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00462">462</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a68105c3bb259544bcc000c21b8e5d355"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool i2c_rep_start </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>addr</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00313">313</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a876a5d83cf8b5fa662b04a81657d8d30"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool i2c_start </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>addr</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00295">295</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5e2e89e9b3cb2a075d3d46bb148a42e9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void i2c_start_wait </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>addr</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00338">338</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad35d4e4f52ca74b503d5e5e1e0a3f5f3"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void i2c_stop </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00365">365</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a55c46a9ce2c4eaec0c5878436a4a6b5b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void i2c_wait_scl_high </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00225">225</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5abe73d680cae254aafa5227e6d87a13"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool i2c_write </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>value</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00385">385</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_soft_i2_c_master_8h.html">SoftI2CMaster.h</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h.js
new file mode 100644
index 0000000000000000000000000000000000000000..bc44398ce5c83a1104c0e091eb10fc139bb2d7d6
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h.js
@@ -0,0 +1,33 @@
+var _soft_i2_c_master_8h =
+[
+    [ "__tmp_reg__", "_soft_i2_c_master_8h.html#a0e6fc492b674d6ccceccb06e3bbf907b", null ],
+    [ "_SOFTI2C_H", "_soft_i2_c_master_8h.html#a3bf497cc1d59d184775241e80a21085e", null ],
+    [ "FAC", "_soft_i2_c_master_8h.html#a8c3c7226e23b36189d1ec6b7d3504499", null ],
+    [ "I2C_CPUFREQ", "_soft_i2_c_master_8h.html#a9e64b8013968d3d107154c4044643481", null ],
+    [ "I2C_DELAY_COUNTER", "_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df", null ],
+    [ "I2C_FASTMODE", "_soft_i2_c_master_8h.html#a954e80e3d9812f381eb05af7e7081cc2", null ],
+    [ "I2C_MAX_STRETCH", "_soft_i2_c_master_8h.html#a970e76c45294e29445ecbf139e6c386a", null ],
+    [ "I2C_NOINTERRUPT", "_soft_i2_c_master_8h.html#a206ca6aa556565db88a5302050eb3936", null ],
+    [ "I2C_READ", "_soft_i2_c_master_8h.html#ab5c0fbe837494c5f9130a5914854250d", null ],
+    [ "I2C_SLOWMODE", "_soft_i2_c_master_8h.html#a0e1c9e6ca00fe824f98e8b7310589f5f", null ],
+    [ "I2C_TIMEOUT", "_soft_i2_c_master_8h.html#afa3215f0aa766367f5d34bee80929152", null ],
+    [ "I2C_TIMEOUT_DELAY_LOOPS", "_soft_i2_c_master_8h.html#ae704dfa4c0384f5d618fbfd14e0dec80", null ],
+    [ "I2C_WRITE", "_soft_i2_c_master_8h.html#a9536bf85bced4f4e549a82fb18eb6140", null ],
+    [ "SCL_DDR", "_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b", null ],
+    [ "SCL_IN", "_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49", null ],
+    [ "SCL_OUT", "_soft_i2_c_master_8h.html#a07204a69a1872edbb272cde4d0c1e23f", null ],
+    [ "SDA_DDR", "_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653", null ],
+    [ "SDA_IN", "_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83", null ],
+    [ "SDA_OUT", "_soft_i2_c_master_8h.html#ae154abbe60d159b6f4951ade68cc5fae", null ],
+    [ "SOFTI2DMASTER_H_", "_soft_i2_c_master_8h.html#ae00bf2b1fa56ce97ea467dc60682022c", null ],
+    [ "__attribute__", "_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9", null ],
+    [ "i2c_delay_half", "_soft_i2_c_master_8h.html#a2ccdf1a08647bd236d7988a794dc403c", null ],
+    [ "i2c_init", "_soft_i2_c_master_8h.html#ad5dc48c57198db1ee444a61405d2ea3d", null ],
+    [ "i2c_read", "_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef", null ],
+    [ "i2c_rep_start", "_soft_i2_c_master_8h.html#a68105c3bb259544bcc000c21b8e5d355", null ],
+    [ "i2c_start", "_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30", null ],
+    [ "i2c_start_wait", "_soft_i2_c_master_8h.html#a5e2e89e9b3cb2a075d3d46bb148a42e9", null ],
+    [ "i2c_stop", "_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3", null ],
+    [ "i2c_wait_scl_high", "_soft_i2_c_master_8h.html#a55c46a9ce2c4eaec0c5878436a4a6b5b", null ],
+    [ "i2c_write", "_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13", null ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..c7e7c80fb9c9955430cc6dd2219cfcf11a5f402c
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h_source.html
@@ -0,0 +1,655 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/SoftI2CMaster.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_soft_i2_c_master_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">SoftI2CMaster.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="_soft_i2_c_master_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/* Arduino SoftI2C library. </span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * This is a very fast and very light-weight software I2C-master library </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * written in assembler. It is based on Peter Fleury&#39;s I2C software</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * library: http://homepage.hispeed.ch/peterfleury/avr-software.html</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * This Library is free software: you can redistribute it and/or modify</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> * (at your option) any later version.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * This Library is distributed in the hope that it will be useful,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> * along with the Arduino I2cMaster Library.  If not, see</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> * &lt;http://www.gnu.org/licenses/&gt;.</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">/* In order to use the library, you need to define SDA_PIN, SCL_PIN,</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> * SDA_PORT and SCL_PORT before including this file.  Have a look at</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> * http://www.arduino.cc/en/Reference/PortManipulation for finding out</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"> * which values to use. For example, if you use digital pin 3 (corresponding </span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"> * to PD3) for SDA and digital pin 13 (corresponding to PB5)</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment"> * for SCL on a standard Arduino,</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment"> * you have to use the following definitions: </span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment"> * #define SDA_PIN 3 </span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment"> * #define SDA_PORT PORTD</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment"> * #define SCL_PIN 5</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment"> * #define SCL_PORT PORTB</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment"> * You can also define the following constants (see also below):</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment"> * - I2C_CPUFREQ, when changing CPU clock frequency dynamically</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment"> * - I2C_FASTMODE = 1 meaning that the I2C bus allows speeds up to 400 kHz</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment"> * - I2C_SLOWMODE = 1 meaning that the I2C bus will allow only up to 25 kHz </span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment"> * - I2C_NOINTERRUPT = 1 in order to prohibit interrupts while </span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment"> *   communicating (see below). This can be useful if you use the library </span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment"> *   for communicationg with SMbus devices, which have timeouts.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment"> *   Note, however, that interrupts are disabled from issuing a start condition</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment"> *   until issuing a stop condition. So use this option with care!</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment"> * - I2C_TIMEOUT = 0..10000 mssec in order to return from the I2C functions</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment"> *   in case of a I2C bus lockup (i.e., SCL constantly low). 0 means no timeout</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">/* Changelog:</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment"> * Version 1.1: </span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment"> * - removed I2C_CLOCK_STRETCHING</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="comment"> * - added I2C_TIMEOUT time in msec (0..10000) until timeout or 0 if no timeout</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment"> * - changed i2c_init to return true iff both SDA and SCL are high</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment"> * - changed interrupt disabling so that the previous IRQ state is restored</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment"> * Version 1.0: basic functionality</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#ifndef SOFTI2CMASTER_H_</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#ae00bf2b1fa56ce97ea467dc60682022c">   59</a></span>&#160;<span class="preprocessor">#define SOFTI2DMASTER_H_</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">#include &lt;avr/io.h&gt;</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#if defined(ARDUINO_AVR_FLORA8) || defined(ARDUINO_AVR_LILYPAD_USB)</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SDA_PORT PORTD</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SDA_PIN 1</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SCL_PORT PORTD</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SCL_PIN 0</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="preprocessor">#ifdef ARDUINO_AVR_UNO</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SDA_PORT PORTC</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SDA_PIN 4</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SCL_PORT PORTC</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SCL_PIN 5</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#afa3215f0aa766367f5d34bee80929152">   78</a></span>&#160;<span class="preprocessor">#define I2C_TIMEOUT 100</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a206ca6aa556565db88a5302050eb3936">   79</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_NOINTERRUPT 0</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a0e1c9e6ca00fe824f98e8b7310589f5f">   80</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_SLOWMODE 1</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a8c3c7226e23b36189d1ec6b7d3504499">   81</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define FAC 1</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a9e64b8013968d3d107154c4044643481">   82</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_CPUFREQ (F_CPU/FAC)</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="preprocessor">#ifndef _SOFTI2C_H</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a3bf497cc1d59d184775241e80a21085e">   85</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define _SOFTI2C_H   1</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="comment">// Init function. Needs to be called once in the beginning.</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="comment">// Returns false if SDA or SCL are low, which probably means </span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="comment">// a I2C bus lockup or that the lines are not pulled up.</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="keywordtype">boolean</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#ad5dc48c57198db1ee444a61405d2ea3d">i2c_init</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="comment">// Start transfer function: &lt;addr&gt; is the 8-bit I2C address (including the R/W</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="comment">// bit). </span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="comment">// Return: true if the slave replies with an &quot;acknowledge&quot;, false otherwise</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30">i2c_start</a>(uint8_t addr); </div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="comment">// Similar to start function, but wait for an ACK! Be careful, this can </span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="comment">// result in an infinite loop!</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#a5e2e89e9b3cb2a075d3d46bb148a42e9">i2c_start_wait</a>(uint8_t addr);</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="comment">// Repeated start function: After having claimed the bus with a start condition,</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="comment">// you can address another or the same chip again without an intervening </span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="comment">// stop condition.</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="comment">// Return: true if the slave replies with an &quot;acknowledge&quot;, false otherwise</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#a68105c3bb259544bcc000c21b8e5d355">i2c_rep_start</a>(uint8_t addr);</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="comment">// Issue a stop condition, freeing the bus.</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="keywordtype">void</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3">i2c_stop</a>(<span class="keywordtype">void</span>) asm(&quot;ass_i2c_stop&quot;);</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="comment">// Write one byte to the slave chip that had been addressed</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<span class="comment">// by the previous start call. &lt;value&gt; is the byte to be sent.</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="comment">// Return: true if the slave replies with an &quot;acknowledge&quot;, false otherwise</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">i2c_write</a>(uint8_t value) asm(&quot;ass_i2c_write&quot;);</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160; </div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="comment">// Read one byte. If &lt;last&gt; is true, we send a NAK after having received </span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="comment">// the byte in order to terminate the read sequence. </span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;uint8_t <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keywordtype">bool</span> last);</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="comment">// You can set I2C_CPUFREQ independently of F_CPU if you </span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="comment">// change the CPU frequency on the fly. If you do not define it,</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="comment">// it will use the value of F_CPU</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="preprocessor">#ifndef I2C_CPUFREQ</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_CPUFREQ F_CPU</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="comment">// If I2C_FASTMODE is set to 1, then the highest possible frequency below 400kHz</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="comment">// is selected. Be aware that not all slave chips may be able to deal with that!</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="preprocessor">#ifndef I2C_FASTMODE</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a954e80e3d9812f381eb05af7e7081cc2">  129</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_FASTMODE 0</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="comment">// If I2C_FASTMODE is not defined or defined to be 0, then you can set</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="comment">// I2C_SLOWMODE to 1. In this case, the I2C frequency will not be higher </span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="comment">// than 25KHz. This could be useful for problematic buses.</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="preprocessor">#ifndef I2C_SLOWMODE</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_SLOWMODE 0</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="comment">// if I2C_NOINTERRUPT is 1, then the I2C routines are not interruptable.</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="comment">// This is most probably only necessary if you are using a 1MHz system clock,</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="comment">// you are communicating with a SMBus device, and you want to avoid timeouts.</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="comment">// Be aware that the interrupt bit is enabled after each call. So the</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="comment">// I2C functions should not be called in interrupt routines or critical regions.</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;<span class="preprocessor">#ifndef I2C_NOINTERRUPT</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_NOINTERRUPT 0</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;<span class="comment">// I2C_TIMEOUT can be set to a value between 1 and 10000.</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="comment">// If it is defined and nonzero, it leads to a timeout if the</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="comment">// SCL is low longer than I2C_TIMEOUT milliseconds, i.e., max timeout is 10 sec</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="preprocessor">#ifndef I2C_TIMEOUT</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_TIMEOUT 0</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else </span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#if I2C_TIMEOUT &gt; 10000</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#error I2C_TIMEOUT is too large</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#ae704dfa4c0384f5d618fbfd14e0dec80">  159</a></span>&#160;<span class="preprocessor">#define I2C_TIMEOUT_DELAY_LOOPS (I2C_CPUFREQ/1000UL)*I2C_TIMEOUT/4000UL</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#if I2C_TIMEOUT_DELAY_LOOPS &lt; 1</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a970e76c45294e29445ecbf139e6c386a">  161</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_MAX_STRETCH 1</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#if I2C_TIMEOUT_DELAY_LOOPS &gt; 60000UL</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_MAX_STRETCH 60000UL</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_MAX_STRETCH I2C_TIMEOUT_DELAY_LOOPS</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="preprocessor">#if I2C_FASTMODE</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/400000L)/2-19)/3)</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#if I2C_SLOWMODE</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">  174</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/25000L)/2-19)/3)</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/100000L)/2-19)/3)</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;<span class="comment">// Table of I2C bus speed in kbit/sec:</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;<span class="comment">// CPU clock:           1MHz   2MHz    4MHz   8MHz   16MHz   20MHz</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;<span class="comment">// Fast I2C mode          40     80     150    300     400     400</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;<span class="comment">// Standard I2C mode      40     80     100    100     100     100</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;<span class="comment">// Slow I2C mode          25     25      25     25      25      25     </span></div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;<span class="comment">// constants for reading &amp; writing</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#ab5c0fbe837494c5f9130a5914854250d">  187</a></span>&#160;<span class="preprocessor">#define I2C_READ    1</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a9536bf85bced4f4e549a82fb18eb6140">  188</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_WRITE   0</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;<span class="comment">// map the IO register back into the IO address space</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">  191</a></span>&#160;<span class="preprocessor">#define SDA_DDR         (_SFR_IO_ADDR(SDA_PORT) - 1)</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b">  192</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SCL_DDR         (_SFR_IO_ADDR(SCL_PORT) - 1)</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#ae154abbe60d159b6f4951ade68cc5fae">  193</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SDA_OUT         _SFR_IO_ADDR(SDA_PORT)</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a07204a69a1872edbb272cde4d0c1e23f">  194</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SCL_OUT         _SFR_IO_ADDR(SCL_PORT)</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83">  195</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SDA_IN      (_SFR_IO_ADDR(SDA_PORT) - 2)</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">  196</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SCL_IN      (_SFR_IO_ADDR(SCL_PORT) - 2)</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;<span class="preprocessor">#ifndef __tmp_reg__</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a0e6fc492b674d6ccceccb06e3bbf907b">  199</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __tmp_reg__ 0</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160; </div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="comment">// Internal delay functions.</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;<span class="keywordtype">void</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#a2ccdf1a08647bd236d7988a794dc403c">i2c_delay_half</a>(<span class="keywordtype">void</span>) asm(&quot;ass_i2c_delay_half&quot;);</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;<span class="keywordtype">void</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#a55c46a9ce2c4eaec0c5878436a4a6b5b">i2c_wait_scl_high</a>(<span class="keywordtype">void</span>) asm(&quot;ass_i2c_wait_scl_high&quot;);</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;</div>
+<div class="line"><a name="l00207"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a2ccdf1a08647bd236d7988a794dc403c">  207</a></span>&#160;<span class="keywordtype">void</span>  <a class="code" href="_soft_i2_c_master_8h.html#a2ccdf1a08647bd236d7988a794dc403c">i2c_delay_half</a>(<span class="keywordtype">void</span>)</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;{ <span class="comment">// function call 3 cycles =&gt; 3C</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;<span class="preprocessor">#if I2C_DELAY_COUNTER &lt; 1</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;<span class="preprocessor"></span>  __asm__ __volatile__ (<span class="stringliteral">&quot; ret&quot;</span>);</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  <span class="comment">// 7 cycles for call and return</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="preprocessor"></span>  __asm__ __volatile__ </div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    (</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;     <span class="stringliteral">&quot; ldi      r25, %[DELAY]           ;load delay constant   ;; 4C \n\t&quot;</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;     <span class="stringliteral">&quot;_Lidelay: \n\t&quot;</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;     <span class="stringliteral">&quot; dec r25                          ;decrement counter     ;; 4C+xC \n\t&quot;</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;     <span class="stringliteral">&quot; brne _Lidelay                                           ;;5C+(x-1)2C+xC\n\t&quot;</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;     <span class="stringliteral">&quot; ret                                                     ;; 9C+(x-1)2C+xC = 7C+xC&quot;</span> </div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;     : : [DELAY] <span class="stringliteral">&quot;M&quot;</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> : <span class="stringliteral">&quot;r25&quot;</span>);</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  <span class="comment">// 7 cycles + 3 times x cycles</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;<span class="preprocessor"></span>}</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;</div>
+<div class="line"><a name="l00225"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a55c46a9ce2c4eaec0c5878436a4a6b5b">  225</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="_soft_i2_c_master_8h.html#a55c46a9ce2c4eaec0c5878436a4a6b5b">i2c_wait_scl_high</a>(<span class="keywordtype">void</span>)</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;{</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;<span class="preprocessor">#if I2C_TIMEOUT &lt;= 0</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;<span class="preprocessor"></span>  __asm__ __volatile__ </div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    (<span class="stringliteral">&quot;_Li2c_wait_stretch: \n\t&quot;</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;     <span class="stringliteral">&quot; sbis %[SCLIN],%[SCLPIN]  ;wait for SCL high \n\t&quot;</span> </div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;     <span class="stringliteral">&quot; rjmp _Li2c_wait_stretch \n\t&quot;</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;     <span class="stringliteral">&quot; cln                              ;signal: no timeout \n\t&quot;</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;     <span class="stringliteral">&quot; ret &quot;</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;     : : [SCLIN] <span class="stringliteral">&quot;I&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>), [SCLPIN] <span class="stringliteral">&quot;I&quot;</span> (SCL_PIN));</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;<span class="preprocessor"></span>  __asm__ __volatile__ </div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    ( <span class="stringliteral">&quot; ldi     r27, %[HISTRETCH]       ;load delay counter \n\t&quot;</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;      <span class="stringliteral">&quot; ldi     r26, %[LOSTRETCH] \n\t&quot;</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;      <span class="stringliteral">&quot;_Lwait_stretch: \n\t&quot;</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;      <span class="stringliteral">&quot; clr     __tmp_reg__             ;do next loop 255 times \n\t&quot;</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;      <span class="stringliteral">&quot;_Lwait_stretch_inner_loop: \n\t&quot;</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;      <span class="stringliteral">&quot; rcall   _Lcheck_scl_level       ;call check function   ;; 12C \n\t&quot;</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;      <span class="stringliteral">&quot; brpl    _Lstretch_done          ;done if N=0           ;; +1 = 13C\n\t&quot;</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;      <span class="stringliteral">&quot; dec     __tmp_reg__             ;dec inner loop counter;; +1 = 14C\n\t&quot;</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;      <span class="stringliteral">&quot; brne    _Lwait_stretch_inner_loop                      ;; +2 = 16C\n\t&quot;</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;      <span class="stringliteral">&quot; sbiw    r26,1                   ;dec outer loop counter \n\t&quot;</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;      <span class="stringliteral">&quot; brne    _Lwait_stretch          ;continue with outer loop \n\t&quot;</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;      <span class="stringliteral">&quot; sen                             ;timeout -&gt; set N-bit=1 \n\t&quot;</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;      <span class="stringliteral">&quot; rjmp _Lwait_return              ;and return with N=1\n\t&quot;</span></div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;      <span class="stringliteral">&quot;_Lstretch_done:                  ;SCL=1 sensed \n\t&quot;</span>            </div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;      <span class="stringliteral">&quot; cln                             ;OK -&gt; clear N-bit \n\t&quot;</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;      <span class="stringliteral">&quot; rjmp _Lwait_return              ; and return with N=0 \n\t&quot;</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;      <span class="stringliteral">&quot;_Lcheck_scl_level:                                      ;; call = 3C\n\t&quot;</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;      <span class="stringliteral">&quot; cln                                                    ;; +1C = 4C \n\t&quot;</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;      <span class="stringliteral">&quot; sbic    %[SCLIN],%[SCLPIN]      ;skip if SCL still low ;; +2C = 6C \n\t&quot;</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;      <span class="stringliteral">&quot; rjmp    _Lscl_high                                     ;; +0C = 6C \n\t&quot;</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;      <span class="stringliteral">&quot; sen                                                    ;; +1 = 7C\n\t &quot;</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;      <span class="stringliteral">&quot;_Lscl_high: &quot;</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;      <span class="stringliteral">&quot; nop                                                    ;; +1C = 8C \n\t&quot;</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;      <span class="stringliteral">&quot; ret                             ;return N-Bit=1 if low ;; +4 = 12C\n\t&quot;</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;      <span class="stringliteral">&quot;_Lwait_return:&quot;</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;      : : [SCLIN] <span class="stringliteral">&quot;I&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>), [SCLPIN] <span class="stringliteral">&quot;I&quot;</span> (SCL_PIN), </div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    [HISTRETCH] <span class="stringliteral">&quot;M&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#a970e76c45294e29445ecbf139e6c386a">I2C_MAX_STRETCH</a>&gt;&gt;8), </div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    [LOSTRETCH] <span class="stringliteral">&quot;M&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#a970e76c45294e29445ecbf139e6c386a">I2C_MAX_STRETCH</a>&amp;0xFF)</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;      : <span class="stringliteral">&quot;r26&quot;</span>, <span class="stringliteral">&quot;r27&quot;</span>);</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;<span class="preprocessor"></span>}</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div>
+<div class="line"><a name="l00272"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#ad5dc48c57198db1ee444a61405d2ea3d">  272</a></span>&#160;<span class="keywordtype">boolean</span> <a class="code" href="_soft_i2_c_master_8h.html#ad5dc48c57198db1ee444a61405d2ea3d">i2c_init</a>(<span class="keywordtype">void</span>)</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;{</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;  __asm__ __volatile__ </div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    (<span class="stringliteral">&quot; cbi      %[SDADDR],%[SDAPIN]     ;release SDA \n\t&quot;</span> </div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;     <span class="stringliteral">&quot; cbi      %[SCLDDR],%[SCLPIN]     ;release SCL \n\t&quot;</span> </div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;     <span class="stringliteral">&quot; cbi      %[SDAOUT],%[SDAPIN]     ;clear SDA output value \n\t&quot;</span> </div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;     <span class="stringliteral">&quot; cbi      %[SCLOUT],%[SCLPIN]     ;clear SCL output value \n\t&quot;</span> </div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;     <span class="stringliteral">&quot; clr      r24                     ;set return value to false \n\t&quot;</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;     <span class="stringliteral">&quot; clr      r25                     ;set return value to false \n\t&quot;</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;     <span class="stringliteral">&quot; sbis     %[SDAIN],%[SDAPIN]      ;check for SDA high\n\t&quot;</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;     <span class="stringliteral">&quot; ret                              ;if low return with false \n\t&quot;</span>  </div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;     <span class="stringliteral">&quot; sbis     %[SCLIN],%[SCLPIN]      ;check for SCL high \n\t&quot;</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;     <span class="stringliteral">&quot; ret                              ;if low return with false \n\t&quot;</span> </div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;     <span class="stringliteral">&quot; ldi      r24,1                   ;set return value to true \n\t&quot;</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;     <span class="stringliteral">&quot; ret &quot;</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;     : :</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;       [SCLDDR] <span class="stringliteral">&quot;I&quot;</span>  (<a class="code" href="_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b">SCL_DDR</a>), [SCLPIN] <span class="stringliteral">&quot;I&quot;</span> (SCL_PIN), </div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;       [SCLIN] <span class="stringliteral">&quot;I&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>), [SCLOUT] <span class="stringliteral">&quot;I&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#a07204a69a1872edbb272cde4d0c1e23f">SCL_OUT</a>),</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;       [SDADDR] <span class="stringliteral">&quot;I&quot;</span>  (<a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>), [SDAPIN] <span class="stringliteral">&quot;I&quot;</span> (SDA_PIN), </div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;       [SDAIN] <span class="stringliteral">&quot;I&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83">SDA_IN</a>), [SDAOUT] <span class="stringliteral">&quot;I&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#ae154abbe60d159b6f4951ade68cc5fae">SDA_OUT</a>)); </div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;}</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;</div>
+<div class="line"><a name="l00295"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30">  295</a></span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30">i2c_start</a>(uint8_t addr)</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;{</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;  __asm__ __volatile__ </div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    (</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a206ca6aa556565db88a5302050eb3936">I2C_NOINTERRUPT</a></div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;     <span class="stringliteral">&quot; cli                              ;clear IRQ bit \n\t&quot;</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;#endif</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;     <span class="stringliteral">&quot; sbis     %[SCLIN],%[SCLPIN]      ;check for clock stretching slave\n\t&quot;</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_wait_scl_high   ;wait until SCL=H\n\t&quot;</span> </div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;     <span class="stringliteral">&quot; sbi      %[SDADDR],%[SDAPIN]     ;force SDA low  \n\t&quot;</span> </div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half      ;wait T/2 \n\t&quot;</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_write           ;now write address \n\t&quot;</span></div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;     <span class="stringliteral">&quot; ret&quot;</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;     : : [SDADDR] <span class="stringliteral">&quot;I&quot;</span>  (<a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>), [SDAPIN] <span class="stringliteral">&quot;I&quot;</span> (SDA_PIN),</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;       [SCLIN] <span class="stringliteral">&quot;I&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>),[SCLPIN] <span class="stringliteral">&quot;I&quot;</span> (SCL_PIN)); </div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// we never return here!</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;}</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;</div>
+<div class="line"><a name="l00313"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a68105c3bb259544bcc000c21b8e5d355">  313</a></span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="_soft_i2_c_master_8h.html#a68105c3bb259544bcc000c21b8e5d355">i2c_rep_start</a>(uint8_t addr)</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;{</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;  __asm__ __volatile__ </div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    (</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a206ca6aa556565db88a5302050eb3936">I2C_NOINTERRUPT</a></div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;     <span class="stringliteral">&quot; cli \n\t&quot;</span></div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;#endif</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;     <span class="stringliteral">&quot; sbi  %[SCLDDR],%[SCLPIN] ;force SCL low \n\t&quot;</span> </div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half  ;delay  T/2 \n\t&quot;</span> </div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;     <span class="stringliteral">&quot; cbi  %[SDADDR],%[SDAPIN] ;release SDA \n\t&quot;</span> </div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half  ;delay T/2 \n\t&quot;</span> </div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;     <span class="stringliteral">&quot; cbi  %[SCLDDR],%[SCLPIN] ;release SCL \n\t&quot;</span> </div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half  ;delay  T/2 \n\t&quot;</span> </div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;     <span class="stringliteral">&quot; sbis     %[SCLIN],%[SCLPIN]      ;check for clock stretching slave\n\t&quot;</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_wait_scl_high   ;wait until SCL=H\n\t&quot;</span> </div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;     <span class="stringliteral">&quot; sbi  %[SDADDR],%[SDAPIN] ;force SDA low \n\t&quot;</span> </div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half  ;delay  T/2 \n\t&quot;</span> </div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_write       \n\t&quot;</span></div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;     <span class="stringliteral">&quot; ret&quot;</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;     : : [SCLDDR] <span class="stringliteral">&quot;I&quot;</span>  (<a class="code" href="_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b">SCL_DDR</a>), [SCLPIN] <span class="stringliteral">&quot;I&quot;</span> (SCL_PIN),[SCLIN] <span class="stringliteral">&quot;I&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>),</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;         [SDADDR] <span class="stringliteral">&quot;I&quot;</span>  (<a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>), [SDAPIN] <span class="stringliteral">&quot;I&quot;</span> (SDA_PIN)); </div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// just to fool the compiler</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;}</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;</div>
+<div class="line"><a name="l00338"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a5e2e89e9b3cb2a075d3d46bb148a42e9">  338</a></span>&#160;<span class="keywordtype">void</span>  <a class="code" href="_soft_i2_c_master_8h.html#a5e2e89e9b3cb2a075d3d46bb148a42e9">i2c_start_wait</a>(uint8_t addr)</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;{</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160; __asm__ __volatile__ </div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;   (</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    <span class="stringliteral">&quot; push  r24                     ;save original parameter \n\t&quot;</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    <span class="stringliteral">&quot;_Li2c_start_wait1: \n\t&quot;</span></div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    <span class="stringliteral">&quot; pop       r24                     ;restore original parameter\n\t&quot;</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    <span class="stringliteral">&quot; push      r24                     ;and save again \n\t&quot;</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a206ca6aa556565db88a5302050eb3936">I2C_NOINTERRUPT</a></div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    <span class="stringliteral">&quot; cli                               ;disable interrupts \n\t&quot;</span></div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;#endif</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    <span class="stringliteral">&quot; sbis     %[SCLIN],%[SCLPIN]      ;check for clock stretching slave\n\t&quot;</span></div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    <span class="stringliteral">&quot; rcall    ass_i2c_wait_scl_high   ;wait until SCL=H\n\t&quot;</span> </div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;    <span class="stringliteral">&quot; sbi   %[SDADDR],%[SDAPIN] ;force SDA low \n\t&quot;</span> </div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;    <span class="stringliteral">&quot; rcall     ass_i2c_delay_half  ;delay T/2 \n\t&quot;</span> </div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    <span class="stringliteral">&quot; rcall     ass_i2c_write           ;write address \n\t&quot;</span> </div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;    <span class="stringliteral">&quot; tst   r24             ;if device not busy -&gt; done \n\t&quot;</span> </div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    <span class="stringliteral">&quot; brne  _Li2c_start_wait_done \n\t&quot;</span> </div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    <span class="stringliteral">&quot; rcall ass_i2c_stop            ;terminate write &amp; enable IRQ \n\t&quot;</span> </div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    <span class="stringliteral">&quot; rjmp  _Li2c_start_wait1   ;device busy, poll ack again \n\t&quot;</span> </div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;    <span class="stringliteral">&quot;_Li2c_start_wait_done: \n\t&quot;</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;    <span class="stringliteral">&quot; pop       __tmp_reg__             ;pop off orig argument \n\t&quot;</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    <span class="stringliteral">&quot; ret &quot;</span></div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    : : [SDADDR] <span class="stringliteral">&quot;I&quot;</span>  (<a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>), [SDAPIN] <span class="stringliteral">&quot;I&quot;</span> (SDA_PIN),</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;      [SCLIN] <span class="stringliteral">&quot;I&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>),[SCLPIN] <span class="stringliteral">&quot;I&quot;</span> (SCL_PIN)); </div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;}</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;</div>
+<div class="line"><a name="l00365"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3">  365</a></span>&#160;<span class="keywordtype">void</span>  <a class="code" href="_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3">i2c_stop</a>(<span class="keywordtype">void</span>)</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;{</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;  __asm__ __volatile__ </div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;    (</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;     <span class="stringliteral">&quot; sbi      %[SCLDDR],%[SCLPIN]     ;force SCL low \n\t&quot;</span> </div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;     <span class="stringliteral">&quot; sbi      %[SDADDR],%[SDAPIN]     ;force SDA low \n\t&quot;</span> </div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half      ;T/2 delay \n\t&quot;</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;     <span class="stringliteral">&quot; cbi      %[SCLDDR],%[SCLPIN]     ;release SCL \n\t&quot;</span> </div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half      ;T/2 delay \n\t&quot;</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;     <span class="stringliteral">&quot; sbis     %[SCLIN],%[SCLPIN]      ;check for clock stretching slave\n\t&quot;</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_wait_scl_high   ;wait until SCL=H\n\t&quot;</span> </div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;     <span class="stringliteral">&quot; cbi      %[SDADDR],%[SDAPIN]     ;release SDA \n\t&quot;</span> </div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half \n\t&quot;</span></div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a206ca6aa556565db88a5302050eb3936">I2C_NOINTERRUPT</a></div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;     <span class="stringliteral">&quot; sei                              ;enable interrupts again!\n\t&quot;</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;#endif</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;     : : [SCLDDR] <span class="stringliteral">&quot;I&quot;</span>  (<a class="code" href="_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b">SCL_DDR</a>), [SCLPIN] <span class="stringliteral">&quot;I&quot;</span> (SCL_PIN), [SCLIN] <span class="stringliteral">&quot;I&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>),</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;         [SDADDR] <span class="stringliteral">&quot;I&quot;</span>  (<a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>), [SDAPIN] <span class="stringliteral">&quot;I&quot;</span> (SDA_PIN)); </div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;}</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;</div>
+<div class="line"><a name="l00385"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">  385</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">i2c_write</a>(uint8_t value)</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;{</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;  __asm__ __volatile__ </div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;    (</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;     <span class="stringliteral">&quot; sec                              ;set carry flag \n\t&quot;</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;     <span class="stringliteral">&quot; rol      r24                     ;shift in carry and shift out MSB \n\t&quot;</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;     <span class="stringliteral">&quot; rjmp _Li2c_write_first \n\t&quot;</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;     <span class="stringliteral">&quot;_Li2c_write_bit:\n\t&quot;</span></div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;     <span class="stringliteral">&quot; lsl      r24                     ;left shift into carry ;; 1C\n\t&quot;</span></div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;     <span class="stringliteral">&quot;_Li2c_write_first:\n\t&quot;</span></div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;     <span class="stringliteral">&quot; breq     _Li2c_get_ack           ;jump if TXreg is empty;; +1 = 2C \n\t&quot;</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;     <span class="stringliteral">&quot; sbi      %[SCLDDR],%[SCLPIN]     ;force SCL low         ;; +2 = 4C \n\t&quot;</span></div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;     <span class="stringliteral">&quot; nop \n\t&quot;</span></div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;     <span class="stringliteral">&quot; nop \n\t&quot;</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;     <span class="stringliteral">&quot; nop \n\t&quot;</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;     <span class="stringliteral">&quot; brcc     _Li2c_write_low                                ;;+1/+2=5/6C\n\t&quot;</span></div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;     <span class="stringliteral">&quot; nop                                                     ;; +1 = 7C \n\t&quot;</span></div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;     <span class="stringliteral">&quot; cbi %[SDADDR],%[SDAPIN]          ;release SDA           ;; +2 = 9C \n\t&quot;</span></div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;     <span class="stringliteral">&quot; rjmp      _Li2c_write_high                              ;; +2 = 11C \n\t&quot;</span></div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;     <span class="stringliteral">&quot;_Li2c_write_low: \n\t&quot;</span></div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;     <span class="stringliteral">&quot; sbi  %[SDADDR],%[SDAPIN] ;force SDA low         ;; +2 = 9C \n\t&quot;</span></div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;     <span class="stringliteral">&quot; rjmp _Li2c_write_high                               ;;+2 = 11C \n\t&quot;</span></div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;     <span class="stringliteral">&quot;_Li2c_write_high: \n\t&quot;</span></div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> &gt;= 1</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half  ;delay T/2             ;;+X = 11C+X\n\t&quot;</span></div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;#endif</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;     <span class="stringliteral">&quot; cbi  %[SCLDDR],%[SCLPIN] ;release SCL           ;;+2 = 13C+X\n\t&quot;</span></div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;     <span class="stringliteral">&quot; cln                              ;clear N-bit           ;;+1 = 14C+X\n\t&quot;</span></div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;     <span class="stringliteral">&quot; nop \n\t&quot;</span></div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;     <span class="stringliteral">&quot; nop \n\t&quot;</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;     <span class="stringliteral">&quot; nop \n\t&quot;</span></div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;     <span class="stringliteral">&quot; sbis %[SCLIN],%[SCLPIN]  ;check for SCL high    ;;+2 = 16C+X\n\t&quot;</span></div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_wait_scl_high \n\t&quot;</span></div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;     <span class="stringliteral">&quot; brpl     _Ldelay_scl_high                              ;;+2 = 18C+X\n\t&quot;</span></div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;     <span class="stringliteral">&quot;_Li2c_write_return_false: \n\t&quot;</span></div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;     <span class="stringliteral">&quot; clr      r24                     ; return false because of timeout \n\t&quot;</span></div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;     <span class="stringliteral">&quot; rjmp     _Li2c_write_return \n\t&quot;</span></div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;     <span class="stringliteral">&quot;_Ldelay_scl_high: \n\t&quot;</span></div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> &gt;= 1</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half  ;delay T/2             ;;+X= 18C+2X\n\t&quot;</span></div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;#endif</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;     <span class="stringliteral">&quot; rjmp _Li2c_write_bit \n\t&quot;</span></div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;     <span class="stringliteral">&quot;              ;; +2 = 20C +2X for one bit-loop \n\t&quot;</span></div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;     <span class="stringliteral">&quot;_Li2c_get_ack: \n\t&quot;</span></div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;     <span class="stringliteral">&quot; sbi  %[SCLDDR],%[SCLPIN] ;force SCL low ;; +2 = 5C \n\t&quot;</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;     <span class="stringliteral">&quot; nop \n\t&quot;</span></div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;     <span class="stringliteral">&quot; nop \n\t&quot;</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;     <span class="stringliteral">&quot; cbi  %[SDADDR],%[SDAPIN] ;release SDA ;;+2 = 7C \n\t&quot;</span></div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> &gt;= 1</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half  ;delay T/2 ;; +X = 7C+X \n\t&quot;</span></div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;#endif</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;     <span class="stringliteral">&quot; clr  r25                                            ;; 17C+2X \n\t&quot;</span></div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;     <span class="stringliteral">&quot; clr  r24             ;return 0              ;; 14C + X \n\t&quot;</span></div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;     <span class="stringliteral">&quot; cbi  %[SCLDDR],%[SCLPIN] ;release SCL ;; +2 = 9C+X\n\t&quot;</span></div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;     <span class="stringliteral">&quot;_Li2c_ack_wait: \n\t&quot;</span></div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;     <span class="stringliteral">&quot; cln                              ; clear N-bit          ;; 10C + X\n\t&quot;</span> </div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;     <span class="stringliteral">&quot; nop \n\t&quot;</span></div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;     <span class="stringliteral">&quot; sbis %[SCLIN],%[SCLPIN]  ;wait SCL high         ;; 12C + X \n\t&quot;</span></div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_wait_scl_high \n\t&quot;</span></div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;     <span class="stringliteral">&quot; brmi     _Li2c_write_return_false                       ;; 13C + X \n\t &quot;</span></div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;     <span class="stringliteral">&quot; sbis %[SDAIN],%[SDAPIN]      ;if SDA hi -&gt; return 0 ;; 15C + X \n\t&quot;</span></div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;     <span class="stringliteral">&quot; ldi  r24,1                   ;return true           ;; 16C + X \n\t&quot;</span></div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> &gt;= 1</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half  ;delay T/2             ;; 16C + 2X \n\t&quot;</span></div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;#endif</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;     <span class="stringliteral">&quot;_Li2c_write_return: \n\t&quot;</span></div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;     <span class="stringliteral">&quot; nop \n\t &quot;</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;     <span class="stringliteral">&quot; nop \n\t &quot;</span></div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;     <span class="stringliteral">&quot; sbi  %[SCLDDR],%[SCLPIN] ;force SCL low so SCL=H is short\n\t&quot;</span></div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;     <span class="stringliteral">&quot; ret \n\t&quot;</span></div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;     <span class="stringliteral">&quot;              ;; + 4 = 17C + 2X for acknowldge bit&quot;</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;     ::</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;      [SCLDDR] <span class="stringliteral">&quot;I&quot;</span>  (<a class="code" href="_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b">SCL_DDR</a>), [SCLPIN] <span class="stringliteral">&quot;I&quot;</span> (SCL_PIN), [SCLIN] <span class="stringliteral">&quot;I&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>),</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;      [SDADDR] <span class="stringliteral">&quot;I&quot;</span>  (<a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>), [SDAPIN] <span class="stringliteral">&quot;I&quot;</span> (SDA_PIN), [SDAIN] <span class="stringliteral">&quot;I&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83">SDA_IN</a>)); </div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// fooling the compiler</span></div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;}</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;</div>
+<div class="line"><a name="l00462"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">  462</a></span>&#160;uint8_t <a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keywordtype">bool</span> last)</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;{</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;  __asm__ __volatile__ </div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;    (</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;     <span class="stringliteral">&quot; ldi  r23,0x01 \n\t&quot;</span></div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;     <span class="stringliteral">&quot;_Li2c_read_bit: \n\t&quot;</span></div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;     <span class="stringliteral">&quot; sbi  %[SCLDDR],%[SCLPIN] ;force SCL low         ;; 2C \n\t&quot;</span> </div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;     <span class="stringliteral">&quot; cbi  %[SDADDR],%[SDAPIN] ;release SDA(prev. ACK);; 4C \n\t&quot;</span> </div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;     <span class="stringliteral">&quot; nop \n\t&quot;</span></div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;     <span class="stringliteral">&quot; nop \n\t&quot;</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;     <span class="stringliteral">&quot; nop \n\t&quot;</span></div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> &gt;= 1</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half  ;delay T/2             ;; 4C+X \n\t&quot;</span> </div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;#endif</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;     <span class="stringliteral">&quot; cbi  %[SCLDDR],%[SCLPIN] ;release SCL           ;; 6C + X \n\t&quot;</span> </div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> &gt;= 1</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half  ;delay T/2             ;; 6C + 2X \n\t&quot;</span> </div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;#endif</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;     <span class="stringliteral">&quot; cln                              ; clear N-bit          ;; 7C + 2X \n\t&quot;</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;     <span class="stringliteral">&quot; nop \n\t &quot;</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;     <span class="stringliteral">&quot; nop \n\t &quot;</span></div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;     <span class="stringliteral">&quot; nop \n\t &quot;</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;     <span class="stringliteral">&quot; sbis     %[SCLIN], %[SCLPIN]     ;check for SCL high    ;; 9C +2X \n\t&quot;</span> </div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_wait_scl_high \n\t&quot;</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;     <span class="stringliteral">&quot; brmi     _Li2c_read_return       ;return if timeout     ;; 10C + 2X\n\t&quot;</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;     <span class="stringliteral">&quot; clc                  ;clear carry flag      ;; 11C + 2X\n\t&quot;</span> </div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;     <span class="stringliteral">&quot; sbic %[SDAIN],%[SDAPIN]  ;if SDA is high        ;; 11C + 2X\n\t&quot;</span> </div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;     <span class="stringliteral">&quot; sec                  ;set carry flag        ;; 12C + 2X\n\t&quot;</span> </div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;     <span class="stringliteral">&quot; rol  r23             ;store bit             ;; 13C + 2X\n\t&quot;</span> </div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;     <span class="stringliteral">&quot; brcc _Li2c_read_bit          ;while receiv reg not full \n\t&quot;</span></div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;     <span class="stringliteral">&quot;                         ;; 15C + 2X for one bit loop \n\t&quot;</span> </div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;     </div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;     <span class="stringliteral">&quot;_Li2c_put_ack: \n\t&quot;</span> </div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;     <span class="stringliteral">&quot; sbi  %[SCLDDR],%[SCLPIN] ;force SCL low         ;; 2C \n\t&quot;</span> </div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;     <span class="stringliteral">&quot; cpi  r24,0                                          ;; 3C \n\t&quot;</span> </div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;     <span class="stringliteral">&quot; breq _Li2c_put_ack_low   ;if (ack=0) ;; 5C \n\t&quot;</span> </div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;     <span class="stringliteral">&quot; cbi  %[SDADDR],%[SDAPIN] ;release SDA \n\t&quot;</span> </div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;     <span class="stringliteral">&quot; rjmp _Li2c_put_ack_high \n\t&quot;</span> </div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;     <span class="stringliteral">&quot;_Li2c_put_ack_low:                ;else \n\t&quot;</span> </div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;     <span class="stringliteral">&quot; sbi  %[SDADDR],%[SDAPIN] ;force SDA low         ;; 7C \n\t&quot;</span> </div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;     <span class="stringliteral">&quot;_Li2c_put_ack_high: \n\t&quot;</span> </div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;     <span class="stringliteral">&quot; nop \n\t &quot;</span></div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;     <span class="stringliteral">&quot; nop \n\t &quot;</span></div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;     <span class="stringliteral">&quot; nop \n\t &quot;</span></div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> &gt;= 1</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half  ;delay T/2             ;; 7C + X \n\t&quot;</span> </div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;#endif</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;     <span class="stringliteral">&quot; cbi  %[SCLDDR],%[SCLPIN] ;release SCL           ;; 9C +X \n\t&quot;</span> </div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;     <span class="stringliteral">&quot; cln                              ;clear N               ;; +1 = 10C\n\t&quot;</span></div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;     <span class="stringliteral">&quot; nop \n\t &quot;</span></div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;     <span class="stringliteral">&quot; nop \n\t &quot;</span></div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;     <span class="stringliteral">&quot; sbis %[SCLIN],%[SCLPIN]  ;wait SCL high         ;; 12C + X\n\t&quot;</span> </div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_wait_scl_high \n\t&quot;</span></div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;#<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> &gt;= 1</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;     <span class="stringliteral">&quot; rcall    ass_i2c_delay_half  ;delay T/2             ;; 11C + 2X\n\t&quot;</span> </div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;#endif</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;     <span class="stringliteral">&quot;_Li2c_read_return: \n\t&quot;</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;     <span class="stringliteral">&quot; nop \n\t &quot;</span></div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;     <span class="stringliteral">&quot; nop \n\t &quot;</span></div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;     <span class="stringliteral">&quot;sbi   %[SCLDDR],%[SCLPIN] ;force SCL low so SCL=H is short\n\t&quot;</span></div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;     <span class="stringliteral">&quot; mov  r24,r23                                        ;; 12C + 2X \n\t&quot;</span></div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;     <span class="stringliteral">&quot; clr  r25                                            ;; 13 C + 2X\n\t&quot;</span></div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;     <span class="stringliteral">&quot; ret                                                     ;; 17C + X&quot;</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;     ::</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;      [SCLDDR] <span class="stringliteral">&quot;I&quot;</span>  (<a class="code" href="_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b">SCL_DDR</a>), [SCLPIN] <span class="stringliteral">&quot;I&quot;</span> (SCL_PIN), [SCLIN] <span class="stringliteral">&quot;I&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>),</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;      [SDADDR] <span class="stringliteral">&quot;I&quot;</span>  (<a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>), [SDAPIN] <span class="stringliteral">&quot;I&quot;</span> (SDA_PIN), [SDAIN] <span class="stringliteral">&quot;I&quot;</span> (<a class="code" href="_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83">SDA_IN</a>) </div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;     ); </div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;  <span class="keywordflow">return</span> <span class="charliteral">&#39; &#39;</span>; <span class="comment">// fool the compiler!</span></div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;}</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_soft_i2_c_master_8h.html">SoftI2CMaster.h</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..aa358edcdf99f0f32108a8d562c85eedb11a9f68
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp.html
@@ -0,0 +1,485 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_MBED/algorithm/algorithm.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('algorithm_8cpp.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">algorithm.cpp File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="algorithm_8h_source.html">algorithm.h</a>&quot;</code><br/>
+<code>#include &quot;mbed.h&quot;</code><br/>
+</div>
+<p><a href="algorithm_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a62050365673e666cd0d661a3664c26e6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6">maxim_heart_rate_and_oxygen_saturation</a> (uint32_t *pun_ir_buffer, int32_t <a class="el" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, int32_t *pn_heart_rate, int8_t *pch_hr_valid)</td></tr>
+<tr class="memdesc:a62050365673e666cd0d661a3664c26e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the heart rate and SpO2 level.  <a href="#a62050365673e666cd0d661a3664c26e6"></a><br/></td></tr>
+<tr class="separator:a62050365673e666cd0d661a3664c26e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2a4e5ddbe0e04c48b166f2ff176667a9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9">maxim_find_peaks</a> (int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num)</td></tr>
+<tr class="memdesc:a2a4e5ddbe0e04c48b166f2ff176667a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find peaks.  <a href="#a2a4e5ddbe0e04c48b166f2ff176667a9"></a><br/></td></tr>
+<tr class="separator:a2a4e5ddbe0e04c48b166f2ff176667a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aab95338e44281c269f0b9b0f529741bf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf">maxim_peaks_above_min_height</a> (int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height)</td></tr>
+<tr class="memdesc:aab95338e44281c269f0b9b0f529741bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find peaks above n_min_height.  <a href="#aab95338e44281c269f0b9b0f529741bf"></a><br/></td></tr>
+<tr class="separator:aab95338e44281c269f0b9b0f529741bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adc6be68be81530d67a25c1a9905bec3a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a">maxim_remove_close_peaks</a> (int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance)</td></tr>
+<tr class="memdesc:adc6be68be81530d67a25c1a9905bec3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove peaks.  <a href="#adc6be68be81530d67a25c1a9905bec3a"></a><br/></td></tr>
+<tr class="separator:adc6be68be81530d67a25c1a9905bec3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6cae46e51640b712afc2ebeefd2d51ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff">maxim_sort_ascend</a> (int32_t *pn_x, int32_t n_size)</td></tr>
+<tr class="memdesc:a6cae46e51640b712afc2ebeefd2d51ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sort array.  <a href="#a6cae46e51640b712afc2ebeefd2d51ff"></a><br/></td></tr>
+<tr class="separator:a6cae46e51640b712afc2ebeefd2d51ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a44b6312f81810d4deb64071d12ab0060"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060">maxim_sort_indices_descend</a> (int32_t *pn_x, int32_t *pn_indx, int32_t n_size)</td></tr>
+<tr class="memdesc:a44b6312f81810d4deb64071d12ab0060"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sort indices.  <a href="#a44b6312f81810d4deb64071d12ab0060"></a><br/></td></tr>
+<tr class="separator:a44b6312f81810d4deb64071d12ab0060"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><hr/>
+<p>Project: MAXREFDES117# Filename: <a class="el" href="algorithm_8cpp.html">algorithm.cpp</a> Description: This module calculates the heart rate/SpO2 level <hr/>
+<p>This code follows the following naming conventions:</p>
+<p>char ch_pmod_value char (array) s_pmod_s_string[16] float f_pmod_value int32_t n_pmod_value int32_t (array) an_pmod_value[16] int16_t w_pmod_value int16_t (array) aw_pmod_value[16] uint16_t uw_pmod_value uint16_t (array) auw_pmod_value[16] uint8_t uch_pmod_value uint8_t (array) auch_pmod_buffer[16] uint32_t un_pmod_value int32_t * pn_pmod_value <hr/>
+
+<p>Definition in file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p>
+</div><h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a2a4e5ddbe0e04c48b166f2ff176667a9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void maxim_find_peaks </td>
+          <td>(</td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_locs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_npks</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_min_height</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_min_distance</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_max_num</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Find peaks. </p>
+<dl class="section user"><dt>Details</dt><dd>Find at most MAX_NUM peaks above MIN_HEIGHT separated by at least MIN_DISTANCE</dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00254">254</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a62050365673e666cd0d661a3664c26e6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void maxim_heart_rate_and_oxygen_saturation </td>
+          <td>(</td>
+          <td class="paramtype">uint32_t *&#160;</td>
+          <td class="paramname"><em>pun_ir_buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_ir_buffer_length</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint32_t *&#160;</td>
+          <td class="paramname"><em>pun_red_buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_spo2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int8_t *&#160;</td>
+          <td class="paramname"><em>pch_spo2_valid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_heart_rate</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int8_t *&#160;</td>
+          <td class="paramname"><em>pch_hr_valid</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Calculate the heart rate and SpO2 level. </p>
+<dl class="section user"><dt>Details</dt><dd>By detecting peaks of PPG cycle and corresponding AC/DC of red/infra-red signal, the ratio for the SPO2 is computed. Since this algorithm is aiming for Arm M0/M3. formaula for SPO2 did not achieve the accuracy due to register overflow. Thus, accurate SPO2 is precalculated and save longo uch_spo2_table[] per each ratio.</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">*pun_ir_buffer</td><td>- IR sensor data buffer </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">n_ir_buffer_length</td><td>- IR sensor data buffer length </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">*pun_red_buffer</td><td>- Red sensor data buffer </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pn_spo2</td><td>- Calculated SpO2 value </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pch_spo2_valid</td><td>- 1 if the calculated SpO2 value is valid </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pn_heart_rate</td><td>- Calculated heart rate value </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pch_hr_valid</td><td>- 1 if the calculated heart rate value is valid</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00062">62</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aab95338e44281c269f0b9b0f529741bf"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void maxim_peaks_above_min_height </td>
+          <td>(</td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_locs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_npks</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_min_height</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Find peaks above n_min_height. </p>
+<dl class="section user"><dt>Details</dt><dd>Find all peaks above MIN_HEIGHT</dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00268">268</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adc6be68be81530d67a25c1a9905bec3a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void maxim_remove_close_peaks </td>
+          <td>(</td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_locs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_npks</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_min_distance</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Remove peaks. </p>
+<dl class="section user"><dt>Details</dt><dd>Remove peaks separated by less than MIN_DISTANCE</dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00299">299</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6cae46e51640b712afc2ebeefd2d51ff"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void maxim_sort_ascend </td>
+          <td>(</td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_size</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sort array. </p>
+<dl class="section user"><dt>Details</dt><dd>Sort array in ascending order (insertion sort algorithm)</dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00328">328</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a44b6312f81810d4deb64071d12ab0060"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void maxim_sort_indices_descend </td>
+          <td>(</td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_indx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_size</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sort indices. </p>
+<dl class="section user"><dt>Details</dt><dd>Sort indices according to descending order (insertion sort algorithm)</dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00346">346</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_19b53f07f52837a342947cc20e6d978f.html">algorithm</a></li><li class="navelem"><a class="el" href="algorithm_8cpp.html">algorithm.cpp</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp.js
new file mode 100644
index 0000000000000000000000000000000000000000..75ef92fa18e54ff44084f1a7e4fed5cfb01f1678
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp.js
@@ -0,0 +1,9 @@
+var algorithm_8cpp =
+[
+    [ "maxim_find_peaks", "algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9", null ],
+    [ "maxim_heart_rate_and_oxygen_saturation", "algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6", null ],
+    [ "maxim_peaks_above_min_height", "algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf", null ],
+    [ "maxim_remove_close_peaks", "algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a", null ],
+    [ "maxim_sort_ascend", "algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff", null ],
+    [ "maxim_sort_indices_descend", "algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060", null ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..14c4cce0fef1c417b340a94641b01d213e9567ff
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp_source.html
@@ -0,0 +1,406 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_MBED/algorithm/algorithm.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('algorithm_8cpp_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">algorithm.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="algorithm_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">/*******************************************************************************</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">* copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">* to deal in the Software without restriction, including without limitation</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">* The above copyright notice and this permission notice shall be included</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">* in all copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">* THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">* Products, Inc. Branding Policy.</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment">* The mere transfer of this software does not imply any licenses</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">* ownership rights.</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">*******************************************************************************</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">*/</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="algorithm_8h.html">algorithm.h</a>&quot;</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#include &quot;mbed.h&quot;</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a62050365673e666cd0d661a3664c26e6">   62</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6" title="Calculate the heart rate and SpO2 level.">maxim_heart_rate_and_oxygen_saturation</a>(uint32_t *pun_ir_buffer,  int32_t <a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, </div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;                              int32_t *pn_heart_rate, int8_t  *pch_hr_valid)</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;{</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    uint32_t un_ir_mean ,un_only_once ;</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    int32_t k ,n_i_ratio_count;</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    int32_t i, s, m, n_exact_ir_valley_locs_count ,n_middle_idx;</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    int32_t n_th1, n_npks,n_c_min;      </div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    int32_t an_ir_valley_locs[15] ;</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    int32_t an_exact_ir_valley_locs[15] ;</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    int32_t an_dx_peak_locs[15] ;</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    int32_t n_peak_interval_sum;</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    </div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    int32_t n_y_ac, n_x_ac;</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    int32_t n_spo2_calc; </div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    int32_t n_y_dc_max, n_x_dc_max; </div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    int32_t n_y_dc_max_idx, n_x_dc_max_idx; </div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    int32_t an_ratio[5],n_ratio_average; </div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    int32_t n_nume,  n_denom ;</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="comment">// remove DC of ir signal    </span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    un_ir_mean =0; </div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    <span class="keywordflow">for</span> (k=0 ; k&lt;<a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a> ; k++ ) un_ir_mean += pun_ir_buffer[k] ;</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    un_ir_mean =un_ir_mean/<a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a> ;</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keywordflow">for</span> (k=0 ; k&lt;<a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a> ; k++ )  an_x[k] =  pun_ir_buffer[k] - un_ir_mean ; </div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    </div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="comment">// 4 pt Moving Average</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="keywordflow">for</span>(k=0; k&lt; <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-<a class="code" href="algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae">MA4_SIZE</a>; k++){</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;        n_denom= ( an_x[k]+an_x[k+1]+ an_x[k+2]+ an_x[k+3]);</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;        an_x[k]=  n_denom/(int32_t)4; </div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    }</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="comment">// get difference of smoothed IR signal</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    </div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keywordflow">for</span>( k=0; k&lt;<a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-MA4_SIZE-1;  k++)</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;        an_dx[k]= (an_x[k+1]- an_x[k]);</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="comment">// 2-pt Moving Average to an_dx</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keywordflow">for</span>(k=0; k&lt; <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-MA4_SIZE-2; k++){</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        an_dx[k] =  ( an_dx[k]+an_dx[k+1])/2 ;</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    }</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    </div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <span class="comment">// hamming window</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="comment">// flip wave form so that we can detect valley with peak detector</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <span class="keywordflow">for</span> ( i=0 ; i&lt;<a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-<a class="code" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">HAMMING_SIZE</a>-MA4_SIZE-2 ;i++){</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        s= 0;</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        <span class="keywordflow">for</span>( k=i; k&lt;i+ <a class="code" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">HAMMING_SIZE</a> ;k++){</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;            s -= an_dx[k] *<a class="code" href="algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929">auw_hamm</a>[k-i] ; </div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;                     }</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        an_dx[i]= s/ (int32_t)1146; <span class="comment">// divide by sum of auw_hamm </span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    }</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160; </div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    n_th1=0; <span class="comment">// threshold calculation</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="keywordflow">for</span> ( k=0 ; k&lt;<a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-<a class="code" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">HAMMING_SIZE</a> ;k++){</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        n_th1 += ((an_dx[k]&gt;0)? an_dx[k] : ((int32_t)0-an_dx[k])) ;</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    }</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    n_th1= n_th1/ ( <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-<a class="code" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">HAMMING_SIZE</a>);</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    <span class="comment">// peak location is acutally index for sharpest location of raw signal since we flipped the signal         </span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <a class="code" href="algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9" title="Find peaks.">maxim_find_peaks</a>( an_dx_peak_locs, &amp;n_npks, an_dx, <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-HAMMING_SIZE, n_th1, 8, 5 );<span class="comment">//peak_height, peak_distance, max_num_peaks </span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    n_peak_interval_sum =0;</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="keywordflow">if</span> (n_npks&gt;=2){</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        <span class="keywordflow">for</span> (k=1; k&lt;n_npks; k++)</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;            n_peak_interval_sum += (an_dx_peak_locs[k]-an_dx_peak_locs[k -1]);</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        n_peak_interval_sum=n_peak_interval_sum/(n_npks-1);</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;        *pn_heart_rate=(int32_t)(6000/n_peak_interval_sum);<span class="comment">// beats per minutes</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        *pch_hr_valid  = 1;</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    }</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="keywordflow">else</span>  {</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        *pn_heart_rate = -999;</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        *pch_hr_valid  = 0;</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    }</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;            </div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    <span class="keywordflow">for</span> ( k=0 ; k&lt;n_npks ;k++)</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;        an_ir_valley_locs[k]=an_dx_peak_locs[k]+HAMMING_SIZE/2; </div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <span class="comment">// raw value : RED(=y) and IR(=X)</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="comment">// we need to assess DC and AC value of ir and red PPG. </span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <span class="keywordflow">for</span> (k=0 ; k&lt;<a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a> ; k++ )  {</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        an_x[k] =  pun_ir_buffer[k] ; </div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        an_y[k] =  pun_red_buffer[k] ; </div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    }</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <span class="comment">// find precise min near an_ir_valley_locs</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    n_exact_ir_valley_locs_count =0; </div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    <span class="keywordflow">for</span>(k=0 ; k&lt;n_npks ;k++){</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;        un_only_once =1;</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        m=an_ir_valley_locs[k];</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        n_c_min= 16777216;<span class="comment">//2^24;</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;        <span class="keywordflow">if</span> (m+5 &lt;  <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-HAMMING_SIZE  &amp;&amp; m-5 &gt;0){</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;            <span class="keywordflow">for</span>(i= m-5;i&lt;m+5; i++)</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;                <span class="keywordflow">if</span> (an_x[i]&lt;n_c_min){</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;                    <span class="keywordflow">if</span> (un_only_once &gt;0){</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;                       un_only_once =0;</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;                   } </div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;                   n_c_min= an_x[i] ;</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;                   an_exact_ir_valley_locs[k]=i;</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;                }</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;            <span class="keywordflow">if</span> (un_only_once ==0)</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;                n_exact_ir_valley_locs_count ++ ;</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;        }</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    }</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    <span class="keywordflow">if</span> (n_exact_ir_valley_locs_count &lt;2 ){</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;       *pn_spo2 =  -999 ; <span class="comment">// do not use SPO2 since signal ratio is out of range</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;       *pch_spo2_valid  = 0; </div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    }</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    <span class="comment">// 4 pt MA</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <span class="keywordflow">for</span>(k=0; k&lt; <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-<a class="code" href="algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae">MA4_SIZE</a>; k++){</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        an_x[k]=( an_x[k]+an_x[k+1]+ an_x[k+2]+ an_x[k+3])/(int32_t)4;</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;        an_y[k]=( an_y[k]+an_y[k+1]+ an_y[k+2]+ an_y[k+3])/(int32_t)4;</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    }</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <span class="comment">//using an_exact_ir_valley_locs , find ir-red DC andir-red AC for SPO2 calibration ratio</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    <span class="comment">//finding AC/DC maximum of raw ir * red between two valley locations</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    n_ratio_average =0; </div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    n_i_ratio_count =0; </div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    </div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    <span class="keywordflow">for</span>(k=0; k&lt; 5; k++) an_ratio[k]=0;</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    <span class="keywordflow">for</span> (k=0; k&lt; n_exact_ir_valley_locs_count; k++){</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;        <span class="keywordflow">if</span> (an_exact_ir_valley_locs[k] &gt; <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a> ){             </div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;            *pn_spo2 =  -999 ; <span class="comment">// do not use SPO2 since valley loc is out of range</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;            *pch_spo2_valid  = 0; </div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;            <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;        }</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    }</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <span class="comment">// find max between two valley locations </span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <span class="comment">// and use ratio betwen AC compoent of Ir &amp; Red and DC compoent of Ir &amp; Red for SPO2 </span></div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="keywordflow">for</span> (k=0; k&lt; n_exact_ir_valley_locs_count-1; k++){</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;        n_y_dc_max= -16777216 ; </div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;        n_x_dc_max= - 16777216; </div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;        <span class="keywordflow">if</span> (an_exact_ir_valley_locs[k+1]-an_exact_ir_valley_locs[k] &gt;10){</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;            <span class="keywordflow">for</span> (i=an_exact_ir_valley_locs[k]; i&lt; an_exact_ir_valley_locs[k+1]; i++){</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;                <span class="keywordflow">if</span> (an_x[i]&gt; n_x_dc_max) {n_x_dc_max =an_x[i];n_x_dc_max_idx =i; }</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;                <span class="keywordflow">if</span> (an_y[i]&gt; n_y_dc_max) {n_y_dc_max =an_y[i];n_y_dc_max_idx=i;}</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;            }</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;            n_y_ac= (an_y[an_exact_ir_valley_locs[k+1]] - an_y[an_exact_ir_valley_locs[k] ] )*(n_y_dc_max_idx -an_exact_ir_valley_locs[k]); <span class="comment">//red</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;            n_y_ac=  an_y[an_exact_ir_valley_locs[k]] + n_y_ac/ (an_exact_ir_valley_locs[k+1] - an_exact_ir_valley_locs[k])  ; </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;        </div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;        </div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;            n_y_ac=  an_y[n_y_dc_max_idx] - n_y_ac;    <span class="comment">// subracting linear DC compoenents from raw </span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;            n_x_ac= (an_x[an_exact_ir_valley_locs[k+1]] - an_x[an_exact_ir_valley_locs[k] ] )*(n_x_dc_max_idx -an_exact_ir_valley_locs[k]); <span class="comment">// ir</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;            n_x_ac=  an_x[an_exact_ir_valley_locs[k]] + n_x_ac/ (an_exact_ir_valley_locs[k+1] - an_exact_ir_valley_locs[k]); </div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;            n_x_ac=  an_x[n_y_dc_max_idx] - n_x_ac;      <span class="comment">// subracting linear DC compoenents from raw </span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;            n_nume=( n_y_ac *n_x_dc_max)&gt;&gt;7 ; <span class="comment">//prepare X100 to preserve floating value</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;            n_denom= ( n_x_ac *n_y_dc_max)&gt;&gt;7;</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;            <span class="keywordflow">if</span> (n_denom&gt;0  &amp;&amp; n_i_ratio_count &lt;5 &amp;&amp;  n_nume != 0)</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;            {   </div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;                an_ratio[n_i_ratio_count]= (n_nume*100)/n_denom ; <span class="comment">//formular is ( n_y_ac *n_x_dc_max) / ( n_x_ac *n_y_dc_max) ;</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;                n_i_ratio_count++;</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;            }</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        }</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    }</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <a class="code" href="algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff" title="Sort array.">maxim_sort_ascend</a>(an_ratio, n_i_ratio_count);</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    n_middle_idx= n_i_ratio_count/2;</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    <span class="keywordflow">if</span> (n_middle_idx &gt;1)</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        n_ratio_average =( an_ratio[n_middle_idx-1] +an_ratio[n_middle_idx])/2; <span class="comment">// use median</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        n_ratio_average = an_ratio[n_middle_idx ];</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    <span class="keywordflow">if</span>( n_ratio_average&gt;2 &amp;&amp; n_ratio_average &lt;184){</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        n_spo2_calc= <a class="code" href="algorithm_8h.html#adfeeb6b08271807492803acc50347108">uch_spo2_table</a>[n_ratio_average] ;</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;        *pn_spo2 = n_spo2_calc ;</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;        *pch_spo2_valid  = 1;<span class="comment">//  float_SPO2 =  -45.060*n_ratio_average* n_ratio_average/10000 + 30.354 *n_ratio_average/100 + 94.845 ;  // for comparison with table</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    }</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    <span class="keywordflow">else</span>{</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;        *pn_spo2 =  -999 ; <span class="comment">// do not use SPO2 since signal ratio is out of range</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        *pch_spo2_valid  = 0; </div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    }</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;}</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;</div>
+<div class="line"><a name="l00254"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9">  254</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9" title="Find peaks.">maxim_find_peaks</a>(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num)</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;{</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    <a class="code" href="algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf" title="Find peaks above n_min_height.">maxim_peaks_above_min_height</a>( pn_locs, pn_npks, pn_x, n_size, n_min_height );</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    <a class="code" href="algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a" title="Remove peaks.">maxim_remove_close_peaks</a>( pn_locs, pn_npks, pn_x, n_min_distance );</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    *pn_npks = <a class="code" href="algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384">min</a>( *pn_npks, n_max_num );</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;}</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div>
+<div class="line"><a name="l00268"></a><span class="lineno"><a class="code" href="algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf">  268</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf" title="Find peaks above n_min_height.">maxim_peaks_above_min_height</a>(int32_t *pn_locs, int32_t *pn_npks, int32_t  *pn_x, int32_t n_size, int32_t n_min_height)</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;{</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    int32_t i = 1, n_width;</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    *pn_npks = 0;</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    </div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    <span class="keywordflow">while</span> (i &lt; n_size-1){</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;        <span class="keywordflow">if</span> (pn_x[i] &gt; n_min_height &amp;&amp; pn_x[i] &gt; pn_x[i-1]){            <span class="comment">// find left edge of potential peaks</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;            n_width = 1;</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;            <span class="keywordflow">while</span> (i+n_width &lt; n_size &amp;&amp; pn_x[i] == pn_x[i+n_width])    <span class="comment">// find flat peaks</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;                n_width++;</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;            <span class="keywordflow">if</span> (pn_x[i] &gt; pn_x[i+n_width] &amp;&amp; (*pn_npks) &lt; 15 ){                            <span class="comment">// find right edge of peaks</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;                pn_locs[(*pn_npks)++] = i;        </div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;                <span class="comment">// for flat peaks, peak location is left edge</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;                i += n_width+1;</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;            }</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;            <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;                i += n_width;</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;        }</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;        <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;            i++;</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    }</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;}</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;</div>
+<div class="line"><a name="l00299"></a><span class="lineno"><a class="code" href="algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a">  299</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a" title="Remove peaks.">maxim_remove_close_peaks</a>(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance)</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;{</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    </div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    int32_t i, j, n_old_npks, n_dist;</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    </div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    <span class="comment">/* Order peaks from large to small */</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    <a class="code" href="algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060" title="Sort indices.">maxim_sort_indices_descend</a>( pn_x, pn_locs, *pn_npks );</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    <span class="keywordflow">for</span> ( i = -1; i &lt; *pn_npks; i++ ){</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;        n_old_npks = *pn_npks;</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;        *pn_npks = i+1;</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;        <span class="keywordflow">for</span> ( j = i+1; j &lt; n_old_npks; j++ ){</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;            n_dist =  pn_locs[j] - ( i == -1 ? -1 : pn_locs[i] ); <span class="comment">// lag-zero peak of autocorr is at index -1</span></div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;            <span class="keywordflow">if</span> ( n_dist &gt; n_min_distance || n_dist &lt; -n_min_distance )</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;                pn_locs[(*pn_npks)++] = pn_locs[j];</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;        }</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    }</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    <span class="comment">// Resort indices longo ascending order</span></div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;    <a class="code" href="algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff" title="Sort array.">maxim_sort_ascend</a>( pn_locs, *pn_npks );</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;}</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;</div>
+<div class="line"><a name="l00328"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff">  328</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff" title="Sort array.">maxim_sort_ascend</a>(int32_t *pn_x,int32_t n_size) </div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;{</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    int32_t i, j, n_temp;</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    <span class="keywordflow">for</span> (i = 1; i &lt; n_size; i++) {</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        n_temp = pn_x[i];</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        <span class="keywordflow">for</span> (j = i; j &gt; 0 &amp;&amp; n_temp &lt; pn_x[j-1]; j--)</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;            pn_x[j] = pn_x[j-1];</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;        pn_x[j] = n_temp;</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    }</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;}</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;</div>
+<div class="line"><a name="l00346"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060">  346</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060" title="Sort indices.">maxim_sort_indices_descend</a>(int32_t *pn_x, int32_t *pn_indx, int32_t n_size)</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;{</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    int32_t i, j, n_temp;</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    <span class="keywordflow">for</span> (i = 1; i &lt; n_size; i++) {</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;        n_temp = pn_indx[i];</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;        <span class="keywordflow">for</span> (j = i; j &gt; 0 &amp;&amp; pn_x[n_temp] &gt; pn_x[pn_indx[j-1]]; j--)</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;            pn_indx[j] = pn_indx[j-1];</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;        pn_indx[j] = n_temp;</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    }</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;}</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;</div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_19b53f07f52837a342947cc20e6d978f.html">algorithm</a></li><li class="navelem"><a class="el" href="algorithm_8cpp.html">algorithm.cpp</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h.html
new file mode 100644
index 0000000000000000000000000000000000000000..1d4d38cdbc7799eb12941f6d3cdba692b4b0c852
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h.html
@@ -0,0 +1,694 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_MBED/algorithm/algorithm.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('algorithm_8h.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Macros</a> &#124;
+<a href="#func-members">Functions</a> &#124;
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">algorithm.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;mbed.h&quot;</code><br/>
+</div>
+<p><a href="algorithm_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a41f9c5fb8b08eb5dc3edce4dcb37fee7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:a41f9c5fb8b08eb5dc3edce4dcb37fee7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a65e9886d74aaee76545e83dd09011727"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:a65e9886d74aaee76545e83dd09011727"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a30588c5eca7c9cb6ebba02a0236f0119"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119">FS</a>&#160;&#160;&#160;100</td></tr>
+<tr class="separator:a30588c5eca7c9cb6ebba02a0236f0119"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6b20d41d6252e9871430c242cb1a56e7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>&#160;&#160;&#160;(<a class="el" href="algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119">FS</a>* 5)</td></tr>
+<tr class="separator:a6b20d41d6252e9871430c242cb1a56e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa03906cc2e2d27ef4f3fa4db4312b524"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524">HR_FIFO_SIZE</a>&#160;&#160;&#160;7</td></tr>
+<tr class="separator:aa03906cc2e2d27ef4f3fa4db4312b524"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af8c3cbac49a22022b17cc7b34d42cbae"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae">MA4_SIZE</a>&#160;&#160;&#160;4</td></tr>
+<tr class="separator:af8c3cbac49a22022b17cc7b34d42cbae"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a35be9e52c9110f5d91a4064e2f7b73c8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">HAMMING_SIZE</a>&#160;&#160;&#160;5</td></tr>
+<tr class="separator:a35be9e52c9110f5d91a4064e2f7b73c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abb702d8b501669a23aa0ab3b281b9384"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384">min</a>(x, y)&#160;&#160;&#160;((x) &lt; (y) ? (x) : (y))</td></tr>
+<tr class="separator:abb702d8b501669a23aa0ab3b281b9384"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a62050365673e666cd0d661a3664c26e6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a62050365673e666cd0d661a3664c26e6">maxim_heart_rate_and_oxygen_saturation</a> (uint32_t *pun_ir_buffer, int32_t <a class="el" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, int32_t *pn_heart_rate, int8_t *pch_hr_valid)</td></tr>
+<tr class="memdesc:a62050365673e666cd0d661a3664c26e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the heart rate and SpO2 level.  <a href="#a62050365673e666cd0d661a3664c26e6"></a><br/></td></tr>
+<tr class="separator:a62050365673e666cd0d661a3664c26e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2a4e5ddbe0e04c48b166f2ff176667a9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9">maxim_find_peaks</a> (int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num)</td></tr>
+<tr class="memdesc:a2a4e5ddbe0e04c48b166f2ff176667a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find peaks.  <a href="#a2a4e5ddbe0e04c48b166f2ff176667a9"></a><br/></td></tr>
+<tr class="separator:a2a4e5ddbe0e04c48b166f2ff176667a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aab95338e44281c269f0b9b0f529741bf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf">maxim_peaks_above_min_height</a> (int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height)</td></tr>
+<tr class="memdesc:aab95338e44281c269f0b9b0f529741bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find peaks above n_min_height.  <a href="#aab95338e44281c269f0b9b0f529741bf"></a><br/></td></tr>
+<tr class="separator:aab95338e44281c269f0b9b0f529741bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adc6be68be81530d67a25c1a9905bec3a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a">maxim_remove_close_peaks</a> (int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance)</td></tr>
+<tr class="memdesc:adc6be68be81530d67a25c1a9905bec3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove peaks.  <a href="#adc6be68be81530d67a25c1a9905bec3a"></a><br/></td></tr>
+<tr class="separator:adc6be68be81530d67a25c1a9905bec3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6cae46e51640b712afc2ebeefd2d51ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff">maxim_sort_ascend</a> (int32_t *pn_x, int32_t n_size)</td></tr>
+<tr class="memdesc:a6cae46e51640b712afc2ebeefd2d51ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sort array.  <a href="#a6cae46e51640b712afc2ebeefd2d51ff"></a><br/></td></tr>
+<tr class="separator:a6cae46e51640b712afc2ebeefd2d51ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a44b6312f81810d4deb64071d12ab0060"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060">maxim_sort_indices_descend</a> (int32_t *pn_x, int32_t *pn_indx, int32_t n_size)</td></tr>
+<tr class="memdesc:a44b6312f81810d4deb64071d12ab0060"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sort indices.  <a href="#a44b6312f81810d4deb64071d12ab0060"></a><br/></td></tr>
+<tr class="separator:a44b6312f81810d4deb64071d12ab0060"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a1c25ffb675bce0db6a32fbf6ad514929"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929">auw_hamm</a> [31] ={ 41, 276, 512, 276, 41 }</td></tr>
+<tr class="separator:a1c25ffb675bce0db6a32fbf6ad514929"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adfeeb6b08271807492803acc50347108"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#adfeeb6b08271807492803acc50347108">uch_spo2_table</a> [184]</td></tr>
+<tr class="separator:adfeeb6b08271807492803acc50347108"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><pre class="fragment">******************************************************
+</pre><p>Project: MAXREFDES117# Filename: <a class="el" href="algorithm_8h.html">algorithm.h</a> Description: This module is the heart rate/SpO2 calculation algorithm header file</p>
+<p>Revision History: <br/>
+ 1-18-2016 Rev 01.00 SK Initial release. <br/>
+ <hr/>
+<p>This code follows the following naming conventions:</p>
+<p><br/>
+ char ch_pmod_value <br/>
+ char (array) s_pmod_s_string[16] <br/>
+ float f_pmod_value <br/>
+ int32_t n_pmod_value <br/>
+ int32_t (array) an_pmod_value[16] <br/>
+ int16_t w_pmod_value <br/>
+ int16_t (array) aw_pmod_value[16] <br/>
+ uint16_t uw_pmod_value <br/>
+ uint16_t (array) auw_pmod_value[16] <br/>
+ uint8_t uch_pmod_value <br/>
+ uint8_t (array) auch_pmod_buffer[16] <br/>
+ uint32_t un_pmod_value <br/>
+ int32_t * pn_pmod_value <hr/>
+
+<p>Definition in file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p>
+</div><h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="a6b20d41d6252e9871430c242cb1a56e7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define BUFFER_SIZE&#160;&#160;&#160;(<a class="el" href="algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119">FS</a>* 5)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00070">70</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a65e9886d74aaee76545e83dd09011727"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define false&#160;&#160;&#160;0</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00068">68</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a30588c5eca7c9cb6ebba02a0236f0119"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define FS&#160;&#160;&#160;100</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00069">69</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a35be9e52c9110f5d91a4064e2f7b73c8"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define HAMMING_SIZE&#160;&#160;&#160;5</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00073">73</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa03906cc2e2d27ef4f3fa4db4312b524"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define HR_FIFO_SIZE&#160;&#160;&#160;7</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00071">71</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af8c3cbac49a22022b17cc7b34d42cbae"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define MA4_SIZE&#160;&#160;&#160;4</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00072">72</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abb702d8b501669a23aa0ab3b281b9384"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define min</td>
+          <td>(</td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname">x, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname">y&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td>&#160;&#160;&#160;((x) &lt; (y) ? (x) : (y))</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00074">74</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a41f9c5fb8b08eb5dc3edce4dcb37fee7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define true&#160;&#160;&#160;1</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00067">67</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a2a4e5ddbe0e04c48b166f2ff176667a9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void maxim_find_peaks </td>
+          <td>(</td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_locs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_npks</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_min_height</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_min_distance</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_max_num</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Find peaks. </p>
+<dl class="section user"><dt>Details</dt><dd>Find at most MAX_NUM peaks above MIN_HEIGHT separated by at least MIN_DISTANCE</dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00254">254</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a62050365673e666cd0d661a3664c26e6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void maxim_heart_rate_and_oxygen_saturation </td>
+          <td>(</td>
+          <td class="paramtype">uint32_t *&#160;</td>
+          <td class="paramname"><em>pun_ir_buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_ir_buffer_length</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint32_t *&#160;</td>
+          <td class="paramname"><em>pun_red_buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_spo2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int8_t *&#160;</td>
+          <td class="paramname"><em>pch_spo2_valid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_heart_rate</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int8_t *&#160;</td>
+          <td class="paramname"><em>pch_hr_valid</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Calculate the heart rate and SpO2 level. </p>
+<dl class="section user"><dt>Details</dt><dd>By detecting peaks of PPG cycle and corresponding AC/DC of red/infra-red signal, the ratio for the SPO2 is computed. Since this algorithm is aiming for Arm M0/M3. formaula for SPO2 did not achieve the accuracy due to register overflow. Thus, accurate SPO2 is precalculated and save longo uch_spo2_table[] per each ratio.</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">*pun_ir_buffer</td><td>- IR sensor data buffer </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">n_ir_buffer_length</td><td>- IR sensor data buffer length </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">*pun_red_buffer</td><td>- Red sensor data buffer </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pn_spo2</td><td>- Calculated SpO2 value </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pch_spo2_valid</td><td>- 1 if the calculated SpO2 value is valid </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pn_heart_rate</td><td>- Calculated heart rate value </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pch_hr_valid</td><td>- 1 if the calculated heart rate value is valid</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00062">62</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aab95338e44281c269f0b9b0f529741bf"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void maxim_peaks_above_min_height </td>
+          <td>(</td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_locs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_npks</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_min_height</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Find peaks above n_min_height. </p>
+<dl class="section user"><dt>Details</dt><dd>Find all peaks above MIN_HEIGHT</dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00268">268</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adc6be68be81530d67a25c1a9905bec3a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void maxim_remove_close_peaks </td>
+          <td>(</td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_locs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_npks</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_min_distance</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Remove peaks. </p>
+<dl class="section user"><dt>Details</dt><dd>Remove peaks separated by less than MIN_DISTANCE</dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00299">299</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6cae46e51640b712afc2ebeefd2d51ff"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void maxim_sort_ascend </td>
+          <td>(</td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_size</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sort array. </p>
+<dl class="section user"><dt>Details</dt><dd>Sort array in ascending order (insertion sort algorithm)</dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00328">328</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a44b6312f81810d4deb64071d12ab0060"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void maxim_sort_indices_descend </td>
+          <td>(</td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t *&#160;</td>
+          <td class="paramname"><em>pn_indx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>n_size</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sort indices. </p>
+<dl class="section user"><dt>Details</dt><dd>Sort indices according to descending order (insertion sort algorithm)</dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00346">346</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Variable Documentation</h2>
+<a class="anchor" id="a1c25ffb675bce0db6a32fbf6ad514929"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const uint16_t auw_hamm[31] ={ 41, 276, 512, 276, 41 }</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00076">76</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adfeeb6b08271807492803acc50347108"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const uint8_t uch_spo2_table[184]</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<b>Initial value:</b><div class="fragment"><div class="line">={ 95, 95, 95, 96, 96, 96, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 99, 99, 99, 99, </div>
+<div class="line">                            99, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, </div>
+<div class="line">                            100, 100, 100, 100, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98, 98, 98, 98, 97, 97, </div>
+<div class="line">                            97, 97, 96, 96, 96, 96, 95, 95, 95, 94, 94, 94, 93, 93, 93, 92, 92, 92, 91, 91, </div>
+<div class="line">                            90, 90, 89, 89, 89, 88, 88, 87, 87, 86, 86, 85, 85, 84, 84, 83, 82, 82, 81, 81, </div>
+<div class="line">                            80, 80, 79, 78, 78, 77, 76, 76, 75, 74, 74, 73, 72, 72, 71, 70, 69, 69, 68, 67, </div>
+<div class="line">                            66, 66, 65, 64, 63, 62, 62, 61, 60, 59, 58, 57, 56, 56, 55, 54, 53, 52, 51, 50, </div>
+<div class="line">                            49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 31, 30, 29, </div>
+<div class="line">                            28, 27, 26, 25, 23, 22, 21, 20, 19, 17, 16, 15, 14, 12, 11, 10, 9, 7, 6, 5, </div>
+<div class="line">                            3, 2, 1 }</div>
+</div><!-- fragment -->
+<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00078">78</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_19b53f07f52837a342947cc20e6d978f.html">algorithm</a></li><li class="navelem"><a class="el" href="algorithm_8h.html">algorithm.h</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h.js
new file mode 100644
index 0000000000000000000000000000000000000000..44c96bb301d40fce98ffecdd9fd538bb0c8ef44a
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h.js
@@ -0,0 +1,22 @@
+var algorithm_8h =
+[
+    [ "BUFFER_SIZE", "algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7", null ],
+    [ "false", "algorithm_8h.html#a65e9886d74aaee76545e83dd09011727", null ],
+    [ "FS", "algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119", null ],
+    [ "HAMMING_SIZE", "algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8", null ],
+    [ "HR_FIFO_SIZE", "algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524", null ],
+    [ "MA4_SIZE", "algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae", null ],
+    [ "min", "algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384", null ],
+    [ "true", "algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7", null ],
+    [ "maxim_find_peaks", "algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9", null ],
+    [ "maxim_heart_rate_and_oxygen_saturation", "algorithm_8h.html#a62050365673e666cd0d661a3664c26e6", null ],
+    [ "maxim_peaks_above_min_height", "algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf", null ],
+    [ "maxim_remove_close_peaks", "algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a", null ],
+    [ "maxim_sort_ascend", "algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff", null ],
+    [ "maxim_sort_indices_descend", "algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060", null ],
+    [ "an_dx", "algorithm_8h.html#aea73b3b76ec2f4743e97452ee93c9cd2", null ],
+    [ "an_x", "algorithm_8h.html#a7d4e0b0915b58092f3b4bb2fbd252f3f", null ],
+    [ "an_y", "algorithm_8h.html#a72c76142c07186ae6d7200ec3c9a4f76", null ],
+    [ "auw_hamm", "algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929", null ],
+    [ "uch_spo2_table", "algorithm_8h.html#adfeeb6b08271807492803acc50347108", null ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..1d98e0c3ac7db64ec59940aff17b0d929063fab4
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h_source.html
@@ -0,0 +1,191 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_MBED/algorithm/algorithm.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('algorithm_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">algorithm.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="algorithm_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">/*******************************************************************************</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">* Copyright (C) 2015 Maxim Integrated Products, Inc., All Rights Reserved.</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">* copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">* to deal in the Software without restriction, including without limitation</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">* The above copyright notice and this permission notice shall be included</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">* in all copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">* THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">* Products, Inc. Branding Policy.</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">* The mere transfer of this software does not imply any licenses</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment">* ownership rights.</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">*******************************************************************************</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">*/</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#ifndef ALGORITHM_H_</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ALGORITHM_H_</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#include &quot;mbed.h&quot;</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">   67</a></span>&#160;<span class="preprocessor">#define true 1</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a65e9886d74aaee76545e83dd09011727">   68</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define false 0</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119">   69</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define FS 100</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">   70</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define BUFFER_SIZE  (FS* 5) </span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524">   71</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define HR_FIFO_SIZE 7</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae">   72</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define MA4_SIZE  4 // DO NOT CHANGE</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">   73</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define HAMMING_SIZE  5// DO NOT CHANGE</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384">   74</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define min(x,y) ((x) &lt; (y) ? (x) : (y))</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929">   76</a></span>&#160;<span class="keyword">const</span> uint16_t <a class="code" href="algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929">auw_hamm</a>[31]={ 41,    276,    512,    276,     41 }; <span class="comment">//Hamm=  long16(512* hamming(5)&#39;);</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="comment">//uch_spo2_table is computed as  -45.060*ratioAverage* ratioAverage + 30.354 *ratioAverage + 94.845 ;</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="algorithm_8h.html#adfeeb6b08271807492803acc50347108">   78</a></span>&#160;<span class="keyword">const</span> uint8_t <a class="code" href="algorithm_8h.html#adfeeb6b08271807492803acc50347108">uch_spo2_table</a>[184]={ 95, 95, 95, 96, 96, 96, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 99, 99, 99, 99, </div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;                            99, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, </div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;                            100, 100, 100, 100, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98, 98, 98, 98, 97, 97, </div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;                            97, 97, 96, 96, 96, 96, 95, 95, 95, 94, 94, 94, 93, 93, 93, 92, 92, 92, 91, 91, </div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;                            90, 90, 89, 89, 89, 88, 88, 87, 87, 86, 86, 85, 85, 84, 84, 83, 82, 82, 81, 81, </div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;                            80, 80, 79, 78, 78, 77, 76, 76, 75, 74, 74, 73, 72, 72, 71, 70, 69, 69, 68, 67, </div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;                            66, 66, 65, 64, 63, 62, 62, 61, 60, 59, 58, 57, 56, 56, 55, 54, 53, 52, 51, 50, </div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;                            49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 31, 30, 29, </div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;                            28, 27, 26, 25, 23, 22, 21, 20, 19, 17, 16, 15, 14, 12, 11, 10, 9, 7, 6, 5, </div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;                            3, 2, 1 } ;</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="keyword">static</span>  int32_t an_dx[ <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-<a class="code" href="algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae">MA4_SIZE</a>]; <span class="comment">// delta</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="keyword">static</span>  int32_t an_x[ <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>]; <span class="comment">//ir</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="keyword">static</span>  int32_t an_y[ <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>]; <span class="comment">//red</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6" title="Calculate the heart rate and SpO2 level.">maxim_heart_rate_and_oxygen_saturation</a>(uint32_t *pun_ir_buffer ,  int32_t <a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>, uint32_t *pun_red_buffer ,   int32_t *pn_spo2, int8_t *pch_spo2_valid ,  int32_t *pn_heart_rate , int8_t  *pch_hr_valid);</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9" title="Find peaks.">maxim_find_peaks</a>( int32_t *pn_locs, int32_t *pn_npks,  int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num );</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf" title="Find peaks above n_min_height.">maxim_peaks_above_min_height</a>( int32_t *pn_locs, int32_t *pn_npks,  int32_t *pn_x, int32_t n_size, int32_t n_min_height );</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a" title="Remove peaks.">maxim_remove_close_peaks</a>( int32_t *pn_locs, int32_t *pn_npks,   int32_t  *pn_x, int32_t n_min_distance );</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff" title="Sort array.">maxim_sort_ascend</a>( int32_t *pn_x, int32_t n_size );</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060" title="Sort indices.">maxim_sort_indices_descend</a>(  int32_t  *pn_x, int32_t *pn_indx, int32_t n_size);</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* ALGORITHM_H_ */</span><span class="preprocessor"></span></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_19b53f07f52837a342947cc20e6d978f.html">algorithm</a></li><li class="navelem"><a class="el" href="algorithm_8h.html">algorithm.h</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/annotated.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/annotated.html
new file mode 100644
index 0000000000000000000000000000000000000000..8c8bbce7fdf9b7a9d92137af810196141670d276
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/annotated.html
@@ -0,0 +1,125 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: Data Structures</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&#160;Structure&#160;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('annotated.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Data Structures</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="class_adafruit___neo_pixel.html" target="_self">Adafruit_NeoPixel</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/annotated.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/annotated.js
new file mode 100644
index 0000000000000000000000000000000000000000..a2cf5a0fd0e560127393a5cd4b5b439280b9b2bc
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/annotated.js
@@ -0,0 +1,4 @@
+var annotated =
+[
+    [ "Adafruit_NeoPixel", "class_adafruit___neo_pixel.html", "class_adafruit___neo_pixel" ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/bc_s.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/bc_s.png
new file mode 100644
index 0000000000000000000000000000000000000000..6da883dbb2fc7d439acc68a313049a8ee8cb6461
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/bc_s.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/bdwn.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/bdwn.png
new file mode 100644
index 0000000000000000000000000000000000000000..4aa5b3ecd3a1548be883d8a5e8c53588936578bf
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/bdwn.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/class_adafruit___neo_pixel.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/class_adafruit___neo_pixel.html
new file mode 100644
index 0000000000000000000000000000000000000000..2e17a0010e0c018693b5d685d64e09a096b2a566
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/class_adafruit___neo_pixel.html
@@ -0,0 +1,668 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: Adafruit_NeoPixel Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&#160;Structure&#160;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('class_adafruit___neo_pixel.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Adafruit_NeoPixel Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ac314debe6917c8c9b320b785139c6e58"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#ac314debe6917c8c9b320b785139c6e58">Adafruit_NeoPixel</a> (uint16_t n, uint8_t p=6, <a class="el" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a> t=<a class="el" href="_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f">NEO_GRB</a>+<a class="el" href="_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d">NEO_KHZ800</a>)</td></tr>
+<tr class="separator:ac314debe6917c8c9b320b785139c6e58"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1ac0c48cf3fd9185e40308c37f1d320"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320">Adafruit_NeoPixel</a> (void)</td></tr>
+<tr class="separator:ab1ac0c48cf3fd9185e40308c37f1d320"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a16d970aa16f9d0128800346f4ca567db"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db">~Adafruit_NeoPixel</a> ()</td></tr>
+<tr class="separator:a16d970aa16f9d0128800346f4ca567db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aad78931e44ce43c9b9c460dba7c9bbb7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7">begin</a> (void)</td></tr>
+<tr class="separator:aad78931e44ce43c9b9c460dba7c9bbb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae335a7c214036a6c1734969f2bc3f4f7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">show</a> (void)</td></tr>
+<tr class="separator:ae335a7c214036a6c1734969f2bc3f4f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a345b7a6f550461926ed5187b2df42d6b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b">setPin</a> (uint8_t p)</td></tr>
+<tr class="separator:a345b7a6f550461926ed5187b2df42d6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0ec91c90f337e806cd98956514257cf1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1">setPixelColor</a> (uint16_t n, uint8_t r, uint8_t g, uint8_t b)</td></tr>
+<tr class="separator:a0ec91c90f337e806cd98956514257cf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a35eda2252e3ed976a11d35cb8f4b2e41"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a35eda2252e3ed976a11d35cb8f4b2e41">setPixelColor</a> (uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w)</td></tr>
+<tr class="separator:a35eda2252e3ed976a11d35cb8f4b2e41"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abbf243cce591dc37be507cf173485bc8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#abbf243cce591dc37be507cf173485bc8">setPixelColor</a> (uint16_t n, uint32_t c)</td></tr>
+<tr class="separator:abbf243cce591dc37be507cf173485bc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afa1740af1d8eec971eada06d53901c53"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53">setBrightness</a> (uint8_t)</td></tr>
+<tr class="separator:afa1740af1d8eec971eada06d53901c53"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
+<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a05542d574f1a9a73f9e3547990321944"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">updateLength</a> (uint16_t n)</td></tr>
+<tr class="separator:a05542d574f1a9a73f9e3547990321944"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a65e59263e0f5a04c7202d4385d3a539b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b">updateType</a> (<a class="el" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a> t)</td></tr>
+<tr class="separator:a65e59263e0f5a04c7202d4385d3a539b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a18bc91d2bad52cf603814d4df6f33067"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067">getPixels</a> (void) const </td></tr>
+<tr class="separator:a18bc91d2bad52cf603814d4df6f33067"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a553bf1a0513094c73cb54a235f74ac7f"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f">getBrightness</a> (void) const </td></tr>
+<tr class="separator:a553bf1a0513094c73cb54a235f74ac7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac893a5c07c41604539022af84665c04b"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b">numPixels</a> (void) const </td></tr>
+<tr class="separator:ac893a5c07c41604539022af84665c04b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9846704aaabd4e102beba5a5484d5738"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a9846704aaabd4e102beba5a5484d5738">Color</a> (uint8_t r, uint8_t g, uint8_t b, uint8_t w)</td></tr>
+<tr class="separator:a9846704aaabd4e102beba5a5484d5738"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a10a836ddc4ebd3e26b1e71a5875764fa"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa">getPixelColor</a> (uint16_t n) const </td></tr>
+<tr class="separator:a10a836ddc4ebd3e26b1e71a5875764fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad38ce8112667b70ad7c411a98892af0e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e">canShow</a> (void)</td></tr>
+<tr class="separator:ad38ce8112667b70ad7c411a98892af0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:ae3e6c2fabbee89d19487424acd8d9fec"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec">Color</a> (uint8_t r, uint8_t g, uint8_t b)</td></tr>
+<tr class="separator:ae3e6c2fabbee89d19487424acd8d9fec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock">
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00116">116</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="ac314debe6917c8c9b320b785139c6e58"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a> </td>
+          <td>(</td>
+          <td class="paramtype">uint16_t&#160;</td>
+          <td class="paramname"><em>n</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>p</em> = <code>6</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a>&#160;</td>
+          <td class="paramname"><em>t</em> = <code><a class="el" href="_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f">NEO_GRB</a>&#160;+&#160;<a class="el" href="_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d">NEO_KHZ800</a></code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l00038">38</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab1ac0c48cf3fd9185e40308c37f1d320"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a> </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l00051">51</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a16d970aa16f9d0128800346f4ca567db"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">~<a class="el" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a> </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l00060">60</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="aad78931e44ce43c9b9c460dba7c9bbb7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void begin </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l00065">65</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad38ce8112667b70ad7c411a98892af0e"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool canShow </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00147">147</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void clear </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01198">1198</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae3e6c2fabbee89d19487424acd8d9fec"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">uint32_t Color </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>r</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>g</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>b</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01096">1096</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9846704aaabd4e102beba5a5484d5738"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">uint32_t Color </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>r</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>g</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>b</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>w</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01102">1102</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a553bf1a0513094c73cb54a235f74ac7f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">uint8_t getBrightness </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01194">1194</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a10a836ddc4ebd3e26b1e71a5875764fa"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">uint32_t getPixelColor </td>
+          <td>(</td>
+          <td class="paramtype">uint16_t&#160;</td>
+          <td class="paramname"><em>n</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01107">1107</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a18bc91d2bad52cf603814d4df6f33067"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">uint8_t * getPixels </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01148">1148</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac893a5c07c41604539022af84665c04b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">uint16_t numPixels </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01152">1152</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afa1740af1d8eec971eada06d53901c53"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void setBrightness </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>b</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01168">1168</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a345b7a6f550461926ed5187b2df42d6b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void setPin </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>p</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01031">1031</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0ec91c90f337e806cd98956514257cf1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void setPixelColor </td>
+          <td>(</td>
+          <td class="paramtype">uint16_t&#160;</td>
+          <td class="paramname"><em>n</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>r</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>g</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>b</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01047">1047</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a35eda2252e3ed976a11d35cb8f4b2e41"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void setPixelColor </td>
+          <td>(</td>
+          <td class="paramtype">uint16_t&#160;</td>
+          <td class="paramname"><em>n</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>r</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>g</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>b</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>w</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="abbf243cce591dc37be507cf173485bc8"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void setPixelColor </td>
+          <td>(</td>
+          <td class="paramtype">uint16_t&#160;</td>
+          <td class="paramname"><em>n</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint32_t&#160;</td>
+          <td class="paramname"><em>c</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01070">1070</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae335a7c214036a6c1734969f2bc3f4f7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void show </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l00111">111</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a05542d574f1a9a73f9e3547990321944"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void updateLength </td>
+          <td>(</td>
+          <td class="paramtype">uint16_t&#160;</td>
+          <td class="paramname"><em>n</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l00073">73</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a65e59263e0f5a04c7202d4385d3a539b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void updateType </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a>&#160;</td>
+          <td class="paramname"><em>t</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l00086">86</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li>RD117_ARDUINO/<a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a></li>
+<li>RD117_ARDUINO/<a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/class_adafruit___neo_pixel.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/class_adafruit___neo_pixel.js
new file mode 100644
index 0000000000000000000000000000000000000000..521850e40e2eb3d941a8631d464269c12fca1b49
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/class_adafruit___neo_pixel.js
@@ -0,0 +1,23 @@
+var class_adafruit___neo_pixel =
+[
+    [ "Adafruit_NeoPixel", "class_adafruit___neo_pixel.html#ac314debe6917c8c9b320b785139c6e58", null ],
+    [ "Adafruit_NeoPixel", "class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320", null ],
+    [ "~Adafruit_NeoPixel", "class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db", null ],
+    [ "begin", "class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7", null ],
+    [ "canShow", "class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e", null ],
+    [ "clear", "class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204", null ],
+    [ "Color", "class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec", null ],
+    [ "Color", "class_adafruit___neo_pixel.html#a9846704aaabd4e102beba5a5484d5738", null ],
+    [ "getBrightness", "class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f", null ],
+    [ "getPixelColor", "class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa", null ],
+    [ "getPixels", "class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067", null ],
+    [ "numPixels", "class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b", null ],
+    [ "setBrightness", "class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53", null ],
+    [ "setPin", "class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b", null ],
+    [ "setPixelColor", "class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1", null ],
+    [ "setPixelColor", "class_adafruit___neo_pixel.html#a35eda2252e3ed976a11d35cb8f4b2e41", null ],
+    [ "setPixelColor", "class_adafruit___neo_pixel.html#abbf243cce591dc37be507cf173485bc8", null ],
+    [ "show", "class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7", null ],
+    [ "updateLength", "class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944", null ],
+    [ "updateType", "class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b", null ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/classes.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/classes.html
new file mode 100644
index 0000000000000000000000000000000000000000..4ccf6040c0f0a52d29d1d44cc4e318f123879de0
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/classes.html
@@ -0,0 +1,129 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: Data Structure Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li class="current"><a href="classes.html"><span>Data&#160;Structure&#160;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classes.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Data Structure Index</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="qindex"><a class="qindex" href="#letter_A">A</a></div>
+<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
+<tr><td rowspan="2" valign="bottom"><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;A&#160;&#160;</div></td></tr></table>
+</td><td></td></tr>
+<tr><td></td></tr>
+<tr><td valign="top"><a class="el" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a>&#160;&#160;&#160;</td><td></td></tr>
+<tr><td></td><td></td></tr>
+</table>
+<div class="qindex"><a class="qindex" href="#letter_A">A</a></div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/closed.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/closed.png
new file mode 100644
index 0000000000000000000000000000000000000000..ea7139c41d9c1c05f5a466f99cec8d705066ba4b
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/closed.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_1496e1f9c0637ae9073f7370a2521bf1.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_1496e1f9c0637ae9073f7370a2521bf1.html
new file mode 100644
index 0000000000000000000000000000000000000000..e591b400c942f971c67fd8e38751ead762f718ba
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_1496e1f9c0637ae9073f7370a2521bf1.html
@@ -0,0 +1,134 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_ARDUINO Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_1496e1f9c0637ae9073f7370a2521bf1.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">RD117_ARDUINO Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:_adafruit___neo_pixel_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8cpp.html">Adafruit_NeoPixel.cpp</a> <a href="_adafruit___neo_pixel_8cpp_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_adafruit___neo_pixel_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html">Adafruit_NeoPixel.h</a> <a href="_adafruit___neo_pixel_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:algorithm_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html">algorithm.cpp</a> <a href="algorithm_8cpp_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:algorithm_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html">algorithm.h</a> <a href="algorithm_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:max30102_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8cpp.html">max30102.cpp</a> <a href="max30102_8cpp_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:max30102_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html">max30102.h</a> <a href="max30102_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_r_d117___a_r_d_u_i_n_o_8ino"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html">RD117_ARDUINO.ino</a> <a href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_soft_i2_c_master_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html">SoftI2CMaster.h</a> <a href="_soft_i2_c_master_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_1496e1f9c0637ae9073f7370a2521bf1.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_1496e1f9c0637ae9073f7370a2521bf1.js
new file mode 100644
index 0000000000000000000000000000000000000000..ea015b1af4ddd4f8d5cbc8438972641e97c18237
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_1496e1f9c0637ae9073f7370a2521bf1.js
@@ -0,0 +1,11 @@
+var dir_1496e1f9c0637ae9073f7370a2521bf1 =
+[
+    [ "Adafruit_NeoPixel.cpp", "_adafruit___neo_pixel_8cpp.html", null ],
+    [ "Adafruit_NeoPixel.h", "_adafruit___neo_pixel_8h.html", "_adafruit___neo_pixel_8h" ],
+    [ "algorithm.cpp", "algorithm_8cpp.html", "algorithm_8cpp" ],
+    [ "algorithm.h", "algorithm_8h.html", "algorithm_8h" ],
+    [ "max30102.cpp", "max30102_8cpp.html", "max30102_8cpp" ],
+    [ "max30102.h", "max30102_8h.html", "max30102_8h" ],
+    [ "RD117_ARDUINO.ino", "_r_d117___a_r_d_u_i_n_o_8ino.html", "_r_d117___a_r_d_u_i_n_o_8ino" ],
+    [ "SoftI2CMaster.h", "_soft_i2_c_master_8h.html", "_soft_i2_c_master_8h" ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_19b53f07f52837a342947cc20e6d978f.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_19b53f07f52837a342947cc20e6d978f.html
new file mode 100644
index 0000000000000000000000000000000000000000..013cb4fa89f878705e6c91fefd4ec28598b3a79f
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_19b53f07f52837a342947cc20e6d978f.html
@@ -0,0 +1,121 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_MBED/algorithm Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_19b53f07f52837a342947cc20e6d978f.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">algorithm Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:algorithm_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html">algorithm.cpp</a> <a href="algorithm_8cpp_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:algorithm_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html">algorithm.h</a> <a href="algorithm_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_19b53f07f52837a342947cc20e6d978f.html">algorithm</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_19b53f07f52837a342947cc20e6d978f.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_19b53f07f52837a342947cc20e6d978f.js
new file mode 100644
index 0000000000000000000000000000000000000000..1f23c8ffa1bafd9c1d45929edcc689a3345f0922
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_19b53f07f52837a342947cc20e6d978f.js
@@ -0,0 +1,5 @@
+var dir_19b53f07f52837a342947cc20e6d978f =
+[
+    [ "algorithm.cpp", "algorithm_8cpp.html", "algorithm_8cpp" ],
+    [ "algorithm.h", "algorithm_8h.html", "algorithm_8h" ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_70c5cd4c8bba287fe799894cc0903ca4.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_70c5cd4c8bba287fe799894cc0903ca4.html
new file mode 100644
index 0000000000000000000000000000000000000000..d05f997d7e97df18abae0eb17a6821117cbffbf1
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_70c5cd4c8bba287fe799894cc0903ca4.html
@@ -0,0 +1,126 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_MBED Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_70c5cd4c8bba287fe799894cc0903ca4.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">RD117_MBED Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:dir_19b53f07f52837a342947cc20e6d978f"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_19b53f07f52837a342947cc20e6d978f.html">algorithm</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:dir_d4a9a7556cca61907ce453116086a23a"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_d4a9a7556cca61907ce453116086a23a.html">MAX30102</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:main_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html">main.cpp</a> <a href="main_8cpp_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_70c5cd4c8bba287fe799894cc0903ca4.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_70c5cd4c8bba287fe799894cc0903ca4.js
new file mode 100644
index 0000000000000000000000000000000000000000..893afb2a36f77b0755116b71b9f8098efec44af7
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_70c5cd4c8bba287fe799894cc0903ca4.js
@@ -0,0 +1,6 @@
+var dir_70c5cd4c8bba287fe799894cc0903ca4 =
+[
+    [ "algorithm", "dir_19b53f07f52837a342947cc20e6d978f.html", "dir_19b53f07f52837a342947cc20e6d978f" ],
+    [ "MAX30102", "dir_d4a9a7556cca61907ce453116086a23a.html", "dir_d4a9a7556cca61907ce453116086a23a" ],
+    [ "main.cpp", "main_8cpp.html", "main_8cpp" ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_d4a9a7556cca61907ce453116086a23a.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_d4a9a7556cca61907ce453116086a23a.html
new file mode 100644
index 0000000000000000000000000000000000000000..ef5be600162397b8a047987b8d1a48ff2c6637c6
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_d4a9a7556cca61907ce453116086a23a.html
@@ -0,0 +1,121 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_MBED/MAX30102 Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_d4a9a7556cca61907ce453116086a23a.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">MAX30102 Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:_m_a_x30102_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8cpp.html">MAX30102.cpp</a> <a href="_m_a_x30102_8cpp_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_m_a_x30102_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html">MAX30102.h</a> <a href="_m_a_x30102_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_d4a9a7556cca61907ce453116086a23a.html">MAX30102</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_d4a9a7556cca61907ce453116086a23a.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_d4a9a7556cca61907ce453116086a23a.js
new file mode 100644
index 0000000000000000000000000000000000000000..4c09eec2b5d6b416212c5c58ae6767eea9e3e74c
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_d4a9a7556cca61907ce453116086a23a.js
@@ -0,0 +1,5 @@
+var dir_d4a9a7556cca61907ce453116086a23a =
+[
+    [ "MAX30102.cpp", "_m_a_x30102_8cpp.html", "_m_a_x30102_8cpp" ],
+    [ "MAX30102.h", "_m_a_x30102_8h.html", "_m_a_x30102_8h" ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/doxygen.css b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/doxygen.css
new file mode 100644
index 0000000000000000000000000000000000000000..2df37ac8dee7a2bdc7aca490e5b7dff5ef6c0d40
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/doxygen.css
@@ -0,0 +1,1172 @@
+/* The standard CSS for doxygen */
+
+body, table, div, p, dl {
+	font: 400 14px/19px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+	font-size: 150%;
+}
+
+.title {
+	font-size: 150%;
+	font-weight: bold;
+	margin: 10px 2px;
+}
+
+h2.groupheader {
+	border-bottom: 1px solid #94D0CD;
+	color: #3D8C88;
+	font-size: 150%;
+	font-weight: normal;
+	margin-top: 1.75em;
+	padding-top: 8px;
+	padding-bottom: 4px;
+	width: 100%;
+}
+
+h3.groupheader {
+	font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+	-webkit-transition: text-shadow 0.5s linear;
+	-moz-transition: text-shadow 0.5s linear;
+	-ms-transition: text-shadow 0.5s linear;
+	-o-transition: text-shadow 0.5s linear;
+	transition: text-shadow 0.5s linear;
+	margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+	text-shadow: 0 0 15px cyan;
+}
+
+dt {
+	font-weight: bold;
+}
+
+div.multicol {
+	-moz-column-gap: 1em;
+	-webkit-column-gap: 1em;
+	-moz-column-count: 3;
+	-webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+	margin-top: 2px;
+}
+
+p.endli {
+	margin-bottom: 0px;
+}
+
+p.enddd {
+	margin-bottom: 4px;
+}
+
+p.endtd {
+	margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+	font-weight: bold;
+}
+
+span.legend {
+        font-size: 70%;
+        text-align: center;
+}
+
+h3.version {
+        font-size: 90%;
+        text-align: center;
+}
+
+div.qindex, div.navtab{
+	background-color: #EEF7F7;
+	border: 1px solid #ADDBD9;
+	text-align: center;
+}
+
+div.qindex, div.navpath {
+	width: 100%;
+	line-height: 140%;
+}
+
+div.navtab {
+	margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+	color: #449D99;
+	font-weight: normal;
+	text-decoration: none;
+}
+
+.contents a:visited {
+	color: #4FB2AD;
+}
+
+a:hover {
+	text-decoration: underline;
+}
+
+a.qindex {
+	font-weight: bold;
+}
+
+a.qindexHL {
+	font-weight: bold;
+	background-color: #A7D8D6;
+	color: #ffffff;
+	border: 1px double #93CFCC;
+}
+
+.contents a.qindexHL:visited {
+        color: #ffffff;
+}
+
+a.el {
+	font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited {
+	color: #4665A2; 
+}
+
+a.codeRef, a.codeRef:visited {
+	color: #4665A2; 
+}
+
+/* @end */
+
+dl.el {
+	margin-left: -1cm;
+}
+
+pre.fragment {
+        border: 1px solid #C4CFE5;
+        background-color: #FBFCFD;
+        padding: 4px 6px;
+        margin: 4px 8px 4px 2px;
+        overflow: auto;
+        word-wrap: break-word;
+        font-size:  9pt;
+        line-height: 125%;
+        font-family: monospace, fixed;
+        font-size: 105%;
+}
+
+div.fragment {
+        padding: 4px;
+        margin: 4px;
+	background-color: #FCFDFD;
+	border: 1px solid #CBE8E7;
+}
+
+div.line {
+	font-family: monospace, fixed;
+        font-size: 13px;
+	min-height: 13px;
+	line-height: 1.0;
+	text-wrap: unrestricted;
+	white-space: -moz-pre-wrap; /* Moz */
+	white-space: -pre-wrap;     /* Opera 4-6 */
+	white-space: -o-pre-wrap;   /* Opera 7 */
+	white-space: pre-wrap;      /* CSS3  */
+	word-wrap: break-word;      /* IE 5.5+ */
+	text-indent: -53px;
+	padding-left: 53px;
+	padding-bottom: 0px;
+	margin: 0px;
+	-webkit-transition-property: background-color, box-shadow;
+	-webkit-transition-duration: 0.5s;
+	-moz-transition-property: background-color, box-shadow;
+	-moz-transition-duration: 0.5s;
+	-ms-transition-property: background-color, box-shadow;
+	-ms-transition-duration: 0.5s;
+	-o-transition-property: background-color, box-shadow;
+	-o-transition-duration: 0.5s;
+	transition-property: background-color, box-shadow;
+	transition-duration: 0.5s;
+}
+
+div.line.glow {
+	background-color: cyan;
+	box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+	padding-right: 4px;
+	text-align: right;
+	border-right: 2px solid #0F0;
+	background-color: #E8E8E8;
+        white-space: pre;
+}
+span.lineno a {
+	background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+	background-color: #C8C8C8;
+}
+
+div.ah {
+	background-color: black;
+	font-weight: bold;
+	color: #ffffff;
+	margin-bottom: 3px;
+	margin-top: 3px;
+	padding: 0.2em;
+	border: solid thin #333;
+	border-radius: 0.5em;
+	-webkit-border-radius: .5em;
+	-moz-border-radius: .5em;
+	box-shadow: 2px 2px 3px #999;
+	-webkit-box-shadow: 2px 2px 3px #999;
+	-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+	background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+	margin-left: 16px;
+	margin-top: 12px;
+	font-weight: bold;
+}
+
+div.groupText {
+	margin-left: 16px;
+	font-style: italic;
+}
+
+body {
+	background-color: white;
+	color: black;
+        margin: 0;
+}
+
+div.contents {
+	margin-top: 10px;
+	margin-left: 12px;
+	margin-right: 8px;
+}
+
+td.indexkey {
+	background-color: #EEF7F7;
+	font-weight: bold;
+	border: 1px solid #CBE8E7;
+	margin: 2px 0px 2px 0;
+	padding: 2px 10px;
+        white-space: nowrap;
+        vertical-align: top;
+}
+
+td.indexvalue {
+	background-color: #EEF7F7;
+	border: 1px solid #CBE8E7;
+	padding: 2px 10px;
+	margin: 2px 0px;
+}
+
+tr.memlist {
+	background-color: #F0F8F8;
+}
+
+p.formulaDsp {
+	text-align: center;
+}
+
+img.formulaDsp {
+	
+}
+
+img.formulaInl {
+	vertical-align: middle;
+}
+
+div.center {
+	text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+	border: 0px;
+}
+
+address.footer {
+	text-align: right;
+	padding-right: 12px;
+}
+
+img.footer {
+	border: 0px;
+	vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+	color: #008000
+}
+
+span.keywordtype {
+	color: #604020
+}
+
+span.keywordflow {
+	color: #e08000
+}
+
+span.comment {
+	color: #800000
+}
+
+span.preprocessor {
+	color: #806020
+}
+
+span.stringliteral {
+	color: #002080
+}
+
+span.charliteral {
+	color: #008080
+}
+
+span.vhdldigit { 
+	color: #ff00ff 
+}
+
+span.vhdlchar { 
+	color: #000000 
+}
+
+span.vhdlkeyword { 
+	color: #700070 
+}
+
+span.vhdllogic { 
+	color: #ff0000 
+}
+
+blockquote {
+        background-color: #F8FCFB;
+        border-left: 2px solid #A7D8D6;
+        margin: 0 24px 0 4px;
+        padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+	color: #003399;
+	font-weight: bold;
+}
+
+form.search {
+	margin-bottom: 0px;
+	margin-top: 0px;
+}
+
+input.search {
+	font-size: 75%;
+	color: #000080;
+	font-weight: normal;
+	background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+	font-size: 75%;
+}
+
+.dirtab {
+	padding: 4px;
+	border-collapse: collapse;
+	border: 1px solid #ADDBD9;
+}
+
+th.dirtab {
+	background: #EEF7F7;
+	font-weight: bold;
+}
+
+hr {
+	height: 0px;
+	border: none;
+	border-top: 1px solid #56B5B0;
+}
+
+hr.footer {
+	height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+	border-spacing: 0px;
+	padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+	-webkit-transition-property: background-color, box-shadow;
+	-webkit-transition-duration: 0.5s;
+	-moz-transition-property: background-color, box-shadow;
+	-moz-transition-duration: 0.5s;
+	-ms-transition-property: background-color, box-shadow;
+	-ms-transition-duration: 0.5s;
+	-o-transition-property: background-color, box-shadow;
+	-o-transition-duration: 0.5s;
+	transition-property: background-color, box-shadow;
+	transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+	background-color: cyan;
+	box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+	background-color: #FAFCFC;
+	border: none;
+	margin: 4px;
+	padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+	padding: 0px 8px 4px 8px;
+	color: #555;
+}
+
+.memSeparator {
+        border-bottom: 1px solid #DEE4F0;
+        line-height: 1px;
+        margin: 0px;
+        padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memItemRight {
+	width: 100%;
+}
+
+.memTemplParams {
+	color: #4FB2AD;
+        white-space: nowrap;
+	font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+	font-size: 80%;
+	color: #4FB2AD;
+	font-weight: normal;
+	margin-left: 9px;
+}
+
+.memnav {
+	background-color: #EEF7F7;
+	border: 1px solid #ADDBD9;
+	text-align: center;
+	margin: 2px;
+	margin-right: 15px;
+	padding: 2px;
+}
+
+.mempage {
+	width: 100%;
+}
+
+.memitem {
+	padding: 0;
+	margin-bottom: 10px;
+	margin-right: 5px;
+        -webkit-transition: box-shadow 0.5s linear;
+        -moz-transition: box-shadow 0.5s linear;
+        -ms-transition: box-shadow 0.5s linear;
+        -o-transition: box-shadow 0.5s linear;
+        transition: box-shadow 0.5s linear;
+        display: table !important;
+        width: 100%;
+}
+
+.memitem.glow {
+         box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+        font-weight: bold;
+        margin-left: 6px;
+}
+
+.memname td {
+	vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+        border-top: 1px solid #B2DDDB;
+        border-left: 1px solid #B2DDDB;
+        border-right: 1px solid #B2DDDB;
+        padding: 6px 0px 6px 0px;
+        color: #2C6663;
+        font-weight: bold;
+        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E6F4F3;
+        /* opera specific markup */
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        border-top-right-radius: 4px;
+        border-top-left-radius: 4px;
+        /* firefox specific markup */
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        -moz-border-radius-topright: 4px;
+        -moz-border-radius-topleft: 4px;
+        /* webkit specific markup */
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        -webkit-border-top-right-radius: 4px;
+        -webkit-border-top-left-radius: 4px;
+
+}
+
+.memdoc, dl.reflist dd {
+        border-bottom: 1px solid #B2DDDB;      
+        border-left: 1px solid #B2DDDB;      
+        border-right: 1px solid #B2DDDB; 
+        padding: 6px 10px 2px 10px;
+        background-color: #FCFDFD;
+        border-top-width: 0;
+        background-image:url('nav_g.png');
+        background-repeat:repeat-x;
+        background-color: #FFFFFF;
+        /* opera specific markup */
+        border-bottom-left-radius: 4px;
+        border-bottom-right-radius: 4px;
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 4px;
+        -moz-border-radius-bottomright: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 4px;
+        -webkit-border-bottom-right-radius: 4px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+        padding: 5px;
+}
+
+dl.reflist dd {
+        margin: 0px 0px 10px 0px;
+        padding: 5px;
+}
+
+.paramkey {
+	text-align: right;
+}
+
+.paramtype {
+	white-space: nowrap;
+}
+
+.paramname {
+	color: #602020;
+	white-space: nowrap;
+}
+.paramname em {
+	font-style: normal;
+}
+.paramname code {
+        line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+        margin-left: 0px;
+        padding-left: 0px;
+}       
+
+.params .paramname, .retval .paramname {
+        font-weight: bold;
+        vertical-align: top;
+}
+        
+.params .paramtype {
+        font-style: italic;
+        vertical-align: top;
+}       
+        
+.params .paramdir {
+        font-family: "courier new",courier,monospace;
+        vertical-align: top;
+}
+
+table.mlabels {
+	border-spacing: 0px;
+}
+
+td.mlabels-left {
+	width: 100%;
+	padding: 0px;
+}
+
+td.mlabels-right {
+	vertical-align: bottom;
+	padding: 0px;
+	white-space: nowrap;
+}
+
+span.mlabels {
+        margin-left: 8px;
+}
+
+span.mlabel {
+        background-color: #80C7C4;
+        border-top:1px solid #63BBB6;
+        border-left:1px solid #63BBB6;
+        border-right:1px solid #CBE8E7;
+        border-bottom:1px solid #CBE8E7;
+	text-shadow: none;
+	color: white;
+	margin-right: 4px;
+	padding: 2px 3px;
+	border-radius: 3px;
+	font-size: 7pt;
+	white-space: nowrap;
+	vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view when not used as main index */
+
+div.directory {
+        margin: 10px 0px;
+        border-top: 1px solid #A8B8D9;
+        border-bottom: 1px solid #A8B8D9;
+        width: 100%;
+}
+
+.directory table {
+        border-collapse:collapse;
+}
+
+.directory td {
+        margin: 0px;
+        padding: 0px;
+	vertical-align: top;
+}
+
+.directory td.entry {
+        white-space: nowrap;
+        padding-right: 6px;
+}
+
+.directory td.entry a {
+        outline:none;
+}
+
+.directory td.entry a img {
+        border: none;
+}
+
+.directory td.desc {
+        width: 100%;
+        padding-left: 6px;
+	padding-right: 6px;
+	padding-top: 3px;
+	border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+	padding-left: 6px;
+	background-color: #F8FCFB;
+}
+
+.directory img {
+	vertical-align: -30%;
+}
+
+.directory .levels {
+        white-space: nowrap;
+        width: 100%;
+        text-align: right;
+        font-size: 9pt;
+}
+
+.directory .levels span {
+        cursor: pointer;
+        padding-left: 2px;
+        padding-right: 2px;
+	color: #449D99;
+}
+
+div.dynheader {
+        margin-top: 8px;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+address {
+	font-style: normal;
+	color: #32736F;
+}
+
+table.doxtable {
+	border-collapse:collapse;
+        margin-top: 4px;
+        margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+	border: 1px solid #347975;
+	padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+	background-color: #3F918C;
+	color: #FFFFFF;
+	font-size: 110%;
+	padding-bottom: 4px;
+	padding-top: 5px;
+}
+
+table.fieldtable {
+        width: 100%;
+        margin-bottom: 10px;
+        border: 1px solid #B2DDDB;
+        border-spacing: 0px;
+        -moz-border-radius: 4px;
+        -webkit-border-radius: 4px;
+        border-radius: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+        padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+        white-space: nowrap;
+        border-right: 1px solid #B2DDDB;
+        border-bottom: 1px solid #B2DDDB;
+        vertical-align: top;
+}
+
+.fieldtable td.fielddoc {
+        border-bottom: 1px solid #B2DDDB;
+        width: 100%;
+}
+
+.fieldtable tr:last-child td {
+        border-bottom: none;
+}
+
+.fieldtable th {
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E6F4F3;
+        font-size: 90%;
+        color: #2C6663;
+        padding-bottom: 4px;
+        padding-top: 5px;
+        text-align:left;
+        -moz-border-radius-topleft: 4px;
+        -moz-border-radius-topright: 4px;
+        -webkit-border-top-left-radius: 4px;
+        -webkit-border-top-right-radius: 4px;
+        border-top-left-radius: 4px;
+        border-top-right-radius: 4px;
+        border-bottom: 1px solid #B2DDDB;
+}
+
+
+.tabsearch {
+	top: 0px;
+	left: 10px;
+	height: 36px;
+	background-image: url('tab_b.png');
+	z-index: 101;
+	overflow: hidden;
+	font-size: 13px;
+}
+
+.navpath ul
+{
+	font-size: 11px;
+	background-image:url('tab_b.png');
+	background-repeat:repeat-x;
+	background-position: 0 -5px;
+	height:30px;
+	line-height:30px;
+	color:#96D1CE;
+	border:solid 1px #C9E7E6;
+	overflow:hidden;
+	margin:0px;
+	padding:0px;
+}
+
+.navpath li
+{
+	list-style-type:none;
+	float:left;
+	padding-left:10px;
+	padding-right:15px;
+	background-image:url('bc_s.png');
+	background-repeat:no-repeat;
+	background-position:right;
+	color:#3E8E8A;
+}
+
+.navpath li.navelem a
+{
+	height:32px;
+	display:block;
+	text-decoration: none;
+	outline: none;
+	color: #306E6B;
+	font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+	text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+	text-decoration: none;        
+}
+
+.navpath li.navelem a:hover
+{
+	color:#77C3BF;
+}
+
+.navpath li.footer
+{
+        list-style-type:none;
+        float:right;
+        padding-left:10px;
+        padding-right:15px;
+        background-image:none;
+        background-repeat:no-repeat;
+        background-position:right;
+        color:#3E8E8A;
+        font-size: 8pt;
+}
+
+
+div.summary
+{
+	float: right;
+	font-size: 8pt;
+	padding-right: 5px;
+	width: 50%;
+	text-align: right;
+}       
+
+div.summary a
+{
+	white-space: nowrap;
+}
+
+div.ingroups
+{
+	font-size: 8pt;
+	width: 50%;
+	text-align: left;
+}
+
+div.ingroups a
+{
+	white-space: nowrap;
+}
+
+div.header
+{
+        background-image:url('nav_h.png');
+        background-repeat:repeat-x;
+	background-color: #FAFCFC;
+	margin:  0px;
+	border-bottom: 1px solid #CBE8E7;
+}
+
+div.headertitle
+{
+	padding: 5px 5px 5px 10px;
+}
+
+dl
+{
+        padding: 0 0 0 10px;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
+{
+	margin-left: 0px;
+	padding-left: 0px;
+}
+
+dl.note
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #00D000;
+}
+
+dl.deprecated
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #505050;
+}
+
+dl.todo
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #00C0E0;
+}
+
+dl.test
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #3030E0;
+}
+
+dl.bug
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #C08050;
+}
+
+dl.section dd {
+	margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+	text-align: center;
+	vertical-align: bottom;
+	border-collapse: separate;
+}
+ 
+#projectlogo img
+{ 
+	border: 0px none;
+}
+ 
+#projectname
+{
+	font: 300% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 2px 0px;
+}
+    
+#projectbrief
+{
+	font: 120% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 0px;
+}
+
+#projectnumber
+{
+	font: 50% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 0px;
+}
+
+#titlearea
+{
+	padding: 0px;
+	margin: 0px;
+	width: 100%;
+	border-bottom: 1px solid #63BBB6;
+}
+
+.image
+{
+        text-align: center;
+}
+
+.dotgraph
+{
+        text-align: center;
+}
+
+.mscgraph
+{
+        text-align: center;
+}
+
+.caption
+{
+	font-weight: bold;
+}
+
+div.zoom
+{
+	border: 1px solid #9CD3D1;
+}
+
+dl.citelist {
+        margin-bottom:50px;
+}
+
+dl.citelist dt {
+        color:#3A8683;
+        float:left;
+        font-weight:bold;
+        margin-right:10px;
+        padding:5px;
+}
+
+dl.citelist dd {
+        margin:2px 0;
+        padding:5px 0;
+}
+
+div.toc {
+        padding: 14px 25px;
+        background-color: #F6FBFA;
+        border: 1px solid #DDF0EF;
+        border-radius: 7px 7px 7px 7px;
+        float: right;
+        height: auto;
+        margin: 0 20px 10px 10px;
+        width: 200px;
+}
+
+div.toc li {
+        background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+        margin-top: 5px;
+        padding-left: 10px;
+        padding-top: 2px;
+}
+
+div.toc h3 {
+        font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+	color: #4FB2AD;
+        border-bottom: 0 none;
+        margin: 0;
+}
+
+div.toc ul {
+        list-style: none outside none;
+        border: medium none;
+        padding: 0px;
+}       
+
+div.toc li.level1 {
+        margin-left: 0px;
+}
+
+div.toc li.level2 {
+        margin-left: 15px;
+}
+
+div.toc li.level3 {
+        margin-left: 30px;
+}
+
+div.toc li.level4 {
+        margin-left: 45px;
+}
+
+.inherit_header {
+        font-weight: bold;
+        color: gray;
+        cursor: pointer;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+.inherit_header td {
+        padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+        display: none;
+}
+
+tr.heading h2 {
+        margin-top: 12px;
+        margin-bottom: 4px;
+}
+
+@media print
+{
+  #top { display: none; }
+  #side-nav { display: none; }
+  #nav-path { display: none; }
+  body { overflow:visible; }
+  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+  .summary { display: none; }
+  .memitem { page-break-inside: avoid; }
+  #doc-content
+  {
+    margin-left:0 !important;
+    height:auto !important;
+    width:auto !important;
+    overflow:inherit;
+    display:inline;
+  }
+}
+
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/doxygen.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/doxygen.png
new file mode 100644
index 0000000000000000000000000000000000000000..b47584814dd4fd0b9b4978d1e74c3c0ae8dceb40
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/doxygen.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dynsections.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dynsections.js
new file mode 100644
index 0000000000000000000000000000000000000000..116542f181ad2a1c09bfbdf59d8a50d58cf9c7d6
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dynsections.js
@@ -0,0 +1,78 @@
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+   content.hide();
+   summary.show();
+   $(linkObj).addClass('closed').removeClass('opened');
+   $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+   content.show();
+   summary.hide();
+   $(linkObj).removeClass('closed').addClass('opened');
+   $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ } 
+ return false;
+}
+
+function updateStripes()
+{
+  $('table.directory tr').
+       removeClass('even').filter(':visible:even').addClass('even');
+}
+function toggleLevel(level)
+{
+  $('table.directory tr').each(function(){ 
+    var l = this.id.split('_').length-1;
+    var i = $('#img'+this.id.substring(3));
+    var a = $('#arr'+this.id.substring(3));
+    if (l<level+1) {
+      i.attr('src','ftv2folderopen.png');
+      a.attr('src','ftv2mnode.png');
+      $(this).show();
+    } else if (l==level+1) {
+      i.attr('src','ftv2folderclosed.png');
+      a.attr('src','ftv2pnode.png');
+      $(this).show();
+    } else {
+      $(this).hide();
+    }
+  });
+  updateStripes();
+}
+function toggleFolder(id) 
+{
+  var n = $('[id^=row_'+id+']');
+  var i = $('[id^=img_'+id+']');
+  var a = $('[id^=arr_'+id+']');
+  var c = n.slice(1);
+  if (c.filter(':first').is(':visible')===true) {
+    i.attr('src','ftv2folderclosed.png');
+    a.attr('src','ftv2pnode.png');
+    c.hide();
+  } else {
+    i.attr('src','ftv2folderopen.png');
+    a.attr('src','ftv2mnode.png');
+    c.show();
+  }
+  updateStripes();
+}
+
+function toggleInherit(id)
+{
+  var rows = $('tr.inherit.'+id);
+  var img = $('tr.inherit_header.'+id+' img');
+  var src = $(img).attr('src');
+  if (rows.filter(':first').is(':visible')===true) {
+    rows.css('display','none');
+    $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+  } else {
+    rows.css('display','table-row'); // using show() causes jump in firefox
+    $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+  }
+}
+
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/files.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/files.html
new file mode 100644
index 0000000000000000000000000000000000000000..ddca97aee9d27e37dcf829c16b2859d4445f0e2f
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/files.html
@@ -0,0 +1,130 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: File List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('files.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">File List</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><img id="arr_0_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('0_')"/><img id="img_0_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_')"/><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html" target="_self">RD117_MBED</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_0_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_0_')"/><img id="img_0_0_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_0_')"/><a class="el" href="dir_19b53f07f52837a342947cc20e6d978f.html" target="_self">algorithm</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="algorithm_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="algorithm_8cpp.html" target="_self">algorithm.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="algorithm_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="algorithm_8h.html" target="_self">algorithm.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_0_1_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_1_')"/><img id="img_0_1_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_1_')"/><a class="el" href="dir_d4a9a7556cca61907ce453116086a23a.html" target="_self">MAX30102</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_0_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="_m_a_x30102_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="_m_a_x30102_8cpp.html" target="_self">MAX30102.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_1_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="_m_a_x30102_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="_m_a_x30102_8h.html" target="_self">MAX30102.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="main_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="main_8cpp.html" target="_self">main.cpp</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/files.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/files.js
new file mode 100644
index 0000000000000000000000000000000000000000..0b50c07c557a14b9fab49ba81c90706721989b44
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/files.js
@@ -0,0 +1,4 @@
+var files =
+[
+    [ "RD117_MBED", "dir_70c5cd4c8bba287fe799894cc0903ca4.html", "dir_70c5cd4c8bba287fe799894cc0903ca4" ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2blank.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2blank.png
new file mode 100644
index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2blank.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2cl.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2cl.png
new file mode 100644
index 0000000000000000000000000000000000000000..2bc4fdbf6f8b775f3742d1175be5049388a0a68c
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2cl.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2doc.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2doc.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba5e6c1631f064d0a1942010874a3047be703a37
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2doc.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2folderclosed.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2folderclosed.png
new file mode 100644
index 0000000000000000000000000000000000000000..1dea9569a3cc4a3856a3270f82d1e706cc71580d
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2folderclosed.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2folderopen.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2folderopen.png
new file mode 100644
index 0000000000000000000000000000000000000000..45ef3e2e68b6c14ec6474049fe1d19e8081c42b3
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2folderopen.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2lastnode.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2lastnode.png
new file mode 100644
index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2lastnode.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2link.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2link.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba5e6c1631f064d0a1942010874a3047be703a37
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2link.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mlastnode.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mlastnode.png
new file mode 100644
index 0000000000000000000000000000000000000000..0599622a5d11ab58f3a6d81f08176522f10f26b3
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mlastnode.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mnode.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mnode.png
new file mode 100644
index 0000000000000000000000000000000000000000..0599622a5d11ab58f3a6d81f08176522f10f26b3
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mnode.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mo.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mo.png
new file mode 100644
index 0000000000000000000000000000000000000000..2cb8cd206f118cb2383574b661d5ca560c7ab1d7
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mo.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2node.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2node.png
new file mode 100644
index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2node.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2ns.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2ns.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b65524618818dfc650ee3b833ed6568115838ce
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2ns.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2plastnode.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2plastnode.png
new file mode 100644
index 0000000000000000000000000000000000000000..f35d64c4b69adc64a0f61b1ec1808e04e5116bc0
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2plastnode.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2pnode.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2pnode.png
new file mode 100644
index 0000000000000000000000000000000000000000..f35d64c4b69adc64a0f61b1ec1808e04e5116bc0
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2pnode.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2splitbar.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2splitbar.png
new file mode 100644
index 0000000000000000000000000000000000000000..412a7a64a0cb8b4281d893eecd4447fe0b00c9a8
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2splitbar.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2vertline.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2vertline.png
new file mode 100644
index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2vertline.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/functions.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/functions.html
new file mode 100644
index 0000000000000000000000000000000000000000..52b6db98d6f8162ad890317ce24e180559385482
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/functions.html
@@ -0,0 +1,172 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&#160;Structure&#160;Index</span></a></li>
+      <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="functions.html"><span>All</span></a></li>
+      <li><a href="functions_func.html"><span>Functions</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('functions.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all struct and union fields with links to the structures/unions they belong to:</div><ul>
+<li>Adafruit_NeoPixel()
+: <a class="el" href="class_adafruit___neo_pixel.html#ac314debe6917c8c9b320b785139c6e58">Adafruit_NeoPixel</a>
+</li>
+<li>begin()
+: <a class="el" href="class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7">Adafruit_NeoPixel</a>
+</li>
+<li>canShow()
+: <a class="el" href="class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e">Adafruit_NeoPixel</a>
+</li>
+<li>clear()
+: <a class="el" href="class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204">Adafruit_NeoPixel</a>
+</li>
+<li>Color()
+: <a class="el" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec">Adafruit_NeoPixel</a>
+</li>
+<li>getBrightness()
+: <a class="el" href="class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f">Adafruit_NeoPixel</a>
+</li>
+<li>getPixelColor()
+: <a class="el" href="class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa">Adafruit_NeoPixel</a>
+</li>
+<li>getPixels()
+: <a class="el" href="class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067">Adafruit_NeoPixel</a>
+</li>
+<li>numPixels()
+: <a class="el" href="class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b">Adafruit_NeoPixel</a>
+</li>
+<li>setBrightness()
+: <a class="el" href="class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53">Adafruit_NeoPixel</a>
+</li>
+<li>setPin()
+: <a class="el" href="class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b">Adafruit_NeoPixel</a>
+</li>
+<li>setPixelColor()
+: <a class="el" href="class_adafruit___neo_pixel.html#abbf243cce591dc37be507cf173485bc8">Adafruit_NeoPixel</a>
+</li>
+<li>show()
+: <a class="el" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">Adafruit_NeoPixel</a>
+</li>
+<li>updateLength()
+: <a class="el" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">Adafruit_NeoPixel</a>
+</li>
+<li>updateType()
+: <a class="el" href="class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b">Adafruit_NeoPixel</a>
+</li>
+<li>~Adafruit_NeoPixel()
+: <a class="el" href="class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db">Adafruit_NeoPixel</a>
+</li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/functions_func.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/functions_func.html
new file mode 100644
index 0000000000000000000000000000000000000000..bb6045f8c031f2aa58b6166d6529cec815c9fae9
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/functions_func.html
@@ -0,0 +1,172 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&#160;Structure&#160;Index</span></a></li>
+      <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="functions.html"><span>All</span></a></li>
+      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('functions_func.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>Adafruit_NeoPixel()
+: <a class="el" href="class_adafruit___neo_pixel.html#ac314debe6917c8c9b320b785139c6e58">Adafruit_NeoPixel</a>
+</li>
+<li>begin()
+: <a class="el" href="class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7">Adafruit_NeoPixel</a>
+</li>
+<li>canShow()
+: <a class="el" href="class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e">Adafruit_NeoPixel</a>
+</li>
+<li>clear()
+: <a class="el" href="class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204">Adafruit_NeoPixel</a>
+</li>
+<li>Color()
+: <a class="el" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec">Adafruit_NeoPixel</a>
+</li>
+<li>getBrightness()
+: <a class="el" href="class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f">Adafruit_NeoPixel</a>
+</li>
+<li>getPixelColor()
+: <a class="el" href="class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa">Adafruit_NeoPixel</a>
+</li>
+<li>getPixels()
+: <a class="el" href="class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067">Adafruit_NeoPixel</a>
+</li>
+<li>numPixels()
+: <a class="el" href="class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b">Adafruit_NeoPixel</a>
+</li>
+<li>setBrightness()
+: <a class="el" href="class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53">Adafruit_NeoPixel</a>
+</li>
+<li>setPin()
+: <a class="el" href="class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b">Adafruit_NeoPixel</a>
+</li>
+<li>setPixelColor()
+: <a class="el" href="class_adafruit___neo_pixel.html#abbf243cce591dc37be507cf173485bc8">Adafruit_NeoPixel</a>
+</li>
+<li>show()
+: <a class="el" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">Adafruit_NeoPixel</a>
+</li>
+<li>updateLength()
+: <a class="el" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">Adafruit_NeoPixel</a>
+</li>
+<li>updateType()
+: <a class="el" href="class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b">Adafruit_NeoPixel</a>
+</li>
+<li>~Adafruit_NeoPixel()
+: <a class="el" href="class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db">Adafruit_NeoPixel</a>
+</li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals.html
new file mode 100644
index 0000000000000000000000000000000000000000..4821639f1964044c0b6307f50940a95ca812c940
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals.html
@@ -0,0 +1,368 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_defs.html"><span>Macros</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_a"><span>a</span></a></li>
+      <li><a href="#index_b"><span>b</span></a></li>
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_f"><span>f</span></a></li>
+      <li><a href="#index_h"><span>h</span></a></li>
+      <li><a href="#index_i"><span>i</span></a></li>
+      <li><a href="#index_m"><span>m</span></a></li>
+      <li><a href="#index_n"><span>n</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
+      <li><a href="#index_r"><span>r</span></a></li>
+      <li><a href="#index_t"><span>t</span></a></li>
+      <li><a href="#index_u"><span>u</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('globals.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
+
+<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
+<li>aun_ir_buffer
+: <a class="el" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">main.cpp</a>
+</li>
+<li>aun_red_buffer
+: <a class="el" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">main.cpp</a>
+</li>
+<li>auw_hamm
+: <a class="el" href="algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929">algorithm.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
+<li>BUFFER_SIZE
+: <a class="el" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">algorithm.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>ch_hr_valid
+: <a class="el" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">main.cpp</a>
+</li>
+<li>ch_spo2_valid
+: <a class="el" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">main.cpp</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<li>false
+: <a class="el" href="algorithm_8h.html#a65e9886d74aaee76545e83dd09011727">algorithm.h</a>
+</li>
+<li>FS
+: <a class="el" href="algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119">algorithm.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
+<li>HAMMING_SIZE
+: <a class="el" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">algorithm.h</a>
+</li>
+<li>HR_FIFO_SIZE
+: <a class="el" href="algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524">algorithm.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<li>i2c()
+: <a class="el" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">MAX30102.cpp</a>
+</li>
+<li>I2C_READ_ADDR
+: <a class="el" href="_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37">MAX30102.h</a>
+</li>
+<li>I2C_WRITE_ADDR
+: <a class="el" href="_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">MAX30102.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
+<li>MA4_SIZE
+: <a class="el" href="algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae">algorithm.h</a>
+</li>
+<li>main()
+: <a class="el" href="main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main.cpp</a>
+</li>
+<li>MAX_BRIGHTNESS
+: <a class="el" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">main.cpp</a>
+</li>
+<li>maxim_find_peaks()
+: <a class="el" href="algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9">algorithm.cpp</a>
+, <a class="el" href="algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9">algorithm.h</a>
+</li>
+<li>maxim_heart_rate_and_oxygen_saturation()
+: <a class="el" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6">algorithm.cpp</a>
+, <a class="el" href="algorithm_8h.html#a62050365673e666cd0d661a3664c26e6">algorithm.h</a>
+</li>
+<li>maxim_max30102_init()
+: <a class="el" href="_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df">MAX30102.cpp</a>
+, <a class="el" href="_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df">MAX30102.h</a>
+</li>
+<li>maxim_max30102_read_fifo()
+: <a class="el" href="_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968">MAX30102.cpp</a>
+, <a class="el" href="_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968">MAX30102.h</a>
+</li>
+<li>maxim_max30102_read_reg()
+: <a class="el" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f">MAX30102.cpp</a>
+, <a class="el" href="_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f">MAX30102.h</a>
+</li>
+<li>maxim_max30102_reset()
+: <a class="el" href="_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd">MAX30102.h</a>
+, <a class="el" href="_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b">MAX30102.cpp</a>
+</li>
+<li>maxim_max30102_write_reg()
+: <a class="el" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">MAX30102.cpp</a>
+, <a class="el" href="_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">MAX30102.h</a>
+</li>
+<li>maxim_peaks_above_min_height()
+: <a class="el" href="algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf">algorithm.cpp</a>
+, <a class="el" href="algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf">algorithm.h</a>
+</li>
+<li>maxim_remove_close_peaks()
+: <a class="el" href="algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a">algorithm.cpp</a>
+, <a class="el" href="algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a">algorithm.h</a>
+</li>
+<li>maxim_sort_ascend()
+: <a class="el" href="algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff">algorithm.h</a>
+, <a class="el" href="algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff">algorithm.cpp</a>
+</li>
+<li>maxim_sort_indices_descend()
+: <a class="el" href="algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060">algorithm.cpp</a>
+, <a class="el" href="algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060">algorithm.h</a>
+</li>
+<li>min
+: <a class="el" href="algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384">algorithm.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>n_heart_rate
+: <a class="el" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">main.cpp</a>
+</li>
+<li>n_ir_buffer_length
+: <a class="el" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">main.cpp</a>
+</li>
+<li>n_sp02
+: <a class="el" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">main.cpp</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>pc()
+: <a class="el" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">main.cpp</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
+<li>REG_FIFO_CONFIG
+: <a class="el" href="_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca">MAX30102.h</a>
+</li>
+<li>REG_FIFO_DATA
+: <a class="el" href="_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd">MAX30102.h</a>
+</li>
+<li>REG_FIFO_RD_PTR
+: <a class="el" href="_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f">MAX30102.h</a>
+</li>
+<li>REG_FIFO_WR_PTR
+: <a class="el" href="_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115">MAX30102.h</a>
+</li>
+<li>REG_INTR_ENABLE_1
+: <a class="el" href="_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d">MAX30102.h</a>
+</li>
+<li>REG_INTR_ENABLE_2
+: <a class="el" href="_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1">MAX30102.h</a>
+</li>
+<li>REG_INTR_STATUS_1
+: <a class="el" href="_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191">MAX30102.h</a>
+</li>
+<li>REG_INTR_STATUS_2
+: <a class="el" href="_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a">MAX30102.h</a>
+</li>
+<li>REG_LED1_PA
+: <a class="el" href="_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b">MAX30102.h</a>
+</li>
+<li>REG_LED2_PA
+: <a class="el" href="_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21">MAX30102.h</a>
+</li>
+<li>REG_MODE_CONFIG
+: <a class="el" href="_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">MAX30102.h</a>
+</li>
+<li>REG_MULTI_LED_CTRL1
+: <a class="el" href="_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c">MAX30102.h</a>
+</li>
+<li>REG_MULTI_LED_CTRL2
+: <a class="el" href="_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10">MAX30102.h</a>
+</li>
+<li>REG_OVF_COUNTER
+: <a class="el" href="_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707">MAX30102.h</a>
+</li>
+<li>REG_PART_ID
+: <a class="el" href="_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163">MAX30102.h</a>
+</li>
+<li>REG_PILOT_PA
+: <a class="el" href="_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1">MAX30102.h</a>
+</li>
+<li>REG_PROX_INT_THRESH
+: <a class="el" href="_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab">MAX30102.h</a>
+</li>
+<li>REG_REV_ID
+: <a class="el" href="_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23">MAX30102.h</a>
+</li>
+<li>REG_SPO2_CONFIG
+: <a class="el" href="_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0">MAX30102.h</a>
+</li>
+<li>REG_TEMP_CONFIG
+: <a class="el" href="_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379">MAX30102.h</a>
+</li>
+<li>REG_TEMP_FRAC
+: <a class="el" href="_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d">MAX30102.h</a>
+</li>
+<li>REG_TEMP_INTR
+: <a class="el" href="_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681">MAX30102.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
+<li>true
+: <a class="el" href="algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">algorithm.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<li>uch_dummy
+: <a class="el" href="main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2">main.cpp</a>
+</li>
+<li>uch_spo2_table
+: <a class="el" href="algorithm_8h.html#adfeeb6b08271807492803acc50347108">algorithm.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_defs.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_defs.html
new file mode 100644
index 0000000000000000000000000000000000000000..06240b814609445f845d01f057def6369f8ba3c9
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_defs.html
@@ -0,0 +1,260 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li class="current"><a href="globals_defs.html"><span>Macros</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_b"><span>b</span></a></li>
+      <li><a href="#index_f"><span>f</span></a></li>
+      <li><a href="#index_h"><span>h</span></a></li>
+      <li><a href="#index_i"><span>i</span></a></li>
+      <li><a href="#index_m"><span>m</span></a></li>
+      <li><a href="#index_r"><span>r</span></a></li>
+      <li><a href="#index_t"><span>t</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('globals_defs.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
+<li>BUFFER_SIZE
+: <a class="el" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">algorithm.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<li>false
+: <a class="el" href="algorithm_8h.html#a65e9886d74aaee76545e83dd09011727">algorithm.h</a>
+</li>
+<li>FS
+: <a class="el" href="algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119">algorithm.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
+<li>HAMMING_SIZE
+: <a class="el" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">algorithm.h</a>
+</li>
+<li>HR_FIFO_SIZE
+: <a class="el" href="algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524">algorithm.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<li>I2C_READ_ADDR
+: <a class="el" href="_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37">MAX30102.h</a>
+</li>
+<li>I2C_WRITE_ADDR
+: <a class="el" href="_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">MAX30102.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
+<li>MA4_SIZE
+: <a class="el" href="algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae">algorithm.h</a>
+</li>
+<li>MAX_BRIGHTNESS
+: <a class="el" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">main.cpp</a>
+</li>
+<li>min
+: <a class="el" href="algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384">algorithm.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
+<li>REG_FIFO_CONFIG
+: <a class="el" href="_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca">MAX30102.h</a>
+</li>
+<li>REG_FIFO_DATA
+: <a class="el" href="_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd">MAX30102.h</a>
+</li>
+<li>REG_FIFO_RD_PTR
+: <a class="el" href="_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f">MAX30102.h</a>
+</li>
+<li>REG_FIFO_WR_PTR
+: <a class="el" href="_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115">MAX30102.h</a>
+</li>
+<li>REG_INTR_ENABLE_1
+: <a class="el" href="_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d">MAX30102.h</a>
+</li>
+<li>REG_INTR_ENABLE_2
+: <a class="el" href="_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1">MAX30102.h</a>
+</li>
+<li>REG_INTR_STATUS_1
+: <a class="el" href="_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191">MAX30102.h</a>
+</li>
+<li>REG_INTR_STATUS_2
+: <a class="el" href="_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a">MAX30102.h</a>
+</li>
+<li>REG_LED1_PA
+: <a class="el" href="_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b">MAX30102.h</a>
+</li>
+<li>REG_LED2_PA
+: <a class="el" href="_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21">MAX30102.h</a>
+</li>
+<li>REG_MODE_CONFIG
+: <a class="el" href="_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">MAX30102.h</a>
+</li>
+<li>REG_MULTI_LED_CTRL1
+: <a class="el" href="_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c">MAX30102.h</a>
+</li>
+<li>REG_MULTI_LED_CTRL2
+: <a class="el" href="_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10">MAX30102.h</a>
+</li>
+<li>REG_OVF_COUNTER
+: <a class="el" href="_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707">MAX30102.h</a>
+</li>
+<li>REG_PART_ID
+: <a class="el" href="_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163">MAX30102.h</a>
+</li>
+<li>REG_PILOT_PA
+: <a class="el" href="_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1">MAX30102.h</a>
+</li>
+<li>REG_PROX_INT_THRESH
+: <a class="el" href="_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab">MAX30102.h</a>
+</li>
+<li>REG_REV_ID
+: <a class="el" href="_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23">MAX30102.h</a>
+</li>
+<li>REG_SPO2_CONFIG
+: <a class="el" href="_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0">MAX30102.h</a>
+</li>
+<li>REG_TEMP_CONFIG
+: <a class="el" href="_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379">MAX30102.h</a>
+</li>
+<li>REG_TEMP_FRAC
+: <a class="el" href="_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d">MAX30102.h</a>
+</li>
+<li>REG_TEMP_INTR
+: <a class="el" href="_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681">MAX30102.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
+<li>true
+: <a class="el" href="algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">algorithm.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_func.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_func.html
new file mode 100644
index 0000000000000000000000000000000000000000..e6ac928f362ba224a0421ea845d1a96997f859d1
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_func.html
@@ -0,0 +1,177 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_defs.html"><span>Macros</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('globals_func.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>i2c()
+: <a class="el" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">MAX30102.cpp</a>
+</li>
+<li>main()
+: <a class="el" href="main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main.cpp</a>
+</li>
+<li>maxim_find_peaks()
+: <a class="el" href="algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9">algorithm.cpp</a>
+, <a class="el" href="algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9">algorithm.h</a>
+</li>
+<li>maxim_heart_rate_and_oxygen_saturation()
+: <a class="el" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6">algorithm.cpp</a>
+, <a class="el" href="algorithm_8h.html#a62050365673e666cd0d661a3664c26e6">algorithm.h</a>
+</li>
+<li>maxim_max30102_init()
+: <a class="el" href="_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df">MAX30102.cpp</a>
+, <a class="el" href="_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df">MAX30102.h</a>
+</li>
+<li>maxim_max30102_read_fifo()
+: <a class="el" href="_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968">MAX30102.cpp</a>
+, <a class="el" href="_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968">MAX30102.h</a>
+</li>
+<li>maxim_max30102_read_reg()
+: <a class="el" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f">MAX30102.cpp</a>
+, <a class="el" href="_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f">MAX30102.h</a>
+</li>
+<li>maxim_max30102_reset()
+: <a class="el" href="_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b">MAX30102.cpp</a>
+, <a class="el" href="_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd">MAX30102.h</a>
+</li>
+<li>maxim_max30102_write_reg()
+: <a class="el" href="_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">MAX30102.h</a>
+, <a class="el" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">MAX30102.cpp</a>
+</li>
+<li>maxim_peaks_above_min_height()
+: <a class="el" href="algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf">algorithm.h</a>
+, <a class="el" href="algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf">algorithm.cpp</a>
+</li>
+<li>maxim_remove_close_peaks()
+: <a class="el" href="algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a">algorithm.cpp</a>
+, <a class="el" href="algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a">algorithm.h</a>
+</li>
+<li>maxim_sort_ascend()
+: <a class="el" href="algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff">algorithm.cpp</a>
+, <a class="el" href="algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff">algorithm.h</a>
+</li>
+<li>maxim_sort_indices_descend()
+: <a class="el" href="algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060">algorithm.h</a>
+, <a class="el" href="algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060">algorithm.cpp</a>
+</li>
+<li>pc()
+: <a class="el" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">main.cpp</a>
+</li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_type.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_type.html
new file mode 100644
index 0000000000000000000000000000000000000000..9534022753f25c0001100a145bd943ff31859df8
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_type.html
@@ -0,0 +1,129 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_defs.html"><span>Macros</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('globals_type.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>neoPixelType
+: <a class="el" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">Adafruit_NeoPixel.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_vars.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_vars.html
new file mode 100644
index 0000000000000000000000000000000000000000..9e5173c39d779cc00433cab41eeae81498937a8c
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_vars.html
@@ -0,0 +1,154 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li class="current"><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_defs.html"><span>Macros</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('globals_vars.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>aun_ir_buffer
+: <a class="el" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">main.cpp</a>
+</li>
+<li>aun_red_buffer
+: <a class="el" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">main.cpp</a>
+</li>
+<li>auw_hamm
+: <a class="el" href="algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929">algorithm.h</a>
+</li>
+<li>ch_hr_valid
+: <a class="el" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">main.cpp</a>
+</li>
+<li>ch_spo2_valid
+: <a class="el" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">main.cpp</a>
+</li>
+<li>n_heart_rate
+: <a class="el" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">main.cpp</a>
+</li>
+<li>n_ir_buffer_length
+: <a class="el" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">main.cpp</a>
+</li>
+<li>n_sp02
+: <a class="el" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">main.cpp</a>
+</li>
+<li>uch_dummy
+: <a class="el" href="main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2">main.cpp</a>
+</li>
+<li>uch_spo2_table
+: <a class="el" href="algorithm_8h.html#adfeeb6b08271807492803acc50347108">algorithm.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/index.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..de51293c70c81905709d747ae7af8eae06ae0826
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/index.html
@@ -0,0 +1,125 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('index.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Main Page </div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h1><a class="anchor" id="intro_sec"></a>
+Introduction</h1>
+<p>This is the code documentation for the MAXREFDES117# subsystem reference design.</p>
+<p>The Files page contains the File List page and the Globals page.</p>
+<p>The Globals page contains the Functions, Variables, and Macros sub-pages.</p>
+<div class="image">
+<img src="MAXREFDES117_Block_Diagram.png" alt="MAXREFDES117_Block_Diagram.png"/>
+<div class="caption">
+MAXREFDES117# System Block Diagram</div></div>
+ <div class="image">
+<img src="MAXREFDES117_firmware_Flowchart.png" alt="MAXREFDES117_firmware_Flowchart.png"/>
+<div class="caption">
+MAXREFDES117# Firmware Flowchart</div></div>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/jquery.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/jquery.js
new file mode 100644
index 0000000000000000000000000000000000000000..78ad0bdffa52e6ecd92f10fe1a32e552e8eb4053
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/jquery.js
@@ -0,0 +1,77 @@
+/*! jQuery v1.7.1 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function()
+{g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
+f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d
+&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),
+f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
+{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c)
+{if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
+/*!
+ * jQuery UI 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)});return c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode)for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;if(b[d]>0)return!0;b[d]=1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}}))})(jQuery);
+/*!
+ * jQuery UI Widget 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}});return d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e;if(f&&e.charAt(0)==="_")return h;f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b){h=f;return!1}}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))});return h}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}this._setOptions(e);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b);return this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);this.element.trigger(c,d);return!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);
+/*!
+ * jQuery UI Mouse 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ */
+(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent")){a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation();return!1}}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(b){if(!c){this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted){b.preventDefault();return!0}}!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0;return!0}},_mouseMove:function(b){if(a.browser.msie&&!(document.documentMode>=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);
+/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function(a,b){a.widget("ui.resizable",a.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var b=this,c=this.options;this.element.addClass("ui-resizable"),a.extend(this,{_aspectRatio:!!c.aspectRatio,aspectRatio:c.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:c.helper||c.ghost||c.animate?c.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(a('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e<d.length;e++){var f=a.trim(d[e]),g="ui-resizable-"+f,h=a('<div class="ui-resizable-handle '+g+'"></div>');/sw|se|ne|nw/.test(f)&&h.css({zIndex:++c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){c.disabled||(a(this).removeClass("ui-resizable-autohide"),b._handles.show())},function(){c.disabled||b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement);return this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b);return!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui());return!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),e<h.maxWidth&&(h.maxWidth=e),g<h.maxHeight&&(h.maxHeight=g);this._vBoundaries=h},_updateCache:function(a){var b=this.options;this.offset=this.helper.offset(),d(a.left)&&(this.position.left=a.left),d(a.top)&&(this.position.top=a.top),d(a.height)&&(this.size.height=a.height),d(a.width)&&(this.size.width=a.width)},_updateRatio:function(a,b){var c=this.options,e=this.position,f=this.size,g=this.axis;d(a.height)?a.width=a.height*this.aspectRatio:d(a.width)&&(a.height=a.width/this.aspectRatio),g=="sw"&&(a.left=e.left+(f.width-a.width),a.top=null),g=="nw"&&(a.top=e.top+(f.height-a.height),a.left=e.left+(f.width-a.width));return a},_respectSize:function(a,b){var c=this.helper,e=this._vBoundaries,f=this._aspectRatio||b.shiftKey,g=this.axis,h=d(a.width)&&e.maxWidth&&e.maxWidth<a.width,i=d(a.height)&&e.maxHeight&&e.maxHeight<a.height,j=d(a.width)&&e.minWidth&&e.minWidth>a.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null);return a},_proportionallyResize:function(){var b=this.options;if(!!this._proportionallyResizeElements.length){var c=this.helper||this.element;for(var d=0;d<this._proportionallyResizeElements.length;d++){var e=this._proportionallyResizeElements[d];if(!this.borderDif){var f=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],g=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];this.borderDif=a.map(f,function(a,b){var c=parseInt(a,10)||0,d=parseInt(g[b],10)||0;return c+d})}if(a.browser.msie&&(!!a(c).is(":hidden")||!!a(c).parents(":hidden").length))continue;e.css({height:c.height()-this.borderDif[0]-this.borderDif[2]||0,width:c.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var b=this.element,c=this.options;this.elementOffset=b.offset();if(this._helper){this.helper=this.helper||a('<div style="overflow:hidden;"></div>');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.18"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!!i){e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/e.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*e.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p
+&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}})(jQuery);
+/*
+ * jQuery hashchange event - v1.3 - 7/21/2010
+ * http://benalman.com/projects/jquery-hashchange-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);
+/**
+ * jQuery.ScrollTo - Easy element scrolling using jQuery.
+ * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Dual licensed under MIT and GPL.
+ * Date: 5/25/2009
+ * @author Ariel Flesler
+ * @version 1.4.2
+ *
+ * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
+ */
+;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..82750057954aae245e4b48f9765531ff8d043bb5
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp.html
@@ -0,0 +1,339 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_MBED/main.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('main_8cpp.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Macros</a> &#124;
+<a href="#func-members">Functions</a> &#124;
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">main.cpp File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;mbed.h&quot;</code><br/>
+<code>#include &quot;<a class="el" href="algorithm_8h_source.html">algorithm.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>&quot;</code><br/>
+</div>
+<p><a href="main_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a2134a5a06f0865c945543a1f07eba387"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>&#160;&#160;&#160;255</td></tr>
+<tr class="separator:a2134a5a06f0865c945543a1f07eba387"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a81e0624d7e9f10f8f7e52a569ba24753"><td class="memItemLeft" align="right" valign="top">Serial&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a> (USBTX, USBRX)</td></tr>
+<tr class="separator:a81e0624d7e9f10f8f7e52a569ba24753"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
+<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a07a24850120a56110cc2838d0afcafcf"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a> [500]</td></tr>
+<tr class="separator:a07a24850120a56110cc2838d0afcafcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac16b6dd0e762f0ccc30e7102f97260d6"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a></td></tr>
+<tr class="separator:ac16b6dd0e762f0ccc30e7102f97260d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a85d1012c3814f9e393e6ff8d84e56723"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a> [500]</td></tr>
+<tr class="separator:a85d1012c3814f9e393e6ff8d84e56723"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a786e6c57c793d9af51360154ef90eb93"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">n_sp02</a></td></tr>
+<tr class="separator:a786e6c57c793d9af51360154ef90eb93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2518324dce002f592cf6d7f0b1ad9024"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a></td></tr>
+<tr class="separator:a2518324dce002f592cf6d7f0b1ad9024"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3171c70bfa71c3a4f960bf3e8203d13f"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a></td></tr>
+<tr class="separator:a3171c70bfa71c3a4f960bf3e8203d13f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a43fb8ea97a26647405ca359095323280"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a></td></tr>
+<tr class="separator:a43fb8ea97a26647405ca359095323280"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac5e493da8cbdd1414d56e8f08282fcc2"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a></td></tr>
+<tr class="separator:ac5e493da8cbdd1414d56e8f08282fcc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><hr/>
+<p>Project: MAXREFDES117# Filename: <a class="el" href="main_8cpp.html">main.cpp</a> Description: This module contains the Main application for the MAXREFDES117 example program. <hr/>
+<p>This code follows the following naming conventions:</p>
+<p>char ch_pmod_value char (array) s_pmod_s_string[16] float f_pmod_value int32_t n_pmod_value int32_t (array) an_pmod_value[16] int16_t w_pmod_value int16_t (array) aw_pmod_value[16] uint16_t uw_pmod_value uint16_t (array) auw_pmod_value[16] uint8_t uch_pmod_value uint8_t (array) auch_pmod_buffer[16] uint32_t un_pmod_value int32_t * pn_pmod_value <hr/>
+
+<p>Definition in file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
+</div><h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="a2134a5a06f0865c945543a1f07eba387"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define MAX_BRIGHTNESS&#160;&#160;&#160;255</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="main_8cpp_source.html#l00078">78</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int main </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="main_8cpp_source.html#l00103">103</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a81e0624d7e9f10f8f7e52a569ba24753"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">Serial pc </td>
+          <td>(</td>
+          <td class="paramtype">USBTX&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">USBRX&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Variable Documentation</h2>
+<a class="anchor" id="a07a24850120a56110cc2838d0afcafcf"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">uint32_t aun_ir_buffer[500]</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="main_8cpp_source.html#l00080">80</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a85d1012c3814f9e393e6ff8d84e56723"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">uint32_t aun_red_buffer[500]</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="main_8cpp_source.html#l00082">82</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a43fb8ea97a26647405ca359095323280"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int8_t ch_hr_valid</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="main_8cpp_source.html#l00086">86</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2518324dce002f592cf6d7f0b1ad9024"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int8_t ch_spo2_valid</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="main_8cpp_source.html#l00084">84</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3171c70bfa71c3a4f960bf3e8203d13f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int32_t n_heart_rate</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="main_8cpp_source.html#l00085">85</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac16b6dd0e762f0ccc30e7102f97260d6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int32_t n_ir_buffer_length</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="main_8cpp_source.html#l00081">81</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a786e6c57c793d9af51360154ef90eb93"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int32_t n_sp02</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="main_8cpp_source.html#l00083">83</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac5e493da8cbdd1414d56e8f08282fcc2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">uint8_t uch_dummy</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="main_8cpp_source.html#l00087">87</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="main_8cpp.html">main.cpp</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp.js
new file mode 100644
index 0000000000000000000000000000000000000000..103f1ed8d7e3a58b484eae88eac101acc16497bb
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp.js
@@ -0,0 +1,14 @@
+var main_8cpp =
+[
+    [ "MAX_BRIGHTNESS", "main_8cpp.html#a2134a5a06f0865c945543a1f07eba387", null ],
+    [ "main", "main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4", null ],
+    [ "pc", "main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753", null ],
+    [ "aun_ir_buffer", "main_8cpp.html#a07a24850120a56110cc2838d0afcafcf", null ],
+    [ "aun_red_buffer", "main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723", null ],
+    [ "ch_hr_valid", "main_8cpp.html#a43fb8ea97a26647405ca359095323280", null ],
+    [ "ch_spo2_valid", "main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024", null ],
+    [ "n_heart_rate", "main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f", null ],
+    [ "n_ir_buffer_length", "main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6", null ],
+    [ "n_sp02", "main_8cpp.html#a786e6c57c793d9af51360154ef90eb93", null ],
+    [ "uch_dummy", "main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2", null ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..677f249c74c06de4bec7003b989163124dc3bbc8
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp_source.html
@@ -0,0 +1,298 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_MBED/main.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('main_8cpp_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">main.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="main_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">/*******************************************************************************</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">* copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">* to deal in the Software without restriction, including without limitation</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">* The above copyright notice and this permission notice shall be included</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">* in all copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">* THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">* Products, Inc. Branding Policy.</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment">* The mere transfer of this software does not imply any licenses</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">* ownership rights.</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">*******************************************************************************</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">*/</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="preprocessor">#include &quot;mbed.h&quot;</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="algorithm_8h.html">algorithm.h</a>&quot;</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_m_a_x30102_8h.html">MAX30102.h</a>&quot;</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">   78</a></span>&#160;<span class="preprocessor">#define MAX_BRIGHTNESS 255</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">   80</a></span>&#160;uint32_t <a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>[500]; <span class="comment">//IR LED sensor data</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">   81</a></span>&#160;int32_t <a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>;    <span class="comment">//data length</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">   82</a></span>&#160;uint32_t <a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[500];    <span class="comment">//Red LED sensor data</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">   83</a></span>&#160;int32_t <a class="code" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">n_sp02</a>; <span class="comment">//SPO2 value</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"><a class="code" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">   84</a></span>&#160;int8_t <a class="code" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>;   <span class="comment">//indicator to show if the SP02 calculation is valid</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">   85</a></span>&#160;int32_t <a class="code" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>;   <span class="comment">//heart rate value</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">   86</a></span>&#160;int8_t  <a class="code" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>;    <span class="comment">//indicator to show if the heart rate calculation is valid</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2">   87</a></span>&#160;uint8_t <a class="code" href="main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a>;</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;Serial <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>(USBTX, USBRX);    <span class="comment">//initializes the serial port</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="preprocessor">#ifdef TARGET_KL25Z </span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="preprocessor"></span>PwmOut led(PTB18);  <span class="comment">//initializes the pwm output that connects to the on board LED</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;DigitalIn INT(PTD1);  <span class="comment">//pin PTD1 connects to the interrupt output pin of the MAX30102</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#ifdef TARGET_K64F</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor"></span>DigitalIn INT(PTD1);  <span class="comment">//pin PTD1 connects to the interrupt output pin of the MAX30102</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#ifdef TARGET_MAX32600MBED</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="preprocessor"></span>PwmOut led(LED_RED);    <span class="comment">//initializes the pwm output that connects to the on board LED</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;DigitalIn INT(P2_0);  <span class="comment">//pin P20 connects to the interrupt output pin of the MAX30102</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="comment">// the setup routine runs once when you press reset:</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="code" href="main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">  103</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a>() { </div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    uint32_t un_min, un_max, un_prev_data;  <span class="comment">//variables to calculate the on-board LED brightness that reflects the heartbeats</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    int32_t n_brightness;</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keywordtype">float</span> f_temp;</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    </div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <a class="code" href="_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b" title="Reset the MAX30102.">maxim_max30102_reset</a>(); <span class="comment">//resets the MAX30102</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="comment">// initialize serial communication at 115200 bits per second:</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.baud(115200);</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.format(8,SerialBase::None,1);</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    wait(1);</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    </div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="comment">//read and clear status register</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    <a class="code" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(0,&amp;<a class="code" href="main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a>);</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    </div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="comment">//wait until the user presses a key</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <span class="keywordflow">while</span>(<a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.readable()==0)</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    {</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">&quot;\x1B[2J&quot;</span>);  <span class="comment">//clear terminal program screen</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">&quot;Press any key to start conversion\n\r&quot;</span>);</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        wait(1);</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    }</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <a class="code" href="main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a>=getchar();</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    </div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <a class="code" href="_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df" title="Initialize the MAX30102.">maxim_max30102_init</a>();  <span class="comment">//initializes the MAX30102</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        </div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        </div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    n_brightness=0;</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    un_min=0x3FFFF;</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    un_max=0;</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  </div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>=500; <span class="comment">//buffer length of 100 stores 5 seconds of samples running at 100sps</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    </div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="comment">//read the first 500 samples, and determine the signal range</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>;i++)</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    {</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        <span class="keywordflow">while</span>(INT.read()==1);   <span class="comment">//wait until the interrupt pin asserts</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        </div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;        <a class="code" href="_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>((<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>+i), (<a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>+i));  <span class="comment">//read from MAX30102 FIFO</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;            </div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;        <span class="keywordflow">if</span>(un_min&gt;<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i])</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;            un_min=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i];    <span class="comment">//update signal min</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;        <span class="keywordflow">if</span>(un_max&lt;<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i])</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;            un_max=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i];    <span class="comment">//update signal max</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">&quot;red=&quot;</span>);</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i]);</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;        <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">&quot;, ir=&quot;</span>);</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;        <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">&quot;%i\n\r&quot;</span>, <a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>[i]);</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    }</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    un_prev_data=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i];</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    </div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    </div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <span class="comment">//calculate heart rate and SpO2 after first 500 samples (first 5 seconds of samples)</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <a class="code" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6" title="Calculate the heart rate and SpO2 level.">maxim_heart_rate_and_oxygen_saturation</a>(<a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>, n_ir_buffer_length, <a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>, &amp;<a class="code" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">n_sp02</a>, &amp;<a class="code" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>, &amp;<a class="code" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>, &amp;<a class="code" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>); </div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    </div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <span class="comment">//Continuously taking samples from MAX30102.  Heart rate and SpO2 are calculated every 1 second</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="keywordflow">while</span>(1)</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    {</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        i=0;</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        un_min=0x3FFFF;</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;        un_max=0;</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;        </div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;        <span class="comment">//dumping the first 100 sets of samples in the memory and shift the last 400 sets of samples to the top</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        <span class="keywordflow">for</span>(i=100;i&lt;500;i++)</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        {</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;            <a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i-100]=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i];</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;            <a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>[i-100]=<a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>[i];</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;            </div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;            <span class="comment">//update the signal min and max</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;            <span class="keywordflow">if</span>(un_min&gt;<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i])</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;            un_min=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i];</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;            <span class="keywordflow">if</span>(un_max&lt;<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i])</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;            un_max=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i];</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        }</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        </div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;        <span class="comment">//take 100 sets of samples before calculating the heart rate.</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;        <span class="keywordflow">for</span>(i=400;i&lt;500;i++)</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        {</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;            un_prev_data=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i-1];</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;            <span class="keywordflow">while</span>(INT.read()==1);</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;            <a class="code" href="_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>((<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>+i), (<a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>+i));</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        </div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;            <span class="keywordflow">if</span>(<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i]&gt;un_prev_data)</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;            {</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;                f_temp=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i]-un_prev_data;</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;                f_temp/=(un_max-un_min);</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;                f_temp*=<a class="code" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>;</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;                n_brightness-=(int)f_temp;</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;                <span class="keywordflow">if</span>(n_brightness&lt;0)</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;                    n_brightness=0;</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;            }</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;            <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;            {</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;                f_temp=un_prev_data-<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i];</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                f_temp/=(un_max-un_min);</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;                f_temp*=<a class="code" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>;</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;                n_brightness+=(int)f_temp;</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;                <span class="keywordflow">if</span>(n_brightness&gt;<a class="code" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>)</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;                    n_brightness=<a class="code" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>;</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;            }</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="preprocessor">#if defined(TARGET_KL25Z) || defined(TARGET_MAX32600MBED)</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;<span class="preprocessor"></span>            led.write(1-(<span class="keywordtype">float</span>)n_brightness/256);</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="preprocessor"></span>            <span class="comment">//send samples and calculation result to terminal program through UART</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;            <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">&quot;red=&quot;</span>);</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;            <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i]);</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;            <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">&quot;, ir=&quot;</span>);</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;            <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>[i]);</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;            <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">&quot;, HR=%i, &quot;</span>, <a class="code" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>); </div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;            <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">&quot;HRvalid=%i, &quot;</span>, <a class="code" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>);</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;            <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">&quot;SpO2=%i, &quot;</span>, <a class="code" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">n_sp02</a>);</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;            <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">&quot;SPO2Valid=%i\n\r&quot;</span>, <a class="code" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>);</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;        }</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;        <a class="code" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6" title="Calculate the heart rate and SpO2 level.">maxim_heart_rate_and_oxygen_saturation</a>(<a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>, n_ir_buffer_length, <a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>, &amp;<a class="code" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">n_sp02</a>, &amp;<a class="code" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>, &amp;<a class="code" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>, &amp;<a class="code" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>); </div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    }</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;}</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160; </div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="main_8cpp.html">main.cpp</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..8f38ddc93c05fb0c7b98d743a7baf262b7134ad1
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp.html
@@ -0,0 +1,354 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/max30102.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('max30102_8cpp.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">max30102.cpp File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="max30102_8h_source.html">max30102.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="algorithm_8h_source.html">algorithm.h</a>&quot;</code><br/>
+</div>
+<p><a href="max30102_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">maxim_max30102_write_reg</a> (uint8_t uch_addr, uint8_t uch_data)</td></tr>
+<tr class="memdesc:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a value to a MAX30102 register.  <a href="#a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a><br/></td></tr>
+<tr class="separator:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f">maxim_max30102_read_reg</a> (uint8_t uch_addr, uint8_t *puch_data)</td></tr>
+<tr class="memdesc:a0cd2c5a58e57ebbe8c9361384798331f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a MAX30102 register.  <a href="#a0cd2c5a58e57ebbe8c9361384798331f"></a><br/></td></tr>
+<tr class="separator:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4113aeee76935425d8a557a79a4193df"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8cpp.html#a4113aeee76935425d8a557a79a4193df">maxim_max30102_init</a> ()</td></tr>
+<tr class="memdesc:a4113aeee76935425d8a557a79a4193df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the MAX30102.  <a href="#a4113aeee76935425d8a557a79a4193df"></a><br/></td></tr>
+<tr class="separator:a4113aeee76935425d8a557a79a4193df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968">maxim_max30102_read_fifo</a> (uint32_t *pun_red_led, uint32_t *pun_ir_led)</td></tr>
+<tr class="memdesc:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a set of samples from the MAX30102 FIFO register.  <a href="#a483073cbc9dbb7a5a2495ce2ae4fb968"></a><br/></td></tr>
+<tr class="separator:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1df3bb178b66379a2975c56395c47d9b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b">maxim_max30102_reset</a> ()</td></tr>
+<tr class="memdesc:a1df3bb178b66379a2975c56395c47d9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the MAX30102.  <a href="#a1df3bb178b66379a2975c56395c47d9b"></a><br/></td></tr>
+<tr class="separator:a1df3bb178b66379a2975c56395c47d9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><pre class="fragment">******************************************************
+</pre><p>Project: MAXREFDES117# Filename: <a class="el" href="max30102_8cpp.html">max30102.cpp</a> Description: This module is an embedded controller driver for the MAX30102</p>
+<p>Revision History: <br/>
+ 1-18-2016 Rev 01.00 GL Initial release. <br/>
+ <hr/>
+<p>This code follows the following naming conventions:</p>
+<p>char ch_pmod_value char (array) s_pmod_s_string[16] float f_pmod_value int32_t n_pmod_value int32_t (array) an_pmod_value[16] int16_t w_pmod_value int16_t (array) aw_pmod_value[16] uint16_t uw_pmod_value uint16_t (array) auw_pmod_value[16] uint8_t uch_pmod_value uint8_t (array) auch_pmod_buffer[16] uint32_t un_pmod_value int32_t * pn_pmod_value <hr/>
+
+<p>Definition in file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p>
+</div><h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a4113aeee76935425d8a557a79a4193df"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_init </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Initialize the MAX30102. </p>
+<dl class="section user"><dt>Details</dt><dd>This function initializes the MAX30102</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00111">111</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a483073cbc9dbb7a5a2495ce2ae4fb968"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_read_fifo </td>
+          <td>(</td>
+          <td class="paramtype">uint32_t *&#160;</td>
+          <td class="paramname"><em>pun_red_led</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint32_t *&#160;</td>
+          <td class="paramname"><em>pun_ir_led</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Read a set of samples from the MAX30102 FIFO register. </p>
+<dl class="section user"><dt>Details</dt><dd>This function reads a set of samples from the MAX30102 FIFO register</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pun_red_led</td><td>- pointer that stores the red LED reading data </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pun_ir_led</td><td>- pointer that stores the IR LED reading data</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00154">154</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0cd2c5a58e57ebbe8c9361384798331f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_read_reg </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>uch_addr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t *&#160;</td>
+          <td class="paramname"><em>puch_data</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Read a MAX30102 register. </p>
+<dl class="section user"><dt>Details</dt><dd>This function reads a MAX30102 register</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">puch_data</td><td>- pointer that stores the register data</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00088">88</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1df3bb178b66379a2975c56395c47d9b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_reset </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reset the MAX30102. </p>
+<dl class="section user"><dt>Details</dt><dd>This function resets the MAX30102</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00202">202</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_write_reg </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>uch_addr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>uch_data</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write a value to a MAX30102 register. </p>
+<dl class="section user"><dt>Details</dt><dd>This function writes a value to a MAX30102 register</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">uch_data</td><td>- register data</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00066">66</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="max30102_8cpp.html">max30102.cpp</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp.js
new file mode 100644
index 0000000000000000000000000000000000000000..1da6ec5f349b5ce1274e443a510bea2162986287
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp.js
@@ -0,0 +1,8 @@
+var max30102_8cpp =
+[
+    [ "maxim_max30102_init", "max30102_8cpp.html#a4113aeee76935425d8a557a79a4193df", null ],
+    [ "maxim_max30102_read_fifo", "max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968", null ],
+    [ "maxim_max30102_read_reg", "max30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f", null ],
+    [ "maxim_max30102_reset", "max30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b", null ],
+    [ "maxim_max30102_write_reg", "max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6", null ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..632f6602c2da32ea4eaea10468ea7438701c80aa
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp_source.html
@@ -0,0 +1,263 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/max30102.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('max30102_8cpp_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">max30102.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="max30102_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">/*******************************************************************************</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">* copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">* to deal in the Software without restriction, including without limitation</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">* The above copyright notice and this permission notice shall be included</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">* in all copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">* THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">* Products, Inc. Branding Policy.</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">* The mere transfer of this software does not imply any licenses</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment">* ownership rights.</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">*******************************************************************************</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">*/</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="max30102_8h.html">max30102.h</a>&quot;</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_soft_i2_c_master_8h.html">SoftI2CMaster.h</a>&quot;</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="algorithm_8h.html">algorithm.h</a>&quot;</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="max30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">   66</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(uint8_t uch_addr, uint8_t uch_data)</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;{</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30">i2c_start</a>(<a class="code" href="max30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>))</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">i2c_write</a>(uch_addr))</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">i2c_write</a>(uch_data))</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;  <a class="code" href="_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3">i2c_stop</a>();</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;}</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="max30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f">   88</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(uint8_t uch_addr, uint8_t *puch_data)</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;{</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30">i2c_start</a>(<a class="code" href="max30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>))</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">i2c_write</a>(uch_addr))</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a68105c3bb259544bcc000c21b8e5d355">i2c_rep_start</a>(<a class="code" href="max30102_8h.html#a11a0148c64950f3315f38d957cd43d37">I2C_READ_ADDR</a>))</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;  </div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  *puch_data=<a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  <a class="code" href="_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3">i2c_stop</a>();</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;}</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div>
+<div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="max30102_8h.html#a4113aeee76935425d8a557a79a4193df">  111</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a4113aeee76935425d8a557a79a4193df" title="Initialize the MAX30102.">maxim_max30102_init</a>()</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;{</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <a class="code" href="_soft_i2_c_master_8h.html#ad5dc48c57198db1ee444a61405d2ea3d">i2c_init</a>();</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d">REG_INTR_ENABLE_1</a>,0xc0)) <span class="comment">// INTR setting</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1">REG_INTR_ENABLE_2</a>,0x00))</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#aba8c69cb46224fb35783f5b60e75b115">REG_FIFO_WR_PTR</a>,0x00))  <span class="comment">//FIFO_WR_PTR[4:0]</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707">REG_OVF_COUNTER</a>,0x00))  <span class="comment">//OVF_COUNTER[4:0]</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f">REG_FIFO_RD_PTR</a>,0x00))  <span class="comment">//FIFO_RD_PTR[4:0]</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca">REG_FIFO_CONFIG</a>,0x4f))  <span class="comment">//sample avg = 4, fifo rollover=false, fifo almost full = 17</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">REG_MODE_CONFIG</a>,0x03))   <span class="comment">//0x02 for Red only, 0x03 for SpO2 mode 0x07 multimode LED</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#a38546015e987a72b8c9eb13228237dd0">REG_SPO2_CONFIG</a>,0x27))  <span class="comment">// SPO2_ADC range = 4096nA, SPO2 sample rate (100 Hz), LED pulseWidth (411uS)</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  </div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b">REG_LED1_PA</a>,0x24))   <span class="comment">//Choose value for ~ 7mA for LED1</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21">REG_LED2_PA</a>,0x24))   <span class="comment">// Choose value for ~ 7mA for LED2</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#a371750304ec49457d3d38f60428f8ff1">REG_PILOT_PA</a>,0x7f))   <span class="comment">// Choose value for ~ 25mA for Pilot LED</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>;  </div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;}</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="preprocessor">#if defined(ARDUINO_AVR_UNO)</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="preprocessor"></span><span class="comment">//Arduino Uno doesn&#39;t have enough SRAM to store 100 samples of IR led data and red led data in 32-bit format</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="comment">//To solve this problem, 16-bit MSB of the sampled data will be truncated.  Samples become 16-bit data.</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>(uint16_t *pun_red_led, uint16_t *pun_ir_led)</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno"><a class="code" href="max30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968">  154</a></span>&#160;<span class="preprocessor"></span><span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>(uint32_t *pun_red_led, uint32_t *pun_ir_led)</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;{</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  uint32_t un_temp;</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  uint8_t uch_temp;</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  *pun_ir_led=0;</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  *pun_red_led=0;</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  <a class="code" href="max30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(<a class="code" href="max30102_8h.html#a7d161a2394a67a2176d549edb94f4191">REG_INTR_STATUS_1</a>, &amp;uch_temp);</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  <a class="code" href="max30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(<a class="code" href="max30102_8h.html#a61d809a1e313a2787b23e96de9554c4a">REG_INTR_STATUS_2</a>, &amp;uch_temp);</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30">i2c_start</a>(<a class="code" href="max30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>))</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">i2c_write</a>(<a class="code" href="max30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd">REG_FIFO_DATA</a>))</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a68105c3bb259544bcc000c21b8e5d355">i2c_rep_start</a>(<a class="code" href="max30102_8h.html#a11a0148c64950f3315f38d957cd43d37">I2C_READ_ADDR</a>))</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;  </div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  un_temp=<a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;  un_temp&lt;&lt;=16;</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  *pun_red_led+=un_temp;</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;  un_temp=<a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;  un_temp&lt;&lt;=8;</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  *pun_red_led+=un_temp;</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  un_temp=<a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  *pun_red_led+=un_temp;</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  </div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  un_temp=<a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  un_temp&lt;&lt;=16;</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;  *pun_ir_led+=un_temp;</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  un_temp=<a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  un_temp&lt;&lt;=8;</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  *pun_ir_led+=un_temp;</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  un_temp=<a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  *pun_ir_led+=un_temp;</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;  <a class="code" href="_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3">i2c_stop</a>();</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  *pun_red_led&amp;=0x03FFFF;  <span class="comment">//Mask MSB [23:18]</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  *pun_ir_led&amp;=0x03FFFF;  <span class="comment">//Mask MSB [23:18]</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;}</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div>
+<div class="line"><a name="l00202"></a><span class="lineno"><a class="code" href="max30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd">  202</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b" title="Reset the MAX30102.">maxim_max30102_reset</a>()</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;{</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">REG_MODE_CONFIG</a>,0x40))</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">true</span>;    </div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;}</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="max30102_8cpp.html">max30102.cpp</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h.html
new file mode 100644
index 0000000000000000000000000000000000000000..3cb457be6fab9d29cf095ad58b935ff49b4dd2d4
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h.html
@@ -0,0 +1,741 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/max30102.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('max30102_8h.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Macros</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">max30102.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;arduino.h&gt;</code><br/>
+</div>
+<p><a href="max30102_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a7978167075eb8954c1090fc7ce9647c6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>&#160;&#160;&#160;0xAE</td></tr>
+<tr class="separator:a7978167075eb8954c1090fc7ce9647c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a11a0148c64950f3315f38d957cd43d37"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a11a0148c64950f3315f38d957cd43d37">I2C_READ_ADDR</a>&#160;&#160;&#160;0xAF</td></tr>
+<tr class="separator:a11a0148c64950f3315f38d957cd43d37"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7d161a2394a67a2176d549edb94f4191"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a7d161a2394a67a2176d549edb94f4191">REG_INTR_STATUS_1</a>&#160;&#160;&#160;0x00</td></tr>
+<tr class="separator:a7d161a2394a67a2176d549edb94f4191"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a61d809a1e313a2787b23e96de9554c4a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a61d809a1e313a2787b23e96de9554c4a">REG_INTR_STATUS_2</a>&#160;&#160;&#160;0x01</td></tr>
+<tr class="separator:a61d809a1e313a2787b23e96de9554c4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae07f3c26106a0a37b6eddd8d2653137d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d">REG_INTR_ENABLE_1</a>&#160;&#160;&#160;0x02</td></tr>
+<tr class="separator:ae07f3c26106a0a37b6eddd8d2653137d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab8d58d945ad576d492f669c7b9affbf1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1">REG_INTR_ENABLE_2</a>&#160;&#160;&#160;0x03</td></tr>
+<tr class="separator:ab8d58d945ad576d492f669c7b9affbf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aba8c69cb46224fb35783f5b60e75b115"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#aba8c69cb46224fb35783f5b60e75b115">REG_FIFO_WR_PTR</a>&#160;&#160;&#160;0x04</td></tr>
+<tr class="separator:aba8c69cb46224fb35783f5b60e75b115"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af9c8026aa9a22fad4c22ee6b10613707"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707">REG_OVF_COUNTER</a>&#160;&#160;&#160;0x05</td></tr>
+<tr class="separator:af9c8026aa9a22fad4c22ee6b10613707"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3b9d75d4ac3cb579e8b46dea27f4303f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f">REG_FIFO_RD_PTR</a>&#160;&#160;&#160;0x06</td></tr>
+<tr class="separator:a3b9d75d4ac3cb579e8b46dea27f4303f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a05bf6ede83fa400eac4dd65788d996fd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd">REG_FIFO_DATA</a>&#160;&#160;&#160;0x07</td></tr>
+<tr class="separator:a05bf6ede83fa400eac4dd65788d996fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad1b1bbfe23c9461e0ae75b71b9f805ca"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca">REG_FIFO_CONFIG</a>&#160;&#160;&#160;0x08</td></tr>
+<tr class="separator:ad1b1bbfe23c9461e0ae75b71b9f805ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:accdea52b28f1bd3f4cd63d05ab12887f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">REG_MODE_CONFIG</a>&#160;&#160;&#160;0x09</td></tr>
+<tr class="separator:accdea52b28f1bd3f4cd63d05ab12887f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a38546015e987a72b8c9eb13228237dd0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a38546015e987a72b8c9eb13228237dd0">REG_SPO2_CONFIG</a>&#160;&#160;&#160;0x0A</td></tr>
+<tr class="separator:a38546015e987a72b8c9eb13228237dd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5f3a6641b201203d41ed3d23b638a96b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b">REG_LED1_PA</a>&#160;&#160;&#160;0x0C</td></tr>
+<tr class="separator:a5f3a6641b201203d41ed3d23b638a96b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7df43b0f854c9caf2fe04ccdebb18d21"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21">REG_LED2_PA</a>&#160;&#160;&#160;0x0D</td></tr>
+<tr class="separator:a7df43b0f854c9caf2fe04ccdebb18d21"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a371750304ec49457d3d38f60428f8ff1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a371750304ec49457d3d38f60428f8ff1">REG_PILOT_PA</a>&#160;&#160;&#160;0x10</td></tr>
+<tr class="separator:a371750304ec49457d3d38f60428f8ff1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9d333cff4d002cb1d09a319e6917bc5c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c">REG_MULTI_LED_CTRL1</a>&#160;&#160;&#160;0x11</td></tr>
+<tr class="separator:a9d333cff4d002cb1d09a319e6917bc5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a05ed274928d49bb6ddd6def6e45fac10"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10">REG_MULTI_LED_CTRL2</a>&#160;&#160;&#160;0x12</td></tr>
+<tr class="separator:a05ed274928d49bb6ddd6def6e45fac10"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a579a9e43d89bdda85d9ccb206339d681"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a579a9e43d89bdda85d9ccb206339d681">REG_TEMP_INTR</a>&#160;&#160;&#160;0x1F</td></tr>
+<tr class="separator:a579a9e43d89bdda85d9ccb206339d681"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5321d8a33f1225ab437032e0e8ecbb3d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d">REG_TEMP_FRAC</a>&#160;&#160;&#160;0x20</td></tr>
+<tr class="separator:a5321d8a33f1225ab437032e0e8ecbb3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad16bc92e2f92e516ca396214861a6379"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#ad16bc92e2f92e516ca396214861a6379">REG_TEMP_CONFIG</a>&#160;&#160;&#160;0x21</td></tr>
+<tr class="separator:ad16bc92e2f92e516ca396214861a6379"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3d80b09e301a0155949b7c337ce5f5ab"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab">REG_PROX_INT_THRESH</a>&#160;&#160;&#160;0x30</td></tr>
+<tr class="separator:a3d80b09e301a0155949b7c337ce5f5ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a16f4b970762f7e8aa1f5c7a780a48c23"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23">REG_REV_ID</a>&#160;&#160;&#160;0xFE</td></tr>
+<tr class="separator:a16f4b970762f7e8aa1f5c7a780a48c23"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a46083d1b6d3e1d5f89b0f1598dc6d163"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163">REG_PART_ID</a>&#160;&#160;&#160;0xFF</td></tr>
+<tr class="separator:a46083d1b6d3e1d5f89b0f1598dc6d163"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a4113aeee76935425d8a557a79a4193df"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a4113aeee76935425d8a557a79a4193df">maxim_max30102_init</a> ()</td></tr>
+<tr class="memdesc:a4113aeee76935425d8a557a79a4193df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the MAX30102.  <a href="#a4113aeee76935425d8a557a79a4193df"></a><br/></td></tr>
+<tr class="separator:a4113aeee76935425d8a557a79a4193df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968">maxim_max30102_read_fifo</a> (uint32_t *pun_red_led, uint32_t *pun_ir_led)</td></tr>
+<tr class="memdesc:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a set of samples from the MAX30102 FIFO register.  <a href="#a483073cbc9dbb7a5a2495ce2ae4fb968"></a><br/></td></tr>
+<tr class="separator:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">maxim_max30102_write_reg</a> (uint8_t uch_addr, uint8_t uch_data)</td></tr>
+<tr class="memdesc:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a value to a MAX30102 register.  <a href="#a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a><br/></td></tr>
+<tr class="separator:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f">maxim_max30102_read_reg</a> (uint8_t uch_addr, uint8_t *puch_data)</td></tr>
+<tr class="memdesc:a0cd2c5a58e57ebbe8c9361384798331f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a MAX30102 register.  <a href="#a0cd2c5a58e57ebbe8c9361384798331f"></a><br/></td></tr>
+<tr class="separator:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a94ab5935f6ce28aa5ce31aa842eb83dd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd">maxim_max30102_reset</a> (void)</td></tr>
+<tr class="memdesc:a94ab5935f6ce28aa5ce31aa842eb83dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the MAX30102.  <a href="#a94ab5935f6ce28aa5ce31aa842eb83dd"></a><br/></td></tr>
+<tr class="separator:a94ab5935f6ce28aa5ce31aa842eb83dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><pre class="fragment">******************************************************
+</pre><p>Project: MAXREFDES117# Filename: <a class="el" href="max30102_8h.html">max30102.h</a> Description: This module is an embedded controller driver header file for MAX30102</p>
+<p>Revision History: <br/>
+ 1-18-2016 Rev 01.00 GL Initial release. <br/>
+ <hr/>
+<p>This code follows the following naming conventions:</p>
+<p>char ch_pmod_value char (array) s_pmod_s_string[16] float f_pmod_value int32_t n_pmod_value int32_t (array) an_pmod_value[16] int16_t w_pmod_value int16_t (array) aw_pmod_value[16] uint16_t uw_pmod_value uint16_t (array) auw_pmod_value[16] uint8_t uch_pmod_value uint8_t (array) auch_pmod_buffer[16] uint32_t un_pmod_value int32_t * pn_pmod_value <hr/>
+
+<p>Definition in file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+</div><h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="a11a0148c64950f3315f38d957cd43d37"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define I2C_READ_ADDR&#160;&#160;&#160;0xAF</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00067">67</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7978167075eb8954c1090fc7ce9647c6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define I2C_WRITE_ADDR&#160;&#160;&#160;0xAE</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00066">66</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad1b1bbfe23c9461e0ae75b71b9f805ca"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_FIFO_CONFIG&#160;&#160;&#160;0x08</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00078">78</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a05bf6ede83fa400eac4dd65788d996fd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_FIFO_DATA&#160;&#160;&#160;0x07</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00077">77</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3b9d75d4ac3cb579e8b46dea27f4303f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_FIFO_RD_PTR&#160;&#160;&#160;0x06</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00076">76</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aba8c69cb46224fb35783f5b60e75b115"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_FIFO_WR_PTR&#160;&#160;&#160;0x04</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00074">74</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae07f3c26106a0a37b6eddd8d2653137d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_INTR_ENABLE_1&#160;&#160;&#160;0x02</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00072">72</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab8d58d945ad576d492f669c7b9affbf1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_INTR_ENABLE_2&#160;&#160;&#160;0x03</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00073">73</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7d161a2394a67a2176d549edb94f4191"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_INTR_STATUS_1&#160;&#160;&#160;0x00</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00070">70</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a61d809a1e313a2787b23e96de9554c4a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_INTR_STATUS_2&#160;&#160;&#160;0x01</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00071">71</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5f3a6641b201203d41ed3d23b638a96b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_LED1_PA&#160;&#160;&#160;0x0C</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00081">81</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7df43b0f854c9caf2fe04ccdebb18d21"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_LED2_PA&#160;&#160;&#160;0x0D</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00082">82</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="accdea52b28f1bd3f4cd63d05ab12887f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_MODE_CONFIG&#160;&#160;&#160;0x09</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00079">79</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9d333cff4d002cb1d09a319e6917bc5c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_MULTI_LED_CTRL1&#160;&#160;&#160;0x11</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00084">84</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a05ed274928d49bb6ddd6def6e45fac10"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_MULTI_LED_CTRL2&#160;&#160;&#160;0x12</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00085">85</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af9c8026aa9a22fad4c22ee6b10613707"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_OVF_COUNTER&#160;&#160;&#160;0x05</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00075">75</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a46083d1b6d3e1d5f89b0f1598dc6d163"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_PART_ID&#160;&#160;&#160;0xFF</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00091">91</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a371750304ec49457d3d38f60428f8ff1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_PILOT_PA&#160;&#160;&#160;0x10</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00083">83</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3d80b09e301a0155949b7c337ce5f5ab"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_PROX_INT_THRESH&#160;&#160;&#160;0x30</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00089">89</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a16f4b970762f7e8aa1f5c7a780a48c23"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_REV_ID&#160;&#160;&#160;0xFE</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00090">90</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a38546015e987a72b8c9eb13228237dd0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_SPO2_CONFIG&#160;&#160;&#160;0x0A</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00080">80</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad16bc92e2f92e516ca396214861a6379"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_TEMP_CONFIG&#160;&#160;&#160;0x21</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00088">88</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5321d8a33f1225ab437032e0e8ecbb3d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_TEMP_FRAC&#160;&#160;&#160;0x20</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00087">87</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a579a9e43d89bdda85d9ccb206339d681"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REG_TEMP_INTR&#160;&#160;&#160;0x1F</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="max30102_8h_source.html#l00086">86</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a4113aeee76935425d8a557a79a4193df"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_init </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Initialize the MAX30102. </p>
+<dl class="section user"><dt>Details</dt><dd>This function initializes the MAX30102</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00111">111</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a483073cbc9dbb7a5a2495ce2ae4fb968"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_read_fifo </td>
+          <td>(</td>
+          <td class="paramtype">uint32_t *&#160;</td>
+          <td class="paramname"><em>pun_red_led</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint32_t *&#160;</td>
+          <td class="paramname"><em>pun_ir_led</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Read a set of samples from the MAX30102 FIFO register. </p>
+<dl class="section user"><dt>Details</dt><dd>This function reads a set of samples from the MAX30102 FIFO register</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pun_red_led</td><td>- pointer that stores the red LED reading data </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">*pun_ir_led</td><td>- pointer that stores the IR LED reading data</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00154">154</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0cd2c5a58e57ebbe8c9361384798331f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_read_reg </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>uch_addr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t *&#160;</td>
+          <td class="paramname"><em>puch_data</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Read a MAX30102 register. </p>
+<dl class="section user"><dt>Details</dt><dd>This function reads a MAX30102 register</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">puch_data</td><td>- pointer that stores the register data</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00088">88</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a94ab5935f6ce28aa5ce31aa842eb83dd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_reset </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reset the MAX30102. </p>
+<dl class="section user"><dt>Details</dt><dd>This function resets the MAX30102</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">None</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00202">202</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool maxim_max30102_write_reg </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>uch_addr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>uch_data</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write a value to a MAX30102 register. </p>
+<dl class="section user"><dt>Details</dt><dd>This function writes a value to a MAX30102 register</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">uch_data</td><td>- register data</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">true</td><td>on success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00066">66</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="max30102_8h.html">max30102.h</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h.js
new file mode 100644
index 0000000000000000000000000000000000000000..c11d6e492f92c9e1399d5502390f251a8cfbf644
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h.js
@@ -0,0 +1,32 @@
+var max30102_8h =
+[
+    [ "I2C_READ_ADDR", "max30102_8h.html#a11a0148c64950f3315f38d957cd43d37", null ],
+    [ "I2C_WRITE_ADDR", "max30102_8h.html#a7978167075eb8954c1090fc7ce9647c6", null ],
+    [ "REG_FIFO_CONFIG", "max30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca", null ],
+    [ "REG_FIFO_DATA", "max30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd", null ],
+    [ "REG_FIFO_RD_PTR", "max30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f", null ],
+    [ "REG_FIFO_WR_PTR", "max30102_8h.html#aba8c69cb46224fb35783f5b60e75b115", null ],
+    [ "REG_INTR_ENABLE_1", "max30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d", null ],
+    [ "REG_INTR_ENABLE_2", "max30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1", null ],
+    [ "REG_INTR_STATUS_1", "max30102_8h.html#a7d161a2394a67a2176d549edb94f4191", null ],
+    [ "REG_INTR_STATUS_2", "max30102_8h.html#a61d809a1e313a2787b23e96de9554c4a", null ],
+    [ "REG_LED1_PA", "max30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b", null ],
+    [ "REG_LED2_PA", "max30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21", null ],
+    [ "REG_MODE_CONFIG", "max30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f", null ],
+    [ "REG_MULTI_LED_CTRL1", "max30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c", null ],
+    [ "REG_MULTI_LED_CTRL2", "max30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10", null ],
+    [ "REG_OVF_COUNTER", "max30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707", null ],
+    [ "REG_PART_ID", "max30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163", null ],
+    [ "REG_PILOT_PA", "max30102_8h.html#a371750304ec49457d3d38f60428f8ff1", null ],
+    [ "REG_PROX_INT_THRESH", "max30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab", null ],
+    [ "REG_REV_ID", "max30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23", null ],
+    [ "REG_SPO2_CONFIG", "max30102_8h.html#a38546015e987a72b8c9eb13228237dd0", null ],
+    [ "REG_TEMP_CONFIG", "max30102_8h.html#ad16bc92e2f92e516ca396214861a6379", null ],
+    [ "REG_TEMP_FRAC", "max30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d", null ],
+    [ "REG_TEMP_INTR", "max30102_8h.html#a579a9e43d89bdda85d9ccb206339d681", null ],
+    [ "maxim_max30102_init", "max30102_8h.html#a4113aeee76935425d8a557a79a4193df", null ],
+    [ "maxim_max30102_read_fifo", "max30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968", null ],
+    [ "maxim_max30102_read_reg", "max30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f", null ],
+    [ "maxim_max30102_reset", "max30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd", null ],
+    [ "maxim_max30102_write_reg", "max30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6", null ]
+];
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..e5e24e9d04c6c28a6f1ad819f2edf4b31a81bb40
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h_source.html
@@ -0,0 +1,196 @@
+<!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"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/max30102.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">MAXREFDES117# Code Documentation
+   &#160;<span id="projectnumber">V01.00</span>
+   </div>
+   <div id="projectbrief">Heart Rate / SpO2 Monitor</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.2 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('max30102_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">max30102.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="max30102_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">/*******************************************************************************</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">* copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">* to deal in the Software without restriction, including without limitation</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">* The above copyright notice and this permission notice shall be included</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">* in all copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">* THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">* Products, Inc. Branding Policy.</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">*</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">* The mere transfer of this software does not imply any licenses</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment">* ownership rights.</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">*******************************************************************************</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">*/</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#ifndef MAX30102_H_</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define MAX30102_H_</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#include &lt;arduino.h&gt;</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="max30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">   66</a></span>&#160;<span class="preprocessor">#define I2C_WRITE_ADDR 0xAE</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="max30102_8h.html#a11a0148c64950f3315f38d957cd43d37">   67</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_READ_ADDR 0xAF</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="comment">//register addresses</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="max30102_8h.html#a7d161a2394a67a2176d549edb94f4191">   70</a></span>&#160;<span class="preprocessor">#define REG_INTR_STATUS_1 0x00</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="max30102_8h.html#a61d809a1e313a2787b23e96de9554c4a">   71</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_INTR_STATUS_2 0x01</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="max30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d">   72</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_INTR_ENABLE_1 0x02</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="max30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1">   73</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_INTR_ENABLE_2 0x03</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="max30102_8h.html#aba8c69cb46224fb35783f5b60e75b115">   74</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_WR_PTR 0x04</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="code" href="max30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707">   75</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_OVF_COUNTER 0x05</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="max30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f">   76</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_RD_PTR 0x06</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="max30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd">   77</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_DATA 0x07</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="max30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca">   78</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_CONFIG 0x08</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="max30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">   79</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_MODE_CONFIG 0x09</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="max30102_8h.html#a38546015e987a72b8c9eb13228237dd0">   80</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_SPO2_CONFIG 0x0A</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="max30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b">   81</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_LED1_PA 0x0C</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="max30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21">   82</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_LED2_PA 0x0D</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="max30102_8h.html#a371750304ec49457d3d38f60428f8ff1">   83</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_PILOT_PA 0x10</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"><a class="code" href="max30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c">   84</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_MULTI_LED_CTRL1 0x11</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="max30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10">   85</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_MULTI_LED_CTRL2 0x12</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="max30102_8h.html#a579a9e43d89bdda85d9ccb206339d681">   86</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_TEMP_INTR 0x1F</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="max30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d">   87</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_TEMP_FRAC 0x20</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="max30102_8h.html#ad16bc92e2f92e516ca396214861a6379">   88</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_TEMP_CONFIG 0x21</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="max30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab">   89</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_PROX_INT_THRESH 0x30</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="code" href="max30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23">   90</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_REV_ID 0xFE</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"><a class="code" href="max30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163">   91</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define REG_PART_ID 0xFF</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a4113aeee76935425d8a557a79a4193df" title="Initialize the MAX30102.">maxim_max30102_init</a>();</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="preprocessor">#if defined(ARDUINO_AVR_UNO)</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor"></span><span class="comment">//Arduino Uno doesn&#39;t have enough SRAM to store 100 samples of IR led data and red led data in 32-bit format</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="comment">//To solve this problem, 16-bit MSB of the sampled data will be truncated.  Samples become 16-bit data.</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>(uint16_t *pun_red_led, uint16_t *pun_ir_led);</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="preprocessor"></span><span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>(uint32_t *pun_red_led, uint32_t *pun_ir_led);</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="preprocessor"></span><span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(uint8_t uch_addr, uint8_t uch_data);</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(uint8_t uch_addr, uint8_t *puch_data);</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b" title="Reset the MAX30102.">maxim_max30102_reset</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/*  MAX30102_H_ */</span><span class="preprocessor"></span></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="max30102_8h.html">max30102.h</a></li>
+    <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/maxim-logo-1.jpg b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/maxim-logo-1.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..083102ecef4b5608b525ddc239f2682c9c859c3b
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/maxim-logo-1.jpg differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_f.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_f.png
new file mode 100644
index 0000000000000000000000000000000000000000..f581216456977005702071ad33d083dabb964fea
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_f.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_g.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_g.png
new file mode 100644
index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_g.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_h.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_h.png
new file mode 100644
index 0000000000000000000000000000000000000000..c6dce2b665186cd474316a0e1fd69f6101f399a5
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_h.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtree.css b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtree.css
new file mode 100644
index 0000000000000000000000000000000000000000..f42ab87866d88b2c166a8e713a224554c8feea17
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtree.css
@@ -0,0 +1,143 @@
+#nav-tree .children_ul {
+  margin:0;
+  padding:4px;
+}
+
+#nav-tree ul {
+  list-style:none outside none;
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree li {
+  white-space:nowrap;
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree .plus {
+  margin:0px;
+}
+
+#nav-tree .selected {
+  background-image: url('tab_a.png');
+  background-repeat:repeat-x;
+  color: #fff;
+  text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
+
+#nav-tree img {
+  margin:0px;
+  padding:0px;
+  border:0px;
+  vertical-align: middle;
+}
+
+#nav-tree a {
+  text-decoration:none;
+  padding:0px;
+  margin:0px;
+  outline:none;
+}
+
+#nav-tree .label {
+  margin:0px;
+  padding:0px;
+  font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+}
+
+#nav-tree .label a {
+  padding:2px;
+}
+
+#nav-tree .selected a {
+  text-decoration:none;
+  color:#fff;
+}
+
+#nav-tree .children_ul {
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree .item {
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree {
+  padding: 0px 0px;
+  background-color: #FAFAFF; 
+  font-size:14px;
+  overflow:auto;
+}
+
+#doc-content {
+  overflow:auto;
+  display:block;
+  padding:0px;
+  margin:0px;
+  -webkit-overflow-scrolling : touch; /* iOS 5+ */
+}
+
+#side-nav {
+  padding:0 6px 0 0;
+  margin: 0px;
+  display:block;
+  position: absolute;
+  left: 0px;
+  width: 300px;
+}
+
+.ui-resizable .ui-resizable-handle {
+  display:block;
+}
+
+.ui-resizable-e {
+  background:url("ftv2splitbar.png") repeat scroll right center transparent;
+  cursor:e-resize;
+  height:100%;
+  right:0;
+  top:0;
+  width:6px;
+}
+
+.ui-resizable-handle {
+  display:none;
+  font-size:0.1px;
+  position:absolute;
+  z-index:1;
+}
+
+#nav-tree-contents {
+  margin: 6px 0px 0px 0px;
+}
+
+#nav-tree {
+  background-image:url('nav_h.png');
+  background-repeat:repeat-x;
+  background-color: #FAFCFC;
+  -webkit-overflow-scrolling : touch; /* iOS 5+ */
+}
+
+#nav-sync {
+  position:absolute;
+  top:5px;
+  right:24px;
+  z-index:0;
+}
+
+#nav-sync img {
+  opacity:0.3;
+}
+
+#nav-sync img:hover {
+  opacity:0.9;
+}
+
+@media print
+{
+  #nav-tree { display: none; }
+  div.ui-resizable-handle { display: none; position: relative; }
+}
+
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtree.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtree.js
new file mode 100644
index 0000000000000000000000000000000000000000..0a9ec5768b230e4d85ecce646bfa65fa367cc329
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtree.js
@@ -0,0 +1,519 @@
+var NAVTREE =
+[
+  [ "MAXREFDES117# Code Documentation", "index.html", [
+    [ "Main Page", "index.html", null ],
+    [ "Files", null, [
+      [ "File List", "files.html", "files" ],
+      [ "Globals", "globals.html", [
+        [ "All", "globals.html", null ],
+        [ "Functions", "globals_func.html", null ],
+        [ "Variables", "globals_vars.html", null ],
+        [ "Macros", "globals_defs.html", null ]
+      ] ]
+    ] ]
+  ] ]
+];
+
+var NAVTREEINDEX =
+[
+"_m_a_x30102_8cpp.html"
+];
+
+var SYNCONMSG = 'click to disable panel synchronisation';
+var SYNCOFFMSG = 'click to enable panel synchronisation';
+var navTreeSubIndices = new Array();
+
+function getData(varName)
+{
+  var i = varName.lastIndexOf('/');
+  var n = i>=0 ? varName.substring(i+1) : varName;
+  return eval(n.replace(/\-/g,'_'));
+}
+
+function stripPath(uri)
+{
+  return uri.substring(uri.lastIndexOf('/')+1);
+}
+
+function stripPath2(uri)
+{
+  var i = uri.lastIndexOf('/');
+  var s = uri.substring(i+1);
+  var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/);
+  return m ? uri.substring(i-6) : s;
+}
+
+function localStorageSupported()
+{
+  try {
+    return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem;
+  }
+  catch(e) {
+    return false;
+  }
+}
+
+
+function storeLink(link)
+{
+  if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) {
+      window.localStorage.setItem('navpath',link);
+  }
+}
+
+function deleteLink()
+{
+  if (localStorageSupported()) {
+    window.localStorage.setItem('navpath','');
+  } 
+}
+
+function cachedLink()
+{
+  if (localStorageSupported()) {
+    return window.localStorage.getItem('navpath');
+  } else {
+    return '';
+  }
+}
+
+function getScript(scriptName,func,show)
+{
+  var head = document.getElementsByTagName("head")[0]; 
+  var script = document.createElement('script');
+  script.id = scriptName;
+  script.type = 'text/javascript';
+  script.onload = func; 
+  script.src = scriptName+'.js'; 
+  if ($.browser.msie && $.browser.version<=8) { 
+    // script.onload does work with older versions of IE
+    script.onreadystatechange = function() {
+      if (script.readyState=='complete' || script.readyState=='loaded') { 
+        func(); if (show) showRoot(); 
+      }
+    }
+  }
+  head.appendChild(script); 
+}
+
+function createIndent(o,domNode,node,level)
+{
+  if (node.parentNode && node.parentNode.parentNode) {
+    createIndent(o,domNode,node.parentNode,level+1);
+  }
+  var imgNode = document.createElement("img");
+  imgNode.width = 16;
+  imgNode.height = 22;
+  if (level==0 && node.childrenData) {
+    node.plus_img = imgNode;
+    node.expandToggle = document.createElement("a");
+    node.expandToggle.href = "javascript:void(0)";
+    node.expandToggle.onclick = function() {
+      if (node.expanded) {
+        $(node.getChildrenUL()).slideUp("fast");
+        if (node.isLast) {
+          node.plus_img.src = node.relpath+"ftv2plastnode.png";
+        } else {
+          node.plus_img.src = node.relpath+"ftv2pnode.png";
+        }
+        node.expanded = false;
+      } else {
+        expandNode(o, node, false, false);
+      }
+    }
+    node.expandToggle.appendChild(imgNode);
+    domNode.appendChild(node.expandToggle);
+  } else {
+    domNode.appendChild(imgNode);
+  }
+  if (level==0) {
+    if (node.isLast) {
+      if (node.childrenData) {
+        imgNode.src = node.relpath+"ftv2plastnode.png";
+      } else {
+        imgNode.src = node.relpath+"ftv2lastnode.png";
+        domNode.appendChild(imgNode);
+      }
+    } else {
+      if (node.childrenData) {
+        imgNode.src = node.relpath+"ftv2pnode.png";
+      } else {
+        imgNode.src = node.relpath+"ftv2node.png";
+        domNode.appendChild(imgNode);
+      }
+    }
+  } else {
+    if (node.isLast) {
+      imgNode.src = node.relpath+"ftv2blank.png";
+    } else {
+      imgNode.src = node.relpath+"ftv2vertline.png";
+    }
+  }
+  imgNode.border = "0";
+}
+
+function newNode(o, po, text, link, childrenData, lastNode)
+{
+  var node = new Object();
+  node.children = Array();
+  node.childrenData = childrenData;
+  node.depth = po.depth + 1;
+  node.relpath = po.relpath;
+  node.isLast = lastNode;
+
+  node.li = document.createElement("li");
+  po.getChildrenUL().appendChild(node.li);
+  node.parentNode = po;
+
+  node.itemDiv = document.createElement("div");
+  node.itemDiv.className = "item";
+
+  node.labelSpan = document.createElement("span");
+  node.labelSpan.className = "label";
+
+  createIndent(o,node.itemDiv,node,0);
+  node.itemDiv.appendChild(node.labelSpan);
+  node.li.appendChild(node.itemDiv);
+
+  var a = document.createElement("a");
+  node.labelSpan.appendChild(a);
+  node.label = document.createTextNode(text);
+  node.expanded = false;
+  a.appendChild(node.label);
+  if (link) {
+    var url;
+    if (link.substring(0,1)=='^') {
+      url = link.substring(1);
+      link = url;
+    } else {
+      url = node.relpath+link;
+    }
+    a.className = stripPath(link.replace('#',':'));
+    if (link.indexOf('#')!=-1) {
+      var aname = '#'+link.split('#')[1];
+      var srcPage = stripPath($(location).attr('pathname'));
+      var targetPage = stripPath(link.split('#')[0]);
+      a.href = srcPage!=targetPage ? url : '#';
+      a.onclick = function(){
+        storeLink(link);
+        if (!$(a).parent().parent().hasClass('selected'))
+        {
+          $('.item').removeClass('selected');
+          $('.item').removeAttr('id');
+          $(a).parent().parent().addClass('selected');
+          $(a).parent().parent().attr('id','selected');
+        }
+        var pos, anchor = $(aname), docContent = $('#doc-content');
+        if (anchor.parent().attr('class')=='memItemLeft') {
+          pos = anchor.parent().position().top;
+        } else if (anchor.position()) {
+          pos = anchor.position().top;
+        }
+        if (pos) {
+          var dist = Math.abs(Math.min(
+                     pos-docContent.offset().top,
+                     docContent[0].scrollHeight-
+                     docContent.height()-docContent.scrollTop()));
+          docContent.animate({
+            scrollTop: pos + docContent.scrollTop() - docContent.offset().top
+          },Math.max(50,Math.min(500,dist)),function(){
+            window.location.replace(aname);
+          });
+        }
+      };
+    } else {
+      a.href = url;
+      a.onclick = function() { storeLink(link); }
+    }
+  } else {
+    if (childrenData != null) 
+    {
+      a.className = "nolink";
+      a.href = "javascript:void(0)";
+      a.onclick = node.expandToggle.onclick;
+    }
+  }
+
+  node.childrenUL = null;
+  node.getChildrenUL = function() {
+    if (!node.childrenUL) {
+      node.childrenUL = document.createElement("ul");
+      node.childrenUL.className = "children_ul";
+      node.childrenUL.style.display = "none";
+      node.li.appendChild(node.childrenUL);
+    }
+    return node.childrenUL;
+  };
+
+  return node;
+}
+
+function showRoot()
+{
+  var headerHeight = $("#top").height();
+  var footerHeight = $("#nav-path").height();
+  var windowHeight = $(window).height() - headerHeight - footerHeight;
+  (function (){ // retry until we can scroll to the selected item
+    try {
+      var navtree=$('#nav-tree');
+      navtree.scrollTo('#selected',0,{offset:-windowHeight/2});
+    } catch (err) {
+      setTimeout(arguments.callee, 0);
+    }
+  })();
+}
+
+function expandNode(o, node, imm, showRoot)
+{
+  if (node.childrenData && !node.expanded) {
+    if (typeof(node.childrenData)==='string') {
+      var varName    = node.childrenData;
+      getScript(node.relpath+varName,function(){
+        node.childrenData = getData(varName);
+        expandNode(o, node, imm, showRoot);
+      }, showRoot);
+    } else {
+      if (!node.childrenVisited) {
+        getNode(o, node);
+      } if (imm || ($.browser.msie && $.browser.version>8)) { 
+        // somehow slideDown jumps to the start of tree for IE9 :-(
+        $(node.getChildrenUL()).show();
+      } else {
+        $(node.getChildrenUL()).slideDown("fast");
+      }
+      if (node.isLast) {
+        node.plus_img.src = node.relpath+"ftv2mlastnode.png";
+      } else {
+        node.plus_img.src = node.relpath+"ftv2mnode.png";
+      }
+      node.expanded = true;
+    }
+  }
+}
+
+function glowEffect(n,duration)
+{
+  n.addClass('glow').delay(duration).queue(function(next){
+    $(this).removeClass('glow');next();
+  });
+}
+
+function highlightAnchor()
+{
+  var anchor = $($(location).attr('hash'));
+  if (anchor.parent().attr('class')=='memItemLeft'){
+    var rows = $('.memberdecls tr[class$="'+
+               window.location.hash.substring(1)+'"]');
+    glowEffect(rows.children(),300); // member without details
+  } else if (anchor.parents().slice(2).prop('tagName')=='TR') {
+    glowEffect(anchor.parents('div.memitem'),1000); // enum value
+  } else if (anchor.parent().attr('class')=='fieldtype'){
+    glowEffect(anchor.parent().parent(),1000); // struct field
+  } else if (anchor.parent().is(":header")) {
+    glowEffect(anchor.parent(),1000); // section header
+  } else {
+    glowEffect(anchor.next(),1000); // normal member
+  }
+}
+
+function selectAndHighlight(hash,n)
+{
+  var a;
+  if (hash) {
+    var link=stripPath($(location).attr('pathname'))+':'+hash.substring(1);
+    a=$('.item a[class$="'+link+'"]');
+  }
+  if (a && a.length) {
+    a.parent().parent().addClass('selected');
+    a.parent().parent().attr('id','selected');
+    highlightAnchor();
+  } else if (n) {
+    $(n.itemDiv).addClass('selected');
+    $(n.itemDiv).attr('id','selected');
+  }
+  showRoot();
+}
+
+function showNode(o, node, index, hash)
+{
+  if (node && node.childrenData) {
+    if (typeof(node.childrenData)==='string') {
+      var varName    = node.childrenData;
+      getScript(node.relpath+varName,function(){
+        node.childrenData = getData(varName);
+        showNode(o,node,index,hash);
+      },true);
+    } else {
+      if (!node.childrenVisited) {
+        getNode(o, node);
+      }
+      $(node.getChildrenUL()).show();
+      if (node.isLast) {
+        node.plus_img.src = node.relpath+"ftv2mlastnode.png";
+      } else {
+        node.plus_img.src = node.relpath+"ftv2mnode.png";
+      }
+      node.expanded = true;
+      var n = node.children[o.breadcrumbs[index]];
+      if (index+1<o.breadcrumbs.length) {
+        showNode(o,n,index+1,hash);
+      } else {
+        if (typeof(n.childrenData)==='string') {
+          var varName = n.childrenData;
+          getScript(n.relpath+varName,function(){
+            n.childrenData = getData(varName);
+            node.expanded=false;
+            showNode(o,node,index,hash); // retry with child node expanded
+          },true);
+        } else {
+          var rootBase = stripPath(o.toroot.replace(/\..+$/, ''));
+          if (rootBase=="index" || rootBase=="pages") {
+            expandNode(o, n, true, true);
+          }
+          selectAndHighlight(hash,n);
+        }
+      }
+    }
+  } else {
+    selectAndHighlight(hash);
+  }
+}
+
+function getNode(o, po)
+{
+  po.childrenVisited = true;
+  var l = po.childrenData.length-1;
+  for (var i in po.childrenData) {
+    var nodeData = po.childrenData[i];
+    po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2],
+      i==l);
+  }
+}
+
+function gotoNode(o,subIndex,root,hash,relpath)
+{
+  var nti = navTreeSubIndices[subIndex][root+hash];
+  o.breadcrumbs = $.extend(true, [], nti ? nti : navTreeSubIndices[subIndex][root]);
+  if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index
+    navTo(o,NAVTREE[0][1],"",relpath);
+    $('.item').removeClass('selected');
+    $('.item').removeAttr('id');
+  }
+  if (o.breadcrumbs) {
+    o.breadcrumbs.unshift(0); // add 0 for root node
+    showNode(o, o.node, 0, hash);
+  }
+}
+
+function navTo(o,root,hash,relpath)
+{
+  var link = cachedLink();
+  if (link) {
+    var parts = link.split('#');
+    root = parts[0];
+    if (parts.length>1) hash = '#'+parts[1];
+    else hash='';
+  }
+  if (root==NAVTREE[0][1]) {
+    $('#nav-sync').css('top','30px');
+  } else {
+    $('#nav-sync').css('top','5px');
+  }
+  if (hash.match(/^#l\d+$/)) {
+    var anchor=$('a[name='+hash.substring(1)+']');
+    glowEffect(anchor.parent(),1000); // line number
+    hash=''; // strip line number anchors
+    //root=root.replace(/_source\./,'.'); // source link to doc link
+  }
+  var url=root+hash;
+  var i=-1;
+  while (NAVTREEINDEX[i+1]<=url) i++;
+  if (navTreeSubIndices[i]) {
+    gotoNode(o,i,root,hash,relpath)
+  } else {
+    getScript(relpath+'navtreeindex'+i,function(){
+      navTreeSubIndices[i] = eval('NAVTREEINDEX'+i);
+      if (navTreeSubIndices[i]) {
+        gotoNode(o,i,root,hash,relpath);
+      }
+    },true);
+  }
+}
+
+function showSyncOff(n,relpath)
+{
+    n.html('<img src="'+relpath+'sync_off.png" title="'+SYNCOFFMSG+'"/>');
+}
+
+function showSyncOn(n,relpath)
+{
+    n.html('<img src="'+relpath+'sync_on.png"/ title="'+SYNCONMSG+'">');
+}
+
+function toggleSyncButton(relpath)
+{
+  var navSync = $('#nav-sync');
+  if (navSync.hasClass('sync')) {
+    navSync.removeClass('sync');
+    showSyncOff(navSync,relpath);
+    storeLink(stripPath2($(location).attr('pathname'))+$(location).attr('hash'));
+  } else {
+    navSync.addClass('sync');
+    showSyncOn(navSync,relpath);
+    deleteLink();
+  }
+}
+
+function initNavTree(toroot,relpath)
+{
+  var o = new Object();
+  o.toroot = toroot;
+  o.node = new Object();
+  o.node.li = document.getElementById("nav-tree-contents");
+  o.node.childrenData = NAVTREE;
+  o.node.children = new Array();
+  o.node.childrenUL = document.createElement("ul");
+  o.node.getChildrenUL = function() { return o.node.childrenUL; };
+  o.node.li.appendChild(o.node.childrenUL);
+  o.node.depth = 0;
+  o.node.relpath = relpath;
+  o.node.expanded = false;
+  o.node.isLast = true;
+  o.node.plus_img = document.createElement("img");
+  o.node.plus_img.src = relpath+"ftv2pnode.png";
+  o.node.plus_img.width = 16;
+  o.node.plus_img.height = 22;
+
+  if (localStorageSupported()) {
+    var navSync = $('#nav-sync');
+    if (cachedLink()) {
+      showSyncOff(navSync,relpath);
+      navSync.removeClass('sync');
+    } else {
+      showSyncOn(navSync,relpath);
+    }
+    navSync.click(function(){ toggleSyncButton(relpath); });
+  }
+
+  navTo(o,toroot,window.location.hash,relpath);
+
+  $(window).bind('hashchange', function(){
+     if (window.location.hash && window.location.hash.length>1){
+       var a;
+       if ($(location).attr('hash')){
+         var clslink=stripPath($(location).attr('pathname'))+':'+
+                               $(location).attr('hash').substring(1);
+         a=$('.item a[class$="'+clslink+'"]');
+       }
+       if (a==null || !$(a).parent().parent().hasClass('selected')){
+         $('.item').removeClass('selected');
+         $('.item').removeAttr('id');
+       }
+       var link=stripPath2($(location).attr('pathname'));
+       navTo(o,link,$(location).attr('hash'),relpath);
+     }
+  })
+
+  $(window).load(showRoot);
+}
+
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtreeindex0.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtreeindex0.js
new file mode 100644
index 0000000000000000000000000000000000000000..44a969be42d7dc71075d8a2da1c1773d7a1e05b7
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtreeindex0.js
@@ -0,0 +1,95 @@
+var NAVTREEINDEX0 =
+{
+"_m_a_x30102_8cpp.html":[1,0,0,1,0],
+"_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f":[1,0,0,1,0,3],
+"_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b":[1,0,0,1,0,4],
+"_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df":[1,0,0,1,0,1],
+"_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968":[1,0,0,1,0,2],
+"_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6":[1,0,0,1,0,5],
+"_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976":[1,0,0,1,0,0],
+"_m_a_x30102_8cpp_source.html":[1,0,0,1,0],
+"_m_a_x30102_8h.html":[1,0,0,1,1],
+"_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd":[1,0,0,1,1,3],
+"_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10":[1,0,0,1,1,14],
+"_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f":[1,0,0,1,1,26],
+"_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37":[1,0,0,1,1,0],
+"_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23":[1,0,0,1,1,19],
+"_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1":[1,0,0,1,1,17],
+"_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0":[1,0,0,1,1,20],
+"_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f":[1,0,0,1,1,4],
+"_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab":[1,0,0,1,1,18],
+"_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df":[1,0,0,1,1,24],
+"_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163":[1,0,0,1,1,16],
+"_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968":[1,0,0,1,1,25],
+"_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6":[1,0,0,1,1,28],
+"_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d":[1,0,0,1,1,22],
+"_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681":[1,0,0,1,1,23],
+"_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b":[1,0,0,1,1,10],
+"_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a":[1,0,0,1,1,9],
+"_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6":[1,0,0,1,1,1],
+"_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191":[1,0,0,1,1,8],
+"_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21":[1,0,0,1,1,11],
+"_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd":[1,0,0,1,1,27],
+"_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c":[1,0,0,1,1,13],
+"_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1":[1,0,0,1,1,7],
+"_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115":[1,0,0,1,1,5],
+"_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f":[1,0,0,1,1,12],
+"_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379":[1,0,0,1,1,21],
+"_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca":[1,0,0,1,1,2],
+"_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d":[1,0,0,1,1,6],
+"_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707":[1,0,0,1,1,15],
+"_m_a_x30102_8h_source.html":[1,0,0,1,1],
+"algorithm_8cpp.html":[1,0,0,0,0],
+"algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9":[1,0,0,0,0,0],
+"algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060":[1,0,0,0,0,5],
+"algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6":[1,0,0,0,0,1],
+"algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff":[1,0,0,0,0,4],
+"algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf":[1,0,0,0,0,2],
+"algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a":[1,0,0,0,0,3],
+"algorithm_8cpp_source.html":[1,0,0,0,0],
+"algorithm_8h.html":[1,0,0,0,1],
+"algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929":[1,0,0,0,1,17],
+"algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9":[1,0,0,0,1,8],
+"algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119":[1,0,0,0,1,2],
+"algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8":[1,0,0,0,1,3],
+"algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7":[1,0,0,0,1,7],
+"algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060":[1,0,0,0,1,13],
+"algorithm_8h.html#a62050365673e666cd0d661a3664c26e6":[1,0,0,0,1,9],
+"algorithm_8h.html#a65e9886d74aaee76545e83dd09011727":[1,0,0,0,1,1],
+"algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7":[1,0,0,0,1,0],
+"algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff":[1,0,0,0,1,12],
+"algorithm_8h.html#a72c76142c07186ae6d7200ec3c9a4f76":[1,0,0,0,1,16],
+"algorithm_8h.html#a7d4e0b0915b58092f3b4bb2fbd252f3f":[1,0,0,0,1,15],
+"algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524":[1,0,0,0,1,4],
+"algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf":[1,0,0,0,1,10],
+"algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384":[1,0,0,0,1,6],
+"algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a":[1,0,0,0,1,11],
+"algorithm_8h.html#adfeeb6b08271807492803acc50347108":[1,0,0,0,1,18],
+"algorithm_8h.html#aea73b3b76ec2f4743e97452ee93c9cd2":[1,0,0,0,1,14],
+"algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae":[1,0,0,0,1,5],
+"algorithm_8h_source.html":[1,0,0,0,1],
+"dir_19b53f07f52837a342947cc20e6d978f.html":[1,0,0,0],
+"dir_70c5cd4c8bba287fe799894cc0903ca4.html":[1,0,0],
+"dir_d4a9a7556cca61907ce453116086a23a.html":[1,0,0,1],
+"files.html":[1,0],
+"globals.html":[1,1,0],
+"globals_defs.html":[1,1,3],
+"globals_func.html":[1,1,1],
+"globals_vars.html":[1,1,2],
+"index.html":[],
+"index.html":[0],
+"main_8cpp.html":[1,0,0,2],
+"main_8cpp.html#a07a24850120a56110cc2838d0afcafcf":[1,0,0,2,3],
+"main_8cpp.html#a2134a5a06f0865c945543a1f07eba387":[1,0,0,2,0],
+"main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024":[1,0,0,2,6],
+"main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f":[1,0,0,2,7],
+"main_8cpp.html#a43fb8ea97a26647405ca359095323280":[1,0,0,2,5],
+"main_8cpp.html#a786e6c57c793d9af51360154ef90eb93":[1,0,0,2,9],
+"main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753":[1,0,0,2,2],
+"main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723":[1,0,0,2,4],
+"main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6":[1,0,0,2,8],
+"main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2":[1,0,0,2,10],
+"main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4":[1,0,0,2,1],
+"main_8cpp_source.html":[1,0,0,2],
+"pages.html":[]
+};
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/open.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/open.png
new file mode 100644
index 0000000000000000000000000000000000000000..4455dd052b486c7eed671dd60c9c2d1d9a8ab540
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/open.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/resize.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/resize.js
new file mode 100644
index 0000000000000000000000000000000000000000..9fe82ba9e18e81e6aab076352e55a0adde77d5cf
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/resize.js
@@ -0,0 +1,93 @@
+var cookie_namespace = 'doxygen'; 
+var sidenav,navtree,content,header;
+
+function readCookie(cookie) 
+{
+  var myCookie = cookie_namespace+"_"+cookie+"=";
+  if (document.cookie) 
+  {
+    var index = document.cookie.indexOf(myCookie);
+    if (index != -1) 
+    {
+      var valStart = index + myCookie.length;
+      var valEnd = document.cookie.indexOf(";", valStart);
+      if (valEnd == -1) 
+      {
+        valEnd = document.cookie.length;
+      }
+      var val = document.cookie.substring(valStart, valEnd);
+      return val;
+    }
+  }
+  return 0;
+}
+
+function writeCookie(cookie, val, expiration) 
+{
+  if (val==undefined) return;
+  if (expiration == null) 
+  {
+    var date = new Date();
+    date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week
+    expiration = date.toGMTString();
+  }
+  document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/";
+}
+ 
+function resizeWidth() 
+{
+  var windowWidth = $(window).width() + "px";
+  var sidenavWidth = $(sidenav).width();
+  content.css({marginLeft:parseInt(sidenavWidth)+6+"px"}); //account for 6px-wide handle-bar
+  writeCookie('width',sidenavWidth, null);
+}
+
+function restoreWidth(navWidth)
+{
+  var windowWidth = $(window).width() + "px";
+  content.css({marginLeft:parseInt(navWidth)+6+"px"});
+  sidenav.css({width:navWidth + "px"});
+}
+
+function resizeHeight() 
+{
+  var headerHeight = header.height();
+  var footerHeight = footer.height();
+  var windowHeight = $(window).height() - headerHeight - footerHeight;
+  content.css({height:windowHeight + "px"});
+  navtree.css({height:windowHeight + "px"});
+  sidenav.css({height:windowHeight + "px",top: headerHeight+"px"});
+}
+
+function initResizable()
+{
+  header  = $("#top");
+  sidenav = $("#side-nav");
+  content = $("#doc-content");
+  navtree = $("#nav-tree");
+  footer  = $("#nav-path");
+  $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } });
+  $(window).resize(function() { resizeHeight(); });
+  var width = readCookie('width');
+  if (width) { restoreWidth(width); } else { resizeWidth(); }
+  resizeHeight();
+  var url = location.href;
+  var i=url.indexOf("#");
+  if (i>=0) window.location.hash=url.substr(i);
+  var _preventDefault = function(evt) { evt.preventDefault(); };
+  $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault);
+  $(document).bind('touchmove',function(e){
+    try {
+      var target = e.target;
+      while (target) {
+        if ($(target).css('-webkit-overflow-scrolling')=='touch') return;
+        target = target.parentNode;
+      }
+      e.preventDefault();
+    } catch(err) {
+      e.preventDefault();
+    }
+  });
+}
+
+
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_5f.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_5f.html
new file mode 100644
index 0000000000000000000000000000000000000000..1f27755abcc456428727abe38488a4ca9fb20d05
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_5f.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_5f.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_5f.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_5f.js
new file mode 100644
index 0000000000000000000000000000000000000000..f3cfc5f66d6117073117a2d7ab0ab49bd7f96ab3
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_5f.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['_5f_5fattribute_5f_5f',['__attribute__',['../_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9',1,'SoftI2CMaster.h']]],
+  ['_5f_5ftmp_5freg_5f_5f',['__tmp_reg__',['../_soft_i2_c_master_8h.html#a0e6fc492b674d6ccceccb06e3bbf907b',1,'SoftI2CMaster.h']]],
+  ['_5fsofti2c_5fh',['_SOFTI2C_H',['../_soft_i2_c_master_8h.html#a3bf497cc1d59d184775241e80a21085e',1,'SoftI2CMaster.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_61.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_61.html
new file mode 100644
index 0000000000000000000000000000000000000000..a3164d5530cdc248dc6d84e7cd064b9c8e59c6ef
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_61.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_61.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_61.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_61.js
new file mode 100644
index 0000000000000000000000000000000000000000..a33f3640678039e7379ae8d2611bc1ed5fb84758
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_61.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+  ['algorithm_2ecpp',['algorithm.cpp',['../algorithm_8cpp.html',1,'']]],
+  ['algorithm_2eh',['algorithm.h',['../algorithm_8h.html',1,'']]],
+  ['aun_5fir_5fbuffer',['aun_ir_buffer',['../main_8cpp.html#a07a24850120a56110cc2838d0afcafcf',1,'main.cpp']]],
+  ['aun_5fred_5fbuffer',['aun_red_buffer',['../main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723',1,'main.cpp']]],
+  ['auw_5fhamm',['auw_hamm',['../algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929',1,'algorithm.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_62.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_62.html
new file mode 100644
index 0000000000000000000000000000000000000000..ee8871cb35abdbc961f286f534ac45ae99ea161e
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_62.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_62.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_62.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_62.js
new file mode 100644
index 0000000000000000000000000000000000000000..f2bb9345a6d353ad20b04ef8276a08fb1b72b126
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_62.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['buffer_5fsize',['BUFFER_SIZE',['../algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7',1,'algorithm.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_63.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_63.html
new file mode 100644
index 0000000000000000000000000000000000000000..56b5ad1e9ead06b8c8f91e4d657e194a6be9914c
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_63.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_63.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_63.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_63.js
new file mode 100644
index 0000000000000000000000000000000000000000..4e7566ffc3a48b4678d57601a658c087fbadd7cd
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_63.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['ch_5fhr_5fvalid',['ch_hr_valid',['../main_8cpp.html#a43fb8ea97a26647405ca359095323280',1,'main.cpp']]],
+  ['ch_5fspo2_5fvalid',['ch_spo2_valid',['../main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024',1,'main.cpp']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_66.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_66.html
new file mode 100644
index 0000000000000000000000000000000000000000..3d1f8b35e895a9ae97f7ce9d58738a63445e0016
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_66.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_66.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_66.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_66.js
new file mode 100644
index 0000000000000000000000000000000000000000..59ef048f53bba24bc28be5e4fb0c3ded5bb3089e
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_66.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['false',['false',['../algorithm_8h.html#a65e9886d74aaee76545e83dd09011727',1,'algorithm.h']]],
+  ['fs',['FS',['../algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119',1,'algorithm.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_67.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_67.html
new file mode 100644
index 0000000000000000000000000000000000000000..41a459ae7d0420f919bcaa3df3f8917ca02183b6
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_67.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_67.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_67.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_67.js
new file mode 100644
index 0000000000000000000000000000000000000000..efaa118b426229741c33670c63a380e55b5bdfb9
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_67.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['getbrightness',['getBrightness',['../class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f',1,'Adafruit_NeoPixel']]],
+  ['getpixelcolor',['getPixelColor',['../class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa',1,'Adafruit_NeoPixel']]],
+  ['getpixels',['getPixels',['../class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067',1,'Adafruit_NeoPixel']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_68.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_68.html
new file mode 100644
index 0000000000000000000000000000000000000000..6df9097825df498059783b5dd705406fb92cbdb0
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_68.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_68.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_68.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_68.js
new file mode 100644
index 0000000000000000000000000000000000000000..75625372ddd744b30eb31e259e77aa2eac0f427e
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_68.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['hamming_5fsize',['HAMMING_SIZE',['../algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8',1,'algorithm.h']]],
+  ['hr_5ffifo_5fsize',['HR_FIFO_SIZE',['../algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524',1,'algorithm.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_69.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_69.html
new file mode 100644
index 0000000000000000000000000000000000000000..1a00b554d45d8e53dc52802b19d7140c75ec6035
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_69.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_69.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_69.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_69.js
new file mode 100644
index 0000000000000000000000000000000000000000..1d3b12d6047714e7eda957d0ef1a337019ca8764
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_69.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['i2c',['i2c',['../_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976',1,'MAX30102.cpp']]],
+  ['i2c_5fread_5faddr',['I2C_READ_ADDR',['../_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37',1,'MAX30102.h']]],
+  ['i2c_5fwrite_5faddr',['I2C_WRITE_ADDR',['../_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6',1,'MAX30102.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6c.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6c.html
new file mode 100644
index 0000000000000000000000000000000000000000..f6383cc2277076c6a62635811a54437b30789441
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6c.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_6c.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6c.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6c.js
new file mode 100644
index 0000000000000000000000000000000000000000..7f8b68c5d9cb434a8ecb53f682e6df4c47a05cd7
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6c.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['loop',['loop',['../_r_d117___a_r_d_u_i_n_o_8ino.html#afe461d27b9c48d5921c00d521181f12f',1,'RD117_ARDUINO.ino']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6d.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6d.html
new file mode 100644
index 0000000000000000000000000000000000000000..2e27d4d647dae6ee0838633ee1d10ca2f3486c7d
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6d.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_6d.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6d.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6d.js
new file mode 100644
index 0000000000000000000000000000000000000000..e9b1cb8aade5d247cc2c66c1fa713107cefaabba
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6d.js
@@ -0,0 +1,22 @@
+var searchData=
+[
+  ['main_20page',['Main Page',['../index.html',1,'']]],
+  ['ma4_5fsize',['MA4_SIZE',['../algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae',1,'algorithm.h']]],
+  ['main',['main',['../main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main.cpp']]],
+  ['main_2ecpp',['main.cpp',['../main_8cpp.html',1,'']]],
+  ['max30102_2ecpp',['MAX30102.cpp',['../_m_a_x30102_8cpp.html',1,'']]],
+  ['max30102_2eh',['MAX30102.h',['../_m_a_x30102_8h.html',1,'']]],
+  ['max_5fbrightness',['MAX_BRIGHTNESS',['../main_8cpp.html#a2134a5a06f0865c945543a1f07eba387',1,'main.cpp']]],
+  ['maxim_5ffind_5fpeaks',['maxim_find_peaks',['../algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9',1,'maxim_find_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num):&#160;algorithm.cpp'],['../algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9',1,'maxim_find_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num):&#160;algorithm.cpp']]],
+  ['maxim_5fheart_5frate_5fand_5foxygen_5fsaturation',['maxim_heart_rate_and_oxygen_saturation',['../algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6',1,'maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer, int32_t n_ir_buffer_length, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, int32_t *pn_heart_rate, int8_t *pch_hr_valid):&#160;algorithm.cpp'],['../algorithm_8h.html#a62050365673e666cd0d661a3664c26e6',1,'maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer, int32_t n_ir_buffer_length, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, int32_t *pn_heart_rate, int8_t *pch_hr_valid):&#160;algorithm.cpp']]],
+  ['maxim_5fmax30102_5finit',['maxim_max30102_init',['../_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df',1,'maxim_max30102_init():&#160;MAX30102.cpp'],['../_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df',1,'maxim_max30102_init():&#160;MAX30102.cpp']]],
+  ['maxim_5fmax30102_5fread_5ffifo',['maxim_max30102_read_fifo',['../_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968',1,'maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led):&#160;MAX30102.cpp'],['../_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968',1,'maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led):&#160;MAX30102.cpp']]],
+  ['maxim_5fmax30102_5fread_5freg',['maxim_max30102_read_reg',['../_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f',1,'maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data):&#160;MAX30102.cpp'],['../_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f',1,'maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data):&#160;MAX30102.cpp']]],
+  ['maxim_5fmax30102_5freset',['maxim_max30102_reset',['../_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b',1,'maxim_max30102_reset():&#160;MAX30102.cpp'],['../_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd',1,'maxim_max30102_reset(void):&#160;MAX30102.cpp']]],
+  ['maxim_5fmax30102_5fwrite_5freg',['maxim_max30102_write_reg',['../_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6',1,'maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data):&#160;MAX30102.cpp'],['../_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6',1,'maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data):&#160;MAX30102.cpp']]],
+  ['maxim_5fpeaks_5fabove_5fmin_5fheight',['maxim_peaks_above_min_height',['../algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf',1,'maxim_peaks_above_min_height(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height):&#160;algorithm.cpp'],['../algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf',1,'maxim_peaks_above_min_height(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height):&#160;algorithm.cpp']]],
+  ['maxim_5fremove_5fclose_5fpeaks',['maxim_remove_close_peaks',['../algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a',1,'maxim_remove_close_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance):&#160;algorithm.cpp'],['../algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a',1,'maxim_remove_close_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance):&#160;algorithm.cpp']]],
+  ['maxim_5fsort_5fascend',['maxim_sort_ascend',['../algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff',1,'maxim_sort_ascend(int32_t *pn_x, int32_t n_size):&#160;algorithm.cpp'],['../algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff',1,'maxim_sort_ascend(int32_t *pn_x, int32_t n_size):&#160;algorithm.cpp']]],
+  ['maxim_5fsort_5findices_5fdescend',['maxim_sort_indices_descend',['../algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060',1,'maxim_sort_indices_descend(int32_t *pn_x, int32_t *pn_indx, int32_t n_size):&#160;algorithm.cpp'],['../algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060',1,'maxim_sort_indices_descend(int32_t *pn_x, int32_t *pn_indx, int32_t n_size):&#160;algorithm.cpp']]],
+  ['min',['min',['../algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384',1,'algorithm.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6e.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6e.html
new file mode 100644
index 0000000000000000000000000000000000000000..1f92ee5b62466491d31e77844835cb305a6315e4
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6e.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_6e.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6e.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6e.js
new file mode 100644
index 0000000000000000000000000000000000000000..31433021eca5d3c7dbbfa4172d2fc25d7076a8d8
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6e.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['n_5fheart_5frate',['n_heart_rate',['../main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f',1,'main.cpp']]],
+  ['n_5fir_5fbuffer_5flength',['n_ir_buffer_length',['../main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6',1,'main.cpp']]],
+  ['n_5fsp02',['n_sp02',['../main_8cpp.html#a786e6c57c793d9af51360154ef90eb93',1,'main.cpp']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_70.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_70.html
new file mode 100644
index 0000000000000000000000000000000000000000..0340151b687e33841f2e19bd1abc17b116c4313c
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_70.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_70.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_70.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_70.js
new file mode 100644
index 0000000000000000000000000000000000000000..95bca2eecb2fe407322ca3eec7b8cd1aed1b474e
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_70.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['pc',['pc',['../main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753',1,'main.cpp']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_72.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_72.html
new file mode 100644
index 0000000000000000000000000000000000000000..0ab18d65fecb495568c4d6cc60bea40dfd0c20c6
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_72.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_72.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_72.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_72.js
new file mode 100644
index 0000000000000000000000000000000000000000..e29e58959503e0b6630d3f06bcdee130b5307902
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_72.js
@@ -0,0 +1,25 @@
+var searchData=
+[
+  ['reg_5ffifo_5fconfig',['REG_FIFO_CONFIG',['../_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca',1,'MAX30102.h']]],
+  ['reg_5ffifo_5fdata',['REG_FIFO_DATA',['../_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd',1,'MAX30102.h']]],
+  ['reg_5ffifo_5frd_5fptr',['REG_FIFO_RD_PTR',['../_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f',1,'MAX30102.h']]],
+  ['reg_5ffifo_5fwr_5fptr',['REG_FIFO_WR_PTR',['../_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115',1,'MAX30102.h']]],
+  ['reg_5fintr_5fenable_5f1',['REG_INTR_ENABLE_1',['../_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d',1,'MAX30102.h']]],
+  ['reg_5fintr_5fenable_5f2',['REG_INTR_ENABLE_2',['../_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1',1,'MAX30102.h']]],
+  ['reg_5fintr_5fstatus_5f1',['REG_INTR_STATUS_1',['../_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191',1,'MAX30102.h']]],
+  ['reg_5fintr_5fstatus_5f2',['REG_INTR_STATUS_2',['../_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a',1,'MAX30102.h']]],
+  ['reg_5fled1_5fpa',['REG_LED1_PA',['../_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b',1,'MAX30102.h']]],
+  ['reg_5fled2_5fpa',['REG_LED2_PA',['../_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21',1,'MAX30102.h']]],
+  ['reg_5fmode_5fconfig',['REG_MODE_CONFIG',['../_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f',1,'MAX30102.h']]],
+  ['reg_5fmulti_5fled_5fctrl1',['REG_MULTI_LED_CTRL1',['../_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c',1,'MAX30102.h']]],
+  ['reg_5fmulti_5fled_5fctrl2',['REG_MULTI_LED_CTRL2',['../_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10',1,'MAX30102.h']]],
+  ['reg_5fovf_5fcounter',['REG_OVF_COUNTER',['../_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707',1,'MAX30102.h']]],
+  ['reg_5fpart_5fid',['REG_PART_ID',['../_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163',1,'MAX30102.h']]],
+  ['reg_5fpilot_5fpa',['REG_PILOT_PA',['../_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1',1,'MAX30102.h']]],
+  ['reg_5fprox_5fint_5fthresh',['REG_PROX_INT_THRESH',['../_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab',1,'MAX30102.h']]],
+  ['reg_5frev_5fid',['REG_REV_ID',['../_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23',1,'MAX30102.h']]],
+  ['reg_5fspo2_5fconfig',['REG_SPO2_CONFIG',['../_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0',1,'MAX30102.h']]],
+  ['reg_5ftemp_5fconfig',['REG_TEMP_CONFIG',['../_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379',1,'MAX30102.h']]],
+  ['reg_5ftemp_5ffrac',['REG_TEMP_FRAC',['../_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d',1,'MAX30102.h']]],
+  ['reg_5ftemp_5fintr',['REG_TEMP_INTR',['../_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681',1,'MAX30102.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_73.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_73.html
new file mode 100644
index 0000000000000000000000000000000000000000..1ec8f174deb7d3393d75bfa7c6566605014312a4
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_73.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_73.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_73.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_73.js
new file mode 100644
index 0000000000000000000000000000000000000000..56bb31333923404facb0da3a4647389783c51b44
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_73.js
@@ -0,0 +1,16 @@
+var searchData=
+[
+  ['scl_5fddr',['SCL_DDR',['../_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b',1,'SoftI2CMaster.h']]],
+  ['scl_5fin',['SCL_IN',['../_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49',1,'SoftI2CMaster.h']]],
+  ['scl_5fout',['SCL_OUT',['../_soft_i2_c_master_8h.html#a07204a69a1872edbb272cde4d0c1e23f',1,'SoftI2CMaster.h']]],
+  ['sda_5fddr',['SDA_DDR',['../_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653',1,'SoftI2CMaster.h']]],
+  ['sda_5fin',['SDA_IN',['../_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83',1,'SoftI2CMaster.h']]],
+  ['sda_5fout',['SDA_OUT',['../_soft_i2_c_master_8h.html#ae154abbe60d159b6f4951ade68cc5fae',1,'SoftI2CMaster.h']]],
+  ['setbrightness',['setBrightness',['../class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53',1,'Adafruit_NeoPixel']]],
+  ['setpin',['setPin',['../class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b',1,'Adafruit_NeoPixel']]],
+  ['setpixelcolor',['setPixelColor',['../class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1',1,'Adafruit_NeoPixel::setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b)'],['../class_adafruit___neo_pixel.html#a35eda2252e3ed976a11d35cb8f4b2e41',1,'Adafruit_NeoPixel::setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w)'],['../class_adafruit___neo_pixel.html#abbf243cce591dc37be507cf173485bc8',1,'Adafruit_NeoPixel::setPixelColor(uint16_t n, uint32_t c)']]],
+  ['setup',['setup',['../_r_d117___a_r_d_u_i_n_o_8ino.html#a4fc01d736fe50cf5b977f755b675f11d',1,'RD117_ARDUINO.ino']]],
+  ['show',['show',['../class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7',1,'Adafruit_NeoPixel']]],
+  ['softi2cmaster_2eh',['SoftI2CMaster.h',['../_soft_i2_c_master_8h.html',1,'']]],
+  ['softi2dmaster_5fh_5f',['SOFTI2DMASTER_H_',['../_soft_i2_c_master_8h.html#ae00bf2b1fa56ce97ea467dc60682022c',1,'SoftI2CMaster.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_74.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_74.html
new file mode 100644
index 0000000000000000000000000000000000000000..fdc6589d017af1eaae56465f8461f3a41d16f418
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_74.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_74.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_74.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_74.js
new file mode 100644
index 0000000000000000000000000000000000000000..549c70c68c7b4c582ff25e15b4a0b37bc6af7719
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_74.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['true',['true',['../algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7',1,'algorithm.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_75.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_75.html
new file mode 100644
index 0000000000000000000000000000000000000000..ab8455ed502f599d05fde18b860cf67e4a17d04b
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_75.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_75.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_75.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_75.js
new file mode 100644
index 0000000000000000000000000000000000000000..48a3fb1a5b44bdcb034cf32fdf0db89acbd038fd
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_75.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['uch_5fdummy',['uch_dummy',['../main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2',1,'main.cpp']]],
+  ['uch_5fspo2_5ftable',['uch_spo2_table',['../algorithm_8h.html#adfeeb6b08271807492803acc50347108',1,'algorithm.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_7e.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_7e.html
new file mode 100644
index 0000000000000000000000000000000000000000..63512c6f9e3dc8030a4ad8a19880f8ba8365ba94
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_7e.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_7e.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_7e.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_7e.js
new file mode 100644
index 0000000000000000000000000000000000000000..5d71164d25f93f92bdcde53513542c0fa554f305
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_7e.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['_7eadafruit_5fneopixel',['~Adafruit_NeoPixel',['../class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db',1,'Adafruit_NeoPixel']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/classes_61.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/classes_61.html
new file mode 100644
index 0000000000000000000000000000000000000000..85e5d72a38502d3ec4993e9bb8407912e1662029
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/classes_61.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_61.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/classes_61.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/classes_61.js
new file mode 100644
index 0000000000000000000000000000000000000000..433c370498efebf3fc9c83ba400ef2dd27f70377
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/classes_61.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['adafruit_5fneopixel',['Adafruit_NeoPixel',['../class_adafruit___neo_pixel.html',1,'']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/close.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/close.png
new file mode 100644
index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/close.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_5f.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_5f.html
new file mode 100644
index 0000000000000000000000000000000000000000..548a824972fe413793129fba64fb778f2095a586
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_5f.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_5f.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_5f.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_5f.js
new file mode 100644
index 0000000000000000000000000000000000000000..0a63cad635e06dafb61108fc455a74e07ad52dc8
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_5f.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['_5f_5ftmp_5freg_5f_5f',['__tmp_reg__',['../_soft_i2_c_master_8h.html#a0e6fc492b674d6ccceccb06e3bbf907b',1,'SoftI2CMaster.h']]],
+  ['_5fsofti2c_5fh',['_SOFTI2C_H',['../_soft_i2_c_master_8h.html#a3bf497cc1d59d184775241e80a21085e',1,'SoftI2CMaster.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_62.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_62.html
new file mode 100644
index 0000000000000000000000000000000000000000..48009dac43867a81cf2a589e8bbce20058eaf776
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_62.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_62.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_62.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_62.js
new file mode 100644
index 0000000000000000000000000000000000000000..f2bb9345a6d353ad20b04ef8276a08fb1b72b126
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_62.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['buffer_5fsize',['BUFFER_SIZE',['../algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7',1,'algorithm.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_66.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_66.html
new file mode 100644
index 0000000000000000000000000000000000000000..4ddd13f0ec4a1fa1be86a9b351aa236850dd841e
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_66.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_66.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_66.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_66.js
new file mode 100644
index 0000000000000000000000000000000000000000..59ef048f53bba24bc28be5e4fb0c3ded5bb3089e
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_66.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['false',['false',['../algorithm_8h.html#a65e9886d74aaee76545e83dd09011727',1,'algorithm.h']]],
+  ['fs',['FS',['../algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119',1,'algorithm.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_68.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_68.html
new file mode 100644
index 0000000000000000000000000000000000000000..43d93b87be51e6ad466f60ce1ac2fbf64e0a88ae
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_68.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_68.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_68.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_68.js
new file mode 100644
index 0000000000000000000000000000000000000000..75625372ddd744b30eb31e259e77aa2eac0f427e
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_68.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['hamming_5fsize',['HAMMING_SIZE',['../algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8',1,'algorithm.h']]],
+  ['hr_5ffifo_5fsize',['HR_FIFO_SIZE',['../algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524',1,'algorithm.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_69.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_69.html
new file mode 100644
index 0000000000000000000000000000000000000000..ebf00b8a06389c28cad6aa46a4e420ac5f75f210
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_69.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_69.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_69.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_69.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d3ea8d2b66defc5fe588a66e8ba4e43e17018c6
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_69.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['i2c_5fread_5faddr',['I2C_READ_ADDR',['../_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37',1,'MAX30102.h']]],
+  ['i2c_5fwrite_5faddr',['I2C_WRITE_ADDR',['../_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6',1,'MAX30102.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6d.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6d.html
new file mode 100644
index 0000000000000000000000000000000000000000..d2827022a50f045c07886a894b6845965407de35
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6d.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_6d.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6d.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6d.js
new file mode 100644
index 0000000000000000000000000000000000000000..3fb637229725dd51c04f8fd89467fdf6a778e88a
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6d.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['ma4_5fsize',['MA4_SIZE',['../algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae',1,'algorithm.h']]],
+  ['max_5fbrightness',['MAX_BRIGHTNESS',['../main_8cpp.html#a2134a5a06f0865c945543a1f07eba387',1,'main.cpp']]],
+  ['min',['min',['../algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384',1,'algorithm.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6e.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6e.html
new file mode 100644
index 0000000000000000000000000000000000000000..5b7f68f3280ab8fa6234e4e06c26a4c9d556d8af
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6e.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_6e.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6e.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6e.js
new file mode 100644
index 0000000000000000000000000000000000000000..a9f96cdac21367146d44278a6ee3ad9f19a46b6b
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6e.js
@@ -0,0 +1,35 @@
+var searchData=
+[
+  ['neo_5fbgr',['NEO_BGR',['../_adafruit___neo_pixel_8h.html#a9129664a08911b56227dd641116f105f',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fbgrw',['NEO_BGRW',['../_adafruit___neo_pixel_8h.html#a5b49f89982b6e60d20f7aaab79030d54',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fbgwr',['NEO_BGWR',['../_adafruit___neo_pixel_8h.html#a143de1c7084e1f833beecbdae00b321c',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fbrg',['NEO_BRG',['../_adafruit___neo_pixel_8h.html#afde6ec00a4ec8fad0267ae1a6689379e',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fbrgw',['NEO_BRGW',['../_adafruit___neo_pixel_8h.html#aad617c46d4a64cd4ec8d0ed1a0f30073',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fbrwg',['NEO_BRWG',['../_adafruit___neo_pixel_8h.html#a4b4571bfc0a3ebfb4720ce4e5fbe9acf',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fbwgr',['NEO_BWGR',['../_adafruit___neo_pixel_8h.html#a2595b8689ce5bd39634d017620ae57b8',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fbwrg',['NEO_BWRG',['../_adafruit___neo_pixel_8h.html#aaf438f131d0fa8a0be6791a553145860',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fgbr',['NEO_GBR',['../_adafruit___neo_pixel_8h.html#abca04ce54125372080f2fbf2afdcf027',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fgbrw',['NEO_GBRW',['../_adafruit___neo_pixel_8h.html#af60d024b8f8954960e59056c57520080',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fgbwr',['NEO_GBWR',['../_adafruit___neo_pixel_8h.html#a20be9abdf372b9c71d9fdacc3e6a9d1a',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fgrb',['NEO_GRB',['../_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fgrbw',['NEO_GRBW',['../_adafruit___neo_pixel_8h.html#a722066abc60b560235b3b22082c2e68e',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fgrwb',['NEO_GRWB',['../_adafruit___neo_pixel_8h.html#a35a185ff488486a74745e9094892558c',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fgwbr',['NEO_GWBR',['../_adafruit___neo_pixel_8h.html#aaaaa406f36f1c596526579944ca7043d',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fgwrb',['NEO_GWRB',['../_adafruit___neo_pixel_8h.html#aa29b3544b4257e851de2e214894d1236',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fkhz400',['NEO_KHZ400',['../_adafruit___neo_pixel_8h.html#a9c4067fd0cceb0432d1758fc07ede469',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fkhz800',['NEO_KHZ800',['../_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5frbg',['NEO_RBG',['../_adafruit___neo_pixel_8h.html#a7d6aaa56c8e2603312cba8dbdf9c5661',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5frbgw',['NEO_RBGW',['../_adafruit___neo_pixel_8h.html#a198dc192119c166c544efc3e89fdd1cd',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5frbwg',['NEO_RBWG',['../_adafruit___neo_pixel_8h.html#a7b6b551a990b498bed36aadba4a498d5',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5frgb',['NEO_RGB',['../_adafruit___neo_pixel_8h.html#aa4f80df5ab240d93359f40956462f758',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5frgbw',['NEO_RGBW',['../_adafruit___neo_pixel_8h.html#a71f7c6e45f4c63fceca6b5b73c7a7c9d',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5frgwb',['NEO_RGWB',['../_adafruit___neo_pixel_8h.html#abcce73b2eafdf1bb331a8f02fba95d10',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5frwbg',['NEO_RWBG',['../_adafruit___neo_pixel_8h.html#a9254ebc9367c071457d0321f64c9d5fa',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5frwgb',['NEO_RWGB',['../_adafruit___neo_pixel_8h.html#a122c6bb3e44525d2f975dcd89b094267',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fwbgr',['NEO_WBGR',['../_adafruit___neo_pixel_8h.html#a015eeccbf1bd19907c34d7b39b63bb84',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fwbrg',['NEO_WBRG',['../_adafruit___neo_pixel_8h.html#a3eed3aeba511a2478a1ee8c17516732b',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fwgbr',['NEO_WGBR',['../_adafruit___neo_pixel_8h.html#af722c80d41894df25c363b9ebf371b4e',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fwgrb',['NEO_WGRB',['../_adafruit___neo_pixel_8h.html#a59561d96a0f8a526ee3448e7b104d8b3',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fwrbg',['NEO_WRBG',['../_adafruit___neo_pixel_8h.html#a266a08af576ed4331db48b16bf572d29',1,'Adafruit_NeoPixel.h']]],
+  ['neo_5fwrgb',['NEO_WRGB',['../_adafruit___neo_pixel_8h.html#a4ee056fd3d7b09538908b35643a2508a',1,'Adafruit_NeoPixel.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_72.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_72.html
new file mode 100644
index 0000000000000000000000000000000000000000..e6a82c4d5f0c2a21cd23c5d908c469ce28696638
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_72.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_72.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_72.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_72.js
new file mode 100644
index 0000000000000000000000000000000000000000..e29e58959503e0b6630d3f06bcdee130b5307902
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_72.js
@@ -0,0 +1,25 @@
+var searchData=
+[
+  ['reg_5ffifo_5fconfig',['REG_FIFO_CONFIG',['../_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca',1,'MAX30102.h']]],
+  ['reg_5ffifo_5fdata',['REG_FIFO_DATA',['../_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd',1,'MAX30102.h']]],
+  ['reg_5ffifo_5frd_5fptr',['REG_FIFO_RD_PTR',['../_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f',1,'MAX30102.h']]],
+  ['reg_5ffifo_5fwr_5fptr',['REG_FIFO_WR_PTR',['../_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115',1,'MAX30102.h']]],
+  ['reg_5fintr_5fenable_5f1',['REG_INTR_ENABLE_1',['../_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d',1,'MAX30102.h']]],
+  ['reg_5fintr_5fenable_5f2',['REG_INTR_ENABLE_2',['../_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1',1,'MAX30102.h']]],
+  ['reg_5fintr_5fstatus_5f1',['REG_INTR_STATUS_1',['../_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191',1,'MAX30102.h']]],
+  ['reg_5fintr_5fstatus_5f2',['REG_INTR_STATUS_2',['../_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a',1,'MAX30102.h']]],
+  ['reg_5fled1_5fpa',['REG_LED1_PA',['../_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b',1,'MAX30102.h']]],
+  ['reg_5fled2_5fpa',['REG_LED2_PA',['../_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21',1,'MAX30102.h']]],
+  ['reg_5fmode_5fconfig',['REG_MODE_CONFIG',['../_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f',1,'MAX30102.h']]],
+  ['reg_5fmulti_5fled_5fctrl1',['REG_MULTI_LED_CTRL1',['../_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c',1,'MAX30102.h']]],
+  ['reg_5fmulti_5fled_5fctrl2',['REG_MULTI_LED_CTRL2',['../_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10',1,'MAX30102.h']]],
+  ['reg_5fovf_5fcounter',['REG_OVF_COUNTER',['../_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707',1,'MAX30102.h']]],
+  ['reg_5fpart_5fid',['REG_PART_ID',['../_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163',1,'MAX30102.h']]],
+  ['reg_5fpilot_5fpa',['REG_PILOT_PA',['../_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1',1,'MAX30102.h']]],
+  ['reg_5fprox_5fint_5fthresh',['REG_PROX_INT_THRESH',['../_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab',1,'MAX30102.h']]],
+  ['reg_5frev_5fid',['REG_REV_ID',['../_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23',1,'MAX30102.h']]],
+  ['reg_5fspo2_5fconfig',['REG_SPO2_CONFIG',['../_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0',1,'MAX30102.h']]],
+  ['reg_5ftemp_5fconfig',['REG_TEMP_CONFIG',['../_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379',1,'MAX30102.h']]],
+  ['reg_5ftemp_5ffrac',['REG_TEMP_FRAC',['../_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d',1,'MAX30102.h']]],
+  ['reg_5ftemp_5fintr',['REG_TEMP_INTR',['../_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681',1,'MAX30102.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_73.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_73.html
new file mode 100644
index 0000000000000000000000000000000000000000..913ae48c43b24d3a760d1a4339f213f1da09f754
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_73.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_73.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_73.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_73.js
new file mode 100644
index 0000000000000000000000000000000000000000..90ebde0f7613ad65668ba91be6e175119f26ae5b
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_73.js
@@ -0,0 +1,10 @@
+var searchData=
+[
+  ['scl_5fddr',['SCL_DDR',['../_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b',1,'SoftI2CMaster.h']]],
+  ['scl_5fin',['SCL_IN',['../_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49',1,'SoftI2CMaster.h']]],
+  ['scl_5fout',['SCL_OUT',['../_soft_i2_c_master_8h.html#a07204a69a1872edbb272cde4d0c1e23f',1,'SoftI2CMaster.h']]],
+  ['sda_5fddr',['SDA_DDR',['../_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653',1,'SoftI2CMaster.h']]],
+  ['sda_5fin',['SDA_IN',['../_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83',1,'SoftI2CMaster.h']]],
+  ['sda_5fout',['SDA_OUT',['../_soft_i2_c_master_8h.html#ae154abbe60d159b6f4951ade68cc5fae',1,'SoftI2CMaster.h']]],
+  ['softi2dmaster_5fh_5f',['SOFTI2DMASTER_H_',['../_soft_i2_c_master_8h.html#ae00bf2b1fa56ce97ea467dc60682022c',1,'SoftI2CMaster.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_74.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_74.html
new file mode 100644
index 0000000000000000000000000000000000000000..7c78f103fd950ae9997fea65edd5cd8d6ca3669c
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_74.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_74.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_74.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_74.js
new file mode 100644
index 0000000000000000000000000000000000000000..549c70c68c7b4c582ff25e15b4a0b37bc6af7719
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_74.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['true',['true',['../algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7',1,'algorithm.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_61.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_61.html
new file mode 100644
index 0000000000000000000000000000000000000000..5a8e4549927fadc4f2a7eecbc3cd8a1583288c24
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_61.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_61.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_61.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_61.js
new file mode 100644
index 0000000000000000000000000000000000000000..17135d4f19c7433747fdb1c4b3572f30aa74013b
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_61.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['algorithm_2ecpp',['algorithm.cpp',['../algorithm_8cpp.html',1,'']]],
+  ['algorithm_2eh',['algorithm.h',['../algorithm_8h.html',1,'']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_6d.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_6d.html
new file mode 100644
index 0000000000000000000000000000000000000000..d9d93006bf698ab5588e6f0f6ff42134fed57855
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_6d.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_6d.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_6d.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_6d.js
new file mode 100644
index 0000000000000000000000000000000000000000..913a4161e564ce3289f57eaff1058b96f80a9b83
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_6d.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['main_2ecpp',['main.cpp',['../main_8cpp.html',1,'']]],
+  ['max30102_2ecpp',['MAX30102.cpp',['../_m_a_x30102_8cpp.html',1,'']]],
+  ['max30102_2eh',['MAX30102.h',['../_m_a_x30102_8h.html',1,'']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_72.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_72.html
new file mode 100644
index 0000000000000000000000000000000000000000..609fb48fc3752af18d480c883ab4a8832b796e11
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_72.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_72.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_72.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_72.js
new file mode 100644
index 0000000000000000000000000000000000000000..6f99fa1e7819ddfc7d8dd169598c9267d7048ddc
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_72.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['rd117_5farduino_2eino',['RD117_ARDUINO.ino',['../_r_d117___a_r_d_u_i_n_o_8ino.html',1,'']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_73.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_73.html
new file mode 100644
index 0000000000000000000000000000000000000000..e0de9e6b55d3c44e47346a761291de2b512f4f3d
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_73.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_73.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_73.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_73.js
new file mode 100644
index 0000000000000000000000000000000000000000..50164c8f97e6b603da311b76a4195ce1a8f26cda
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_73.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['softi2cmaster_2eh',['SoftI2CMaster.h',['../_soft_i2_c_master_8h.html',1,'']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_5f.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_5f.html
new file mode 100644
index 0000000000000000000000000000000000000000..cb54e927d595236a58bc0f5e5d67958e2622dc9a
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_5f.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_5f.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_5f.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_5f.js
new file mode 100644
index 0000000000000000000000000000000000000000..e95f60940d4daead65e39d513ad2487d6eddbe7e
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_5f.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['_5f_5fattribute_5f_5f',['__attribute__',['../_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9',1,'SoftI2CMaster.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_61.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_61.html
new file mode 100644
index 0000000000000000000000000000000000000000..7f395337e22f0b5b7a14ae59f21297346ee55ddb
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_61.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_61.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_61.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_61.js
new file mode 100644
index 0000000000000000000000000000000000000000..7140a912da4fa717d8bf141fa6745a5afed57f59
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_61.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['adafruit_5fneopixel',['Adafruit_NeoPixel',['../class_adafruit___neo_pixel.html#ac314debe6917c8c9b320b785139c6e58',1,'Adafruit_NeoPixel::Adafruit_NeoPixel(uint16_t n, uint8_t p=6, neoPixelType t=NEO_GRB+NEO_KHZ800)'],['../class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320',1,'Adafruit_NeoPixel::Adafruit_NeoPixel(void)']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_62.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_62.html
new file mode 100644
index 0000000000000000000000000000000000000000..def0606e751ffef99228d6b0397ef0f409a72be0
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_62.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_62.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_62.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_62.js
new file mode 100644
index 0000000000000000000000000000000000000000..b3270dd3bcc0aa3e3be0c853a492707ecce1b31d
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_62.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['begin',['begin',['../class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7',1,'Adafruit_NeoPixel']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_63.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_63.html
new file mode 100644
index 0000000000000000000000000000000000000000..9ebe11d691b1000eb7ed1be6e4617c5fdc912e4c
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_63.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_63.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_63.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_63.js
new file mode 100644
index 0000000000000000000000000000000000000000..42109ea131badc1eb4b5687f6d87f3bcae15a884
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_63.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['canshow',['canShow',['../class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e',1,'Adafruit_NeoPixel']]],
+  ['clear',['clear',['../class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204',1,'Adafruit_NeoPixel']]],
+  ['color',['Color',['../class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec',1,'Adafruit_NeoPixel::Color(uint8_t r, uint8_t g, uint8_t b)'],['../class_adafruit___neo_pixel.html#a9846704aaabd4e102beba5a5484d5738',1,'Adafruit_NeoPixel::Color(uint8_t r, uint8_t g, uint8_t b, uint8_t w)']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_67.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_67.html
new file mode 100644
index 0000000000000000000000000000000000000000..d0ab42a3f73a82bcc2c98809041ab47506db33fc
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_67.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_67.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_67.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_67.js
new file mode 100644
index 0000000000000000000000000000000000000000..efaa118b426229741c33670c63a380e55b5bdfb9
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_67.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['getbrightness',['getBrightness',['../class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f',1,'Adafruit_NeoPixel']]],
+  ['getpixelcolor',['getPixelColor',['../class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa',1,'Adafruit_NeoPixel']]],
+  ['getpixels',['getPixels',['../class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067',1,'Adafruit_NeoPixel']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_69.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_69.html
new file mode 100644
index 0000000000000000000000000000000000000000..e2041976c97708009f6281d2286f40c035798c8e
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_69.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_69.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_69.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_69.js
new file mode 100644
index 0000000000000000000000000000000000000000..dd2ca0d2f7d6289aa54035004ab17c2866ae5501
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_69.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['i2c',['i2c',['../_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976',1,'MAX30102.cpp']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6c.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6c.html
new file mode 100644
index 0000000000000000000000000000000000000000..da371cfab0f69e3e840805c156c70c7fb416587a
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6c.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_6c.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6c.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6c.js
new file mode 100644
index 0000000000000000000000000000000000000000..7f8b68c5d9cb434a8ecb53f682e6df4c47a05cd7
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6c.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['loop',['loop',['../_r_d117___a_r_d_u_i_n_o_8ino.html#afe461d27b9c48d5921c00d521181f12f',1,'RD117_ARDUINO.ino']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6d.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6d.html
new file mode 100644
index 0000000000000000000000000000000000000000..d01ac5376a1ccc91ee60e6010b678a27c5bb99f0
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6d.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_6d.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6d.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6d.js
new file mode 100644
index 0000000000000000000000000000000000000000..9fcea7bbc8f5292ec4e545ed36d8e7116d7e88c1
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6d.js
@@ -0,0 +1,15 @@
+var searchData=
+[
+  ['main',['main',['../main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main.cpp']]],
+  ['maxim_5ffind_5fpeaks',['maxim_find_peaks',['../algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9',1,'maxim_find_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num):&#160;algorithm.cpp'],['../algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9',1,'maxim_find_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num):&#160;algorithm.cpp']]],
+  ['maxim_5fheart_5frate_5fand_5foxygen_5fsaturation',['maxim_heart_rate_and_oxygen_saturation',['../algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6',1,'maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer, int32_t n_ir_buffer_length, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, int32_t *pn_heart_rate, int8_t *pch_hr_valid):&#160;algorithm.cpp'],['../algorithm_8h.html#a62050365673e666cd0d661a3664c26e6',1,'maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer, int32_t n_ir_buffer_length, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, int32_t *pn_heart_rate, int8_t *pch_hr_valid):&#160;algorithm.cpp']]],
+  ['maxim_5fmax30102_5finit',['maxim_max30102_init',['../_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df',1,'maxim_max30102_init():&#160;MAX30102.cpp'],['../_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df',1,'maxim_max30102_init():&#160;MAX30102.cpp']]],
+  ['maxim_5fmax30102_5fread_5ffifo',['maxim_max30102_read_fifo',['../_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968',1,'maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led):&#160;MAX30102.cpp'],['../_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968',1,'maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led):&#160;MAX30102.cpp']]],
+  ['maxim_5fmax30102_5fread_5freg',['maxim_max30102_read_reg',['../_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f',1,'maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data):&#160;MAX30102.cpp'],['../_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f',1,'maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data):&#160;MAX30102.cpp']]],
+  ['maxim_5fmax30102_5freset',['maxim_max30102_reset',['../_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b',1,'maxim_max30102_reset():&#160;MAX30102.cpp'],['../_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd',1,'maxim_max30102_reset(void):&#160;MAX30102.cpp']]],
+  ['maxim_5fmax30102_5fwrite_5freg',['maxim_max30102_write_reg',['../_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6',1,'maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data):&#160;MAX30102.cpp'],['../_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6',1,'maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data):&#160;MAX30102.cpp']]],
+  ['maxim_5fpeaks_5fabove_5fmin_5fheight',['maxim_peaks_above_min_height',['../algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf',1,'maxim_peaks_above_min_height(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height):&#160;algorithm.cpp'],['../algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf',1,'maxim_peaks_above_min_height(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height):&#160;algorithm.cpp']]],
+  ['maxim_5fremove_5fclose_5fpeaks',['maxim_remove_close_peaks',['../algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a',1,'maxim_remove_close_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance):&#160;algorithm.cpp'],['../algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a',1,'maxim_remove_close_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance):&#160;algorithm.cpp']]],
+  ['maxim_5fsort_5fascend',['maxim_sort_ascend',['../algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff',1,'maxim_sort_ascend(int32_t *pn_x, int32_t n_size):&#160;algorithm.cpp'],['../algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff',1,'maxim_sort_ascend(int32_t *pn_x, int32_t n_size):&#160;algorithm.cpp']]],
+  ['maxim_5fsort_5findices_5fdescend',['maxim_sort_indices_descend',['../algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060',1,'maxim_sort_indices_descend(int32_t *pn_x, int32_t *pn_indx, int32_t n_size):&#160;algorithm.cpp'],['../algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060',1,'maxim_sort_indices_descend(int32_t *pn_x, int32_t *pn_indx, int32_t n_size):&#160;algorithm.cpp']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6e.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6e.html
new file mode 100644
index 0000000000000000000000000000000000000000..d734dd07e7db1cf5c6a60c431ecf497ce9fe187e
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6e.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_6e.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6e.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6e.js
new file mode 100644
index 0000000000000000000000000000000000000000..68c17a8b88d7a63493c0bfb0200f744067d2a5eb
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6e.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['numpixels',['numPixels',['../class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b',1,'Adafruit_NeoPixel']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_70.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_70.html
new file mode 100644
index 0000000000000000000000000000000000000000..c62125ede7ba44e537cb09368c7eb2ca78184e70
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_70.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_70.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_70.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_70.js
new file mode 100644
index 0000000000000000000000000000000000000000..95bca2eecb2fe407322ca3eec7b8cd1aed1b474e
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_70.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['pc',['pc',['../main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753',1,'main.cpp']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_73.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_73.html
new file mode 100644
index 0000000000000000000000000000000000000000..774d577f55229a943f7c1a168a81f7a5d546c308
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_73.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_73.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_73.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_73.js
new file mode 100644
index 0000000000000000000000000000000000000000..e2a01b1d2d490da1644e910fcb6ccb6287c50a0a
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_73.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+  ['setbrightness',['setBrightness',['../class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53',1,'Adafruit_NeoPixel']]],
+  ['setpin',['setPin',['../class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b',1,'Adafruit_NeoPixel']]],
+  ['setpixelcolor',['setPixelColor',['../class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1',1,'Adafruit_NeoPixel::setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b)'],['../class_adafruit___neo_pixel.html#a35eda2252e3ed976a11d35cb8f4b2e41',1,'Adafruit_NeoPixel::setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w)'],['../class_adafruit___neo_pixel.html#abbf243cce591dc37be507cf173485bc8',1,'Adafruit_NeoPixel::setPixelColor(uint16_t n, uint32_t c)']]],
+  ['setup',['setup',['../_r_d117___a_r_d_u_i_n_o_8ino.html#a4fc01d736fe50cf5b977f755b675f11d',1,'RD117_ARDUINO.ino']]],
+  ['show',['show',['../class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7',1,'Adafruit_NeoPixel']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_75.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_75.html
new file mode 100644
index 0000000000000000000000000000000000000000..2d61754d1661e69ae07b7711b53bcc055fe105df
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_75.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_75.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_75.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_75.js
new file mode 100644
index 0000000000000000000000000000000000000000..ba520c8a25fa9cd83c473da40ec879705c73c3b4
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_75.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['updatelength',['updateLength',['../class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944',1,'Adafruit_NeoPixel']]],
+  ['updatetype',['updateType',['../class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b',1,'Adafruit_NeoPixel']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_7e.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_7e.html
new file mode 100644
index 0000000000000000000000000000000000000000..fd1d3ce20d5462719b7021cd751694b4f906e957
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_7e.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_7e.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_7e.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_7e.js
new file mode 100644
index 0000000000000000000000000000000000000000..5d71164d25f93f92bdcde53513542c0fa554f305
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_7e.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['_7eadafruit_5fneopixel',['~Adafruit_NeoPixel',['../class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db',1,'Adafruit_NeoPixel']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/mag_sel.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/mag_sel.png
new file mode 100644
index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/mag_sel.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/nomatches.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/nomatches.html
new file mode 100644
index 0000000000000000000000000000000000000000..b1ded27e9ad6af3a2ac11e6b21ce159dcaf87e0c
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/nomatches.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/pages_6d.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/pages_6d.html
new file mode 100644
index 0000000000000000000000000000000000000000..958ccc652ec1a383bda5c9862b8ab2387d4e4be6
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/pages_6d.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_6d.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/pages_6d.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/pages_6d.js
new file mode 100644
index 0000000000000000000000000000000000000000..1608e57e1eca91ec4049c1ff52b5026009d8795d
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/pages_6d.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['main_20page',['Main Page',['../index.html',1,'']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search.css b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search.css
new file mode 100644
index 0000000000000000000000000000000000000000..eb19dd7564b668aaa5416ad61505d8385a96d345
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search.css
@@ -0,0 +1,238 @@
+/*---------------- Search Box */
+
+#FSearchBox {
+    float: left;
+}
+
+#MSearchBox {
+    white-space : nowrap;
+    position: absolute;
+    float: none;
+    display: inline;
+    margin-top: 8px;
+    right: 0px;
+    width: 170px;
+    z-index: 102;
+    background-color: white;
+}
+
+#MSearchBox .left
+{
+    display:block;
+    position:absolute;
+    left:10px;
+    width:20px;
+    height:19px;
+    background:url('search_l.png') no-repeat;
+    background-position:right;
+}
+
+#MSearchSelect {
+    display:block;
+    position:absolute;
+    width:20px;
+    height:19px;
+}
+
+.left #MSearchSelect {
+    left:4px;
+}
+
+.right #MSearchSelect {
+    right:5px;
+}
+
+#MSearchField {
+    display:block;
+    position:absolute;
+    height:19px;
+    background:url('search_m.png') repeat-x;
+    border:none;
+    width:116px;
+    margin-left:20px;
+    padding-left:4px;
+    color: #909090;
+    outline: none;
+    font: 9pt Arial, Verdana, sans-serif;
+}
+
+#FSearchBox #MSearchField {
+    margin-left:15px;
+}
+
+#MSearchBox .right {
+    display:block;
+    position:absolute;
+    right:10px;
+    top:0px;
+    width:20px;
+    height:19px;
+    background:url('search_r.png') no-repeat;
+    background-position:left;
+}
+
+#MSearchClose {
+    display: none;
+    position: absolute;
+    top: 4px;
+    background : none;
+    border: none;
+    margin: 0px 4px 0px 0px;
+    padding: 0px 0px;
+    outline: none;
+}
+
+.left #MSearchClose {
+    left: 6px;
+}
+
+.right #MSearchClose {
+    right: 2px;
+}
+
+.MSearchBoxActive #MSearchField {
+    color: #000000;
+}
+
+/*---------------- Search filter selection */
+
+#MSearchSelectWindow {
+    display: none;
+    position: absolute;
+    left: 0; top: 0;
+    border: 1px solid #9CD3D1;
+    background-color: #FAFCFC;
+    z-index: 1;
+    padding-top: 4px;
+    padding-bottom: 4px;
+    -moz-border-radius: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+.SelectItem {
+    font: 8pt Arial, Verdana, sans-serif;
+    padding-left:  2px;
+    padding-right: 12px;
+    border: 0px;
+}
+
+span.SelectionMark {
+    margin-right: 4px;
+    font-family: monospace;
+    outline-style: none;
+    text-decoration: none;
+}
+
+a.SelectItem {
+    display: block;
+    outline-style: none;
+    color: #000000; 
+    text-decoration: none;
+    padding-left:   6px;
+    padding-right: 12px;
+}
+
+a.SelectItem:focus,
+a.SelectItem:active {
+    color: #000000; 
+    outline-style: none;
+    text-decoration: none;
+}
+
+a.SelectItem:hover {
+    color: #FFFFFF;
+    background-color: #449D99;
+    outline-style: none;
+    text-decoration: none;
+    cursor: pointer;
+    display: block;
+}
+
+/*---------------- Search results window */
+
+iframe#MSearchResults {
+    width: 60ex;
+    height: 15em;
+}
+
+#MSearchResultsWindow {
+    display: none;
+    position: absolute;
+    left: 0; top: 0;
+    border: 1px solid #000;
+    background-color: #F0F8F8;
+}
+
+/* ----------------------------------- */
+
+
+#SRIndex {
+    clear:both; 
+    padding-bottom: 15px;
+}
+
+.SREntry {
+    font-size: 10pt;
+    padding-left: 1ex;
+}
+
+.SRPage .SREntry {
+    font-size: 8pt;
+    padding: 1px 5px;
+}
+
+body.SRPage {
+    margin: 5px 2px;
+}
+
+.SRChildren {
+    padding-left: 3ex; padding-bottom: .5em 
+}
+
+.SRPage .SRChildren {
+    display: none;
+}
+
+.SRSymbol {
+    font-weight: bold; 
+    color: #49A8A3;
+    font-family: Arial, Verdana, sans-serif;
+    text-decoration: none;
+    outline: none;
+}
+
+a.SRScope {
+    display: block;
+    color: #49A8A3; 
+    font-family: Arial, Verdana, sans-serif;
+    text-decoration: none;
+    outline: none;
+}
+
+a.SRSymbol:focus, a.SRSymbol:active,
+a.SRScope:focus, a.SRScope:active {
+    text-decoration: underline;
+}
+
+span.SRScope {
+    padding-left: 4px;
+}
+
+.SRPage .SRStatus {
+    padding: 2px 5px;
+    font-size: 8pt;
+    font-style: italic;
+}
+
+.SRResult {
+    display: none;
+}
+
+DIV.searchresults {
+    margin-left: 10px;
+    margin-right: 10px;
+}
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search.js
new file mode 100644
index 0000000000000000000000000000000000000000..f2384114ebd6ec472679139c37834192a4282f4b
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search.js
@@ -0,0 +1,805 @@
+// Search script generated by doxygen
+// Copyright (C) 2009 by Dimitri van Heesch.
+
+// The code in this file is loosly based on main.js, part of Natural Docs,
+// which is Copyright (C) 2003-2008 Greg Valure
+// Natural Docs is licensed under the GPL.
+
+var indexSectionsWithContent =
+{
+  0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111001011000110101011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+  1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+  2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+  3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000000000010000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+  4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001011000100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+  5: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+};
+
+var indexSectionNames =
+{
+  0: "all",
+  1: "files",
+  2: "functions",
+  3: "variables",
+  4: "defines",
+  5: "pages"
+};
+
+function convertToId(search)
+{
+  var result = '';
+  for (i=0;i<search.length;i++)
+  {
+    var c = search.charAt(i);
+    var cn = c.charCodeAt(0);
+    if (c.match(/[a-z0-9]/))
+    {
+      result+=c;
+    }
+    else if (cn<16) 
+    {
+      result+="_0"+cn.toString(16);
+    }
+    else 
+    {
+      result+="_"+cn.toString(16);
+    }
+  }
+  return result;
+}
+
+function getXPos(item)
+{
+  var x = 0;
+  if (item.offsetWidth)
+  {
+    while (item && item!=document.body)
+    {
+      x   += item.offsetLeft;
+      item = item.offsetParent;
+    }
+  }
+  return x;
+}
+
+function getYPos(item)
+{
+  var y = 0;
+  if (item.offsetWidth)
+  {
+     while (item && item!=document.body)
+     {
+       y   += item.offsetTop;
+       item = item.offsetParent;
+     }
+  }
+  return y;
+}
+
+/* A class handling everything associated with the search panel.
+
+   Parameters:
+   name - The name of the global variable that will be 
+          storing this instance.  Is needed to be able to set timeouts.
+   resultPath - path to use for external files
+*/
+function SearchBox(name, resultsPath, inFrame, label)
+{
+  if (!name || !resultsPath) {  alert("Missing parameters to SearchBox."); }
+   
+  // ---------- Instance variables
+  this.name                  = name;
+  this.resultsPath           = resultsPath;
+  this.keyTimeout            = 0;
+  this.keyTimeoutLength      = 500;
+  this.closeSelectionTimeout = 300;
+  this.lastSearchValue       = "";
+  this.lastResultsPage       = "";
+  this.hideTimeout           = 0;
+  this.searchIndex           = 0;
+  this.searchActive          = false;
+  this.insideFrame           = inFrame;
+  this.searchLabel           = label;
+
+  // ----------- DOM Elements
+
+  this.DOMSearchField = function()
+  {  return document.getElementById("MSearchField");  }
+
+  this.DOMSearchSelect = function()
+  {  return document.getElementById("MSearchSelect");  }
+
+  this.DOMSearchSelectWindow = function()
+  {  return document.getElementById("MSearchSelectWindow");  }
+
+  this.DOMPopupSearchResults = function()
+  {  return document.getElementById("MSearchResults");  }
+
+  this.DOMPopupSearchResultsWindow = function()
+  {  return document.getElementById("MSearchResultsWindow");  }
+
+  this.DOMSearchClose = function()
+  {  return document.getElementById("MSearchClose"); }
+
+  this.DOMSearchBox = function()
+  {  return document.getElementById("MSearchBox");  }
+
+  // ------------ Event Handlers
+
+  // Called when focus is added or removed from the search field.
+  this.OnSearchFieldFocus = function(isActive)
+  {
+    this.Activate(isActive);
+  }
+
+  this.OnSearchSelectShow = function()
+  {
+    var searchSelectWindow = this.DOMSearchSelectWindow();
+    var searchField        = this.DOMSearchSelect();
+
+    if (this.insideFrame)
+    {
+      var left = getXPos(searchField);
+      var top  = getYPos(searchField);
+      left += searchField.offsetWidth + 6;
+      top += searchField.offsetHeight;
+
+      // show search selection popup
+      searchSelectWindow.style.display='block';
+      left -= searchSelectWindow.offsetWidth;
+      searchSelectWindow.style.left =  left + 'px';
+      searchSelectWindow.style.top  =  top  + 'px';
+    }
+    else
+    {
+      var left = getXPos(searchField);
+      var top  = getYPos(searchField);
+      top += searchField.offsetHeight;
+
+      // show search selection popup
+      searchSelectWindow.style.display='block';
+      searchSelectWindow.style.left =  left + 'px';
+      searchSelectWindow.style.top  =  top  + 'px';
+    }
+
+    // stop selection hide timer
+    if (this.hideTimeout) 
+    {
+      clearTimeout(this.hideTimeout);
+      this.hideTimeout=0;
+    }
+    return false; // to avoid "image drag" default event
+  }
+
+  this.OnSearchSelectHide = function()
+  {
+    this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
+                                  this.closeSelectionTimeout);
+  }
+
+  // Called when the content of the search field is changed.
+  this.OnSearchFieldChange = function(evt)
+  {
+    if (this.keyTimeout) // kill running timer
+    {
+      clearTimeout(this.keyTimeout);
+      this.keyTimeout = 0;
+    }
+
+    var e  = (evt) ? evt : window.event; // for IE
+    if (e.keyCode==40 || e.keyCode==13)
+    {
+      if (e.shiftKey==1)
+      {
+        this.OnSearchSelectShow();
+        var win=this.DOMSearchSelectWindow(); 
+        for (i=0;i<win.childNodes.length;i++)
+        {
+          var child = win.childNodes[i]; // get span within a
+          if (child.className=='SelectItem')
+          {
+            child.focus();
+            return;
+          }
+        }
+        return;
+      }
+      else if (window.frames.MSearchResults.searchResults)
+      {
+        var elem = window.frames.MSearchResults.searchResults.NavNext(0);
+        if (elem) elem.focus();
+      }
+    }
+    else if (e.keyCode==27) // Escape out of the search field
+    {
+      this.DOMSearchField().blur();
+      this.DOMPopupSearchResultsWindow().style.display = 'none';
+      this.DOMSearchClose().style.display = 'none';
+      this.lastSearchValue = '';
+      this.Activate(false);
+      return;
+    }
+
+    // strip whitespaces
+    var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+
+    if (searchValue != this.lastSearchValue) // search value has changed
+    {
+      if (searchValue != "") // non-empty search
+      {
+        // set timer for search update
+        this.keyTimeout = setTimeout(this.name + '.Search()',
+                                     this.keyTimeoutLength);
+      }
+      else // empty search field
+      {
+        this.DOMPopupSearchResultsWindow().style.display = 'none';
+        this.DOMSearchClose().style.display = 'none';
+        this.lastSearchValue = '';
+      }
+    }
+  }
+
+  this.SelectItemCount = function(id)
+  {
+    var count=0;
+    var win=this.DOMSearchSelectWindow(); 
+    for (i=0;i<win.childNodes.length;i++)
+    {
+      var child = win.childNodes[i]; // get span within a
+      if (child.className=='SelectItem')
+      {
+        count++;
+      }
+    }
+    return count;
+  }
+
+  this.SelectItemSet = function(id)
+  {
+    var i,j=0;
+    var win=this.DOMSearchSelectWindow(); 
+    for (i=0;i<win.childNodes.length;i++)
+    {
+      var child = win.childNodes[i]; // get span within a
+      if (child.className=='SelectItem')
+      {
+        var node = child.firstChild;
+        if (j==id)
+        {
+          node.innerHTML='&#8226;';
+        }
+        else
+        {
+          node.innerHTML='&#160;';
+        }
+        j++;
+      }
+    }
+  }
+
+  // Called when an search filter selection is made.
+  // set item with index id as the active item
+  this.OnSelectItem = function(id)
+  {
+    this.searchIndex = id;
+    this.SelectItemSet(id);
+    var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+    if (searchValue!="" && this.searchActive) // something was found -> do a search
+    {
+      this.Search();
+    }
+  }
+
+  this.OnSearchSelectKey = function(evt)
+  {
+    var e = (evt) ? evt : window.event; // for IE
+    if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
+    {
+      this.searchIndex++;
+      this.OnSelectItem(this.searchIndex);
+    }
+    else if (e.keyCode==38 && this.searchIndex>0) // Up
+    {
+      this.searchIndex--;
+      this.OnSelectItem(this.searchIndex);
+    }
+    else if (e.keyCode==13 || e.keyCode==27)
+    {
+      this.OnSelectItem(this.searchIndex);
+      this.CloseSelectionWindow();
+      this.DOMSearchField().focus();
+    }
+    return false;
+  }
+
+  // --------- Actions
+
+  // Closes the results window.
+  this.CloseResultsWindow = function()
+  {
+    this.DOMPopupSearchResultsWindow().style.display = 'none';
+    this.DOMSearchClose().style.display = 'none';
+    this.Activate(false);
+  }
+
+  this.CloseSelectionWindow = function()
+  {
+    this.DOMSearchSelectWindow().style.display = 'none';
+  }
+
+  // Performs a search.
+  this.Search = function()
+  {
+    this.keyTimeout = 0;
+
+    // strip leading whitespace
+    var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
+
+    var code = searchValue.toLowerCase().charCodeAt(0);
+    var hexCode;
+    if (code<16) 
+    {
+      hexCode="0"+code.toString(16);
+    }
+    else 
+    {
+      hexCode=code.toString(16);
+    }
+
+    var resultsPage;
+    var resultsPageWithSearch;
+    var hasResultsPage;
+
+    if (indexSectionsWithContent[this.searchIndex].charAt(code) == '1')
+    {
+       resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';
+       resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
+       hasResultsPage = true;
+    }
+    else // nothing available for this search term
+    {
+       resultsPage = this.resultsPath + '/nomatches.html';
+       resultsPageWithSearch = resultsPage;
+       hasResultsPage = false;
+    }
+
+    window.frames.MSearchResults.location = resultsPageWithSearch;  
+    var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
+
+    if (domPopupSearchResultsWindow.style.display!='block')
+    {
+       var domSearchBox = this.DOMSearchBox();
+       this.DOMSearchClose().style.display = 'inline';
+       if (this.insideFrame)
+       {
+         var domPopupSearchResults = this.DOMPopupSearchResults();
+         domPopupSearchResultsWindow.style.position = 'relative';
+         domPopupSearchResultsWindow.style.display  = 'block';
+         var width = document.body.clientWidth - 8; // the -8 is for IE :-(
+         domPopupSearchResultsWindow.style.width    = width + 'px';
+         domPopupSearchResults.style.width          = width + 'px';
+       }
+       else
+       {
+         var domPopupSearchResults = this.DOMPopupSearchResults();
+         var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
+         var top  = getYPos(domSearchBox) + 20;  // domSearchBox.offsetHeight + 1;
+         domPopupSearchResultsWindow.style.display = 'block';
+         left -= domPopupSearchResults.offsetWidth;
+         domPopupSearchResultsWindow.style.top     = top  + 'px';
+         domPopupSearchResultsWindow.style.left    = left + 'px';
+       }
+    }
+
+    this.lastSearchValue = searchValue;
+    this.lastResultsPage = resultsPage;
+  }
+
+  // -------- Activation Functions
+
+  // Activates or deactivates the search panel, resetting things to 
+  // their default values if necessary. 
+  this.Activate = function(isActive)
+  {
+    if (isActive || // open it
+        this.DOMPopupSearchResultsWindow().style.display == 'block' 
+       )
+    {
+      this.DOMSearchBox().className = 'MSearchBoxActive';
+
+      var searchField = this.DOMSearchField();
+
+      if (searchField.value == this.searchLabel) // clear "Search" term upon entry
+      {  
+        searchField.value = '';  
+        this.searchActive = true;
+      }
+    }
+    else if (!isActive) // directly remove the panel
+    {
+      this.DOMSearchBox().className = 'MSearchBoxInactive';
+      this.DOMSearchField().value   = this.searchLabel;
+      this.searchActive             = false;
+      this.lastSearchValue          = ''
+      this.lastResultsPage          = '';
+    }
+  }
+}
+
+// -----------------------------------------------------------------------
+
+// The class that handles everything on the search results page.
+function SearchResults(name)
+{
+    // The number of matches from the last run of <Search()>.
+    this.lastMatchCount = 0;
+    this.lastKey = 0;
+    this.repeatOn = false;
+
+    // Toggles the visibility of the passed element ID.
+    this.FindChildElement = function(id)
+    {
+      var parentElement = document.getElementById(id);
+      var element = parentElement.firstChild;
+
+      while (element && element!=parentElement)
+      {
+        if (element.nodeName == 'DIV' && element.className == 'SRChildren')
+        {
+          return element;
+        }
+
+        if (element.nodeName == 'DIV' && element.hasChildNodes())
+        {  
+           element = element.firstChild;  
+        }
+        else if (element.nextSibling)
+        {  
+           element = element.nextSibling;  
+        }
+        else
+        {
+          do
+          {
+            element = element.parentNode;
+          }
+          while (element && element!=parentElement && !element.nextSibling);
+
+          if (element && element!=parentElement)
+          {  
+            element = element.nextSibling;  
+          }
+        }
+      }
+    }
+
+    this.Toggle = function(id)
+    {
+      var element = this.FindChildElement(id);
+      if (element)
+      {
+        if (element.style.display == 'block')
+        {
+          element.style.display = 'none';
+        }
+        else
+        {
+          element.style.display = 'block';
+        }
+      }
+    }
+
+    // Searches for the passed string.  If there is no parameter,
+    // it takes it from the URL query.
+    //
+    // Always returns true, since other documents may try to call it
+    // and that may or may not be possible.
+    this.Search = function(search)
+    {
+      if (!search) // get search word from URL
+      {
+        search = window.location.search;
+        search = search.substring(1);  // Remove the leading '?'
+        search = unescape(search);
+      }
+
+      search = search.replace(/^ +/, ""); // strip leading spaces
+      search = search.replace(/ +$/, ""); // strip trailing spaces
+      search = search.toLowerCase();
+      search = convertToId(search);
+
+      var resultRows = document.getElementsByTagName("div");
+      var matches = 0;
+
+      var i = 0;
+      while (i < resultRows.length)
+      {
+        var row = resultRows.item(i);
+        if (row.className == "SRResult")
+        {
+          var rowMatchName = row.id.toLowerCase();
+          rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
+
+          if (search.length<=rowMatchName.length && 
+             rowMatchName.substr(0, search.length)==search)
+          {
+            row.style.display = 'block';
+            matches++;
+          }
+          else
+          {
+            row.style.display = 'none';
+          }
+        }
+        i++;
+      }
+      document.getElementById("Searching").style.display='none';
+      if (matches == 0) // no results
+      {
+        document.getElementById("NoMatches").style.display='block';
+      }
+      else // at least one result
+      {
+        document.getElementById("NoMatches").style.display='none';
+      }
+      this.lastMatchCount = matches;
+      return true;
+    }
+
+    // return the first item with index index or higher that is visible
+    this.NavNext = function(index)
+    {
+      var focusItem;
+      while (1)
+      {
+        var focusName = 'Item'+index;
+        focusItem = document.getElementById(focusName);
+        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+        {
+          break;
+        }
+        else if (!focusItem) // last element
+        {
+          break;
+        }
+        focusItem=null;
+        index++;
+      }
+      return focusItem;
+    }
+
+    this.NavPrev = function(index)
+    {
+      var focusItem;
+      while (1)
+      {
+        var focusName = 'Item'+index;
+        focusItem = document.getElementById(focusName);
+        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+        {
+          break;
+        }
+        else if (!focusItem) // last element
+        {
+          break;
+        }
+        focusItem=null;
+        index--;
+      }
+      return focusItem;
+    }
+
+    this.ProcessKeys = function(e)
+    {
+      if (e.type == "keydown") 
+      {
+        this.repeatOn = false;
+        this.lastKey = e.keyCode;
+      }
+      else if (e.type == "keypress")
+      {
+        if (!this.repeatOn)
+        {
+          if (this.lastKey) this.repeatOn = true;
+          return false; // ignore first keypress after keydown
+        }
+      }
+      else if (e.type == "keyup")
+      {
+        this.lastKey = 0;
+        this.repeatOn = false;
+      }
+      return this.lastKey!=0;
+    }
+
+    this.Nav = function(evt,itemIndex) 
+    {
+      var e  = (evt) ? evt : window.event; // for IE
+      if (e.keyCode==13) return true;
+      if (!this.ProcessKeys(e)) return false;
+
+      if (this.lastKey==38) // Up
+      {
+        var newIndex = itemIndex-1;
+        var focusItem = this.NavPrev(newIndex);
+        if (focusItem)
+        {
+          var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
+          if (child && child.style.display == 'block') // children visible
+          { 
+            var n=0;
+            var tmpElem;
+            while (1) // search for last child
+            {
+              tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
+              if (tmpElem)
+              {
+                focusItem = tmpElem;
+              }
+              else // found it!
+              {
+                break;
+              }
+              n++;
+            }
+          }
+        }
+        if (focusItem)
+        {
+          focusItem.focus();
+        }
+        else // return focus to search field
+        {
+           parent.document.getElementById("MSearchField").focus();
+        }
+      }
+      else if (this.lastKey==40) // Down
+      {
+        var newIndex = itemIndex+1;
+        var focusItem;
+        var item = document.getElementById('Item'+itemIndex);
+        var elem = this.FindChildElement(item.parentNode.parentNode.id);
+        if (elem && elem.style.display == 'block') // children visible
+        {
+          focusItem = document.getElementById('Item'+itemIndex+'_c0');
+        }
+        if (!focusItem) focusItem = this.NavNext(newIndex);
+        if (focusItem)  focusItem.focus();
+      }
+      else if (this.lastKey==39) // Right
+      {
+        var item = document.getElementById('Item'+itemIndex);
+        var elem = this.FindChildElement(item.parentNode.parentNode.id);
+        if (elem) elem.style.display = 'block';
+      }
+      else if (this.lastKey==37) // Left
+      {
+        var item = document.getElementById('Item'+itemIndex);
+        var elem = this.FindChildElement(item.parentNode.parentNode.id);
+        if (elem) elem.style.display = 'none';
+      }
+      else if (this.lastKey==27) // Escape
+      {
+        parent.searchBox.CloseResultsWindow();
+        parent.document.getElementById("MSearchField").focus();
+      }
+      else if (this.lastKey==13) // Enter
+      {
+        return true;
+      }
+      return false;
+    }
+
+    this.NavChild = function(evt,itemIndex,childIndex)
+    {
+      var e  = (evt) ? evt : window.event; // for IE
+      if (e.keyCode==13) return true;
+      if (!this.ProcessKeys(e)) return false;
+
+      if (this.lastKey==38) // Up
+      {
+        if (childIndex>0)
+        {
+          var newIndex = childIndex-1;
+          document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
+        }
+        else // already at first child, jump to parent
+        {
+          document.getElementById('Item'+itemIndex).focus();
+        }
+      }
+      else if (this.lastKey==40) // Down
+      {
+        var newIndex = childIndex+1;
+        var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
+        if (!elem) // last child, jump to parent next parent
+        {
+          elem = this.NavNext(itemIndex+1);
+        }
+        if (elem)
+        {
+          elem.focus();
+        } 
+      }
+      else if (this.lastKey==27) // Escape
+      {
+        parent.searchBox.CloseResultsWindow();
+        parent.document.getElementById("MSearchField").focus();
+      }
+      else if (this.lastKey==13) // Enter
+      {
+        return true;
+      }
+      return false;
+    }
+}
+
+function setKeyActions(elem,action)
+{
+  elem.setAttribute('onkeydown',action);
+  elem.setAttribute('onkeypress',action);
+  elem.setAttribute('onkeyup',action);
+}
+
+function setClassAttr(elem,attr)
+{
+  elem.setAttribute('class',attr);
+  elem.setAttribute('className',attr);
+}
+
+function createResults()
+{
+  var results = document.getElementById("SRResults");
+  for (var e=0; e<searchData.length; e++)
+  {
+    var id = searchData[e][0];
+    var srResult = document.createElement('div');
+    srResult.setAttribute('id','SR_'+id);
+    setClassAttr(srResult,'SRResult');
+    var srEntry = document.createElement('div');
+    setClassAttr(srEntry,'SREntry');
+    var srLink = document.createElement('a');
+    srLink.setAttribute('id','Item'+e);
+    setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
+    setClassAttr(srLink,'SRSymbol');
+    srLink.innerHTML = searchData[e][1][0];
+    srEntry.appendChild(srLink);
+    if (searchData[e][1].length==2) // single result
+    {
+      srLink.setAttribute('href',searchData[e][1][1][0]);
+      if (searchData[e][1][1][1])
+      {
+       srLink.setAttribute('target','_parent');
+      }
+      var srScope = document.createElement('span');
+      setClassAttr(srScope,'SRScope');
+      srScope.innerHTML = searchData[e][1][1][2];
+      srEntry.appendChild(srScope);
+    }
+    else // multiple results
+    {
+      srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
+      var srChildren = document.createElement('div');
+      setClassAttr(srChildren,'SRChildren');
+      for (var c=0; c<searchData[e][1].length-1; c++)
+      {
+        var srChild = document.createElement('a');
+        srChild.setAttribute('id','Item'+e+'_c'+c);
+        setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
+        setClassAttr(srChild,'SRScope');
+        srChild.setAttribute('href',searchData[e][1][c+1][0]);
+        if (searchData[e][1][c+1][1])
+        {
+         srChild.setAttribute('target','_parent');
+        }
+        srChild.innerHTML = searchData[e][1][c+1][2];
+        srChildren.appendChild(srChild);
+      }
+      srEntry.appendChild(srChildren);
+    }
+    srResult.appendChild(srEntry);
+    results.appendChild(srResult);
+  }
+}
+
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_l.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_l.png
new file mode 100644
index 0000000000000000000000000000000000000000..c872f4da4a01d0754f923e6c94fd8159c0621bd1
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_l.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_m.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_m.png
new file mode 100644
index 0000000000000000000000000000000000000000..b429a16ba641960da1e52e5da85dc80fd82635c8
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_m.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_r.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_r.png
new file mode 100644
index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_r.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/typedefs_6e.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/typedefs_6e.html
new file mode 100644
index 0000000000000000000000000000000000000000..ebbf394de71fa834403a06b6bf6724fdf1f0d2b2
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/typedefs_6e.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="typedefs_6e.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/typedefs_6e.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/typedefs_6e.js
new file mode 100644
index 0000000000000000000000000000000000000000..d74232e6f73fe86e7414fda1ad56326ec19b91e0
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/typedefs_6e.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['neopixeltype',['neoPixelType',['../_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff',1,'Adafruit_NeoPixel.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_61.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_61.html
new file mode 100644
index 0000000000000000000000000000000000000000..ff1f937dfc6065a4601391a6b30952aff7aa69b2
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_61.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_61.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_61.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_61.js
new file mode 100644
index 0000000000000000000000000000000000000000..e5953b1bab511472c023676aab6b467e7dc88eb7
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_61.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['aun_5fir_5fbuffer',['aun_ir_buffer',['../main_8cpp.html#a07a24850120a56110cc2838d0afcafcf',1,'main.cpp']]],
+  ['aun_5fred_5fbuffer',['aun_red_buffer',['../main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723',1,'main.cpp']]],
+  ['auw_5fhamm',['auw_hamm',['../algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929',1,'algorithm.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_63.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_63.html
new file mode 100644
index 0000000000000000000000000000000000000000..c649c81fbf62c817ef60b3cdb74d0c3f7be6cafb
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_63.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_63.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_63.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_63.js
new file mode 100644
index 0000000000000000000000000000000000000000..4e7566ffc3a48b4678d57601a658c087fbadd7cd
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_63.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['ch_5fhr_5fvalid',['ch_hr_valid',['../main_8cpp.html#a43fb8ea97a26647405ca359095323280',1,'main.cpp']]],
+  ['ch_5fspo2_5fvalid',['ch_spo2_valid',['../main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024',1,'main.cpp']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_6e.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_6e.html
new file mode 100644
index 0000000000000000000000000000000000000000..4cc41d57fc548dc8fd331495189ea5fd7d0f60b5
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_6e.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_6e.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_6e.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_6e.js
new file mode 100644
index 0000000000000000000000000000000000000000..31433021eca5d3c7dbbfa4172d2fc25d7076a8d8
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_6e.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['n_5fheart_5frate',['n_heart_rate',['../main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f',1,'main.cpp']]],
+  ['n_5fir_5fbuffer_5flength',['n_ir_buffer_length',['../main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6',1,'main.cpp']]],
+  ['n_5fsp02',['n_sp02',['../main_8cpp.html#a786e6c57c793d9af51360154ef90eb93',1,'main.cpp']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_75.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_75.html
new file mode 100644
index 0000000000000000000000000000000000000000..b9cc25cf223901bc749c6a67cd8a8fc3be92b688
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_75.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_75.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_75.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_75.js
new file mode 100644
index 0000000000000000000000000000000000000000..48a3fb1a5b44bdcb034cf32fdf0db89acbd038fd
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_75.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['uch_5fdummy',['uch_dummy',['../main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2',1,'main.cpp']]],
+  ['uch_5fspo2_5ftable',['uch_spo2_table',['../algorithm_8h.html#adfeeb6b08271807492803acc50347108',1,'algorithm.h']]]
+];
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/sync_off.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/sync_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..45760303ba90f1e25c871e4814f19e687944fcdc
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/sync_off.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/sync_on.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/sync_on.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7d5d6950414f407065414aeff08e7008e488095
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/sync_on.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_a.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_a.png
new file mode 100644
index 0000000000000000000000000000000000000000..b058dc0cdfe4adc72cbc88f07b05f9ef1eaec70c
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_a.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_b.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_b.png
new file mode 100644
index 0000000000000000000000000000000000000000..30c50156ab818d3cefa72b6b499b6f43aa85c5ce
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_b.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_h.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_h.png
new file mode 100644
index 0000000000000000000000000000000000000000..f3dd60c32b2d54215b77d478f91bc43d939a7b5e
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_h.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_s.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_s.png
new file mode 100644
index 0000000000000000000000000000000000000000..a937f624bef5baf71a02200be0c632366fc3b466
Binary files /dev/null and b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_s.png differ
diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tabs.css b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tabs.css
new file mode 100644
index 0000000000000000000000000000000000000000..35a7f75b81b50209571e4e2ee14da69c4577c6e9
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tabs.css
@@ -0,0 +1,60 @@
+.tabs, .tabs2, .tabs3 {
+    background-image: url('tab_b.png');
+    width: 100%;
+    z-index: 101;
+    font-size: 13px;
+    font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+}
+
+.tabs2 {
+    font-size: 10px;
+}
+.tabs3 {
+    font-size: 9px;
+}
+
+.tablist {
+    margin: 0;
+    padding: 0;
+    display: table;
+}
+
+.tablist li {
+    float: left;
+    display: table-cell;
+    background-image: url('tab_b.png');
+    line-height: 36px;
+    list-style: none;
+}
+
+.tablist a {
+    display: block;
+    padding: 0 20px;
+    font-weight: bold;
+    background-image:url('tab_s.png');
+    background-repeat:no-repeat;
+    background-position:right;
+    color: #306E6B;
+    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+    text-decoration: none;
+    outline: none;
+}
+
+.tabs3 .tablist a {
+    padding: 0 10px;
+}
+
+.tablist a:hover {
+    background-image: url('tab_h.png');
+    background-repeat:repeat-x;
+    color: #fff;
+    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+    text-decoration: none;
+}
+
+.tablist li.current a {
+    background-image: url('tab_a.png');
+    background-repeat:repeat-x;
+    color: #fff;
+    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
diff --git a/lib/vendor/Maxim/rd117_mbed/RD117_MBED/MAX30102/MAX30102.cpp b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/MAX30102/MAX30102.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..19bdf56c2c17538190e9346bb950cbec220649ae
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/MAX30102/MAX30102.cpp
@@ -0,0 +1,220 @@
+/** \file max30102.cpp ******************************************************
+*
+* Project: MAXREFDES117#
+* Filename: max30102.cpp
+* Description: This module is an embedded controller driver for the MAX30102
+*
+*
+* --------------------------------------------------------------------
+*
+* This code follows the following naming conventions:
+*
+* char              ch_pmod_value
+* char (array)      s_pmod_s_string[16]
+* float             f_pmod_value
+* int32_t           n_pmod_value
+* int32_t (array)   an_pmod_value[16]
+* int16_t           w_pmod_value
+* int16_t (array)   aw_pmod_value[16]
+* uint16_t          uw_pmod_value
+* uint16_t (array)  auw_pmod_value[16]
+* uint8_t           uch_pmod_value
+* uint8_t (array)   auch_pmod_buffer[16]
+* uint32_t          un_pmod_value
+* int32_t *         pn_pmod_value
+*
+* ------------------------------------------------------------------------- */
+/*******************************************************************************
+* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
+*
+* 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:
+*
+* The above copyright notice and this permission notice shall be included
+* in all copies or substantial portions of the Software.
+*
+* 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 MAXIM INTEGRATED 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.
+*
+* Except as contained in this notice, the name of Maxim Integrated
+* Products, Inc. shall not be used except as stated in the Maxim Integrated
+* Products, Inc. Branding Policy.
+*
+* The mere transfer of this software does not imply any licenses
+* of trade secrets, proprietary technology, copyrights, patents,
+* trademarks, maskwork rights, or any other form of intellectual
+* property whatsoever. Maxim Integrated Products, Inc. retains all
+* ownership rights.
+*******************************************************************************
+*/
+#include "mbed.h"
+#include "MAX30102.h"
+
+#ifdef TARGET_MAX32600MBED
+I2C i2c(I2C1_SDA, I2C1_SCL);
+#else
+I2C i2c(I2C_SDA, I2C_SCL);
+#endif
+
+bool maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data)
+/**
+* \brief        Write a value to a MAX30102 register
+* \par          Details
+*               This function writes a value to a MAX30102 register
+*
+* \param[in]    uch_addr    - register address
+* \param[in]    uch_data    - register data
+*
+* \retval       true on success
+*/
+{
+  char ach_i2c_data[2];
+  ach_i2c_data[0]=uch_addr;
+  ach_i2c_data[1]=uch_data;
+  
+  if(i2c.write(I2C_WRITE_ADDR, ach_i2c_data, 2, false)==0)
+    return true;
+  else
+    return false;
+}
+
+bool maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data)
+/**
+* \brief        Read a MAX30102 register
+* \par          Details
+*               This function reads a MAX30102 register
+*
+* \param[in]    uch_addr    - register address
+* \param[out]   puch_data    - pointer that stores the register data
+*
+* \retval       true on success
+*/
+{
+  char ch_i2c_data;
+  ch_i2c_data=uch_addr;
+  if(i2c.write(I2C_WRITE_ADDR, &ch_i2c_data, 1, true)!=0)
+    return false;
+  if(i2c.read(I2C_READ_ADDR, &ch_i2c_data, 1, false)==0)
+  {
+    *puch_data=(uint8_t) ch_i2c_data;
+    return true;
+  }
+  else
+    return false;
+}
+
+bool maxim_max30102_init()
+/**
+* \brief        Initialize the MAX30102
+* \par          Details
+*               This function initializes the MAX30102
+*
+* \param        None
+*
+* \retval       true on success
+*/
+{
+  if(!maxim_max30102_write_reg(REG_INTR_ENABLE_1,0xc0)) // INTR setting
+    return false;
+  if(!maxim_max30102_write_reg(REG_INTR_ENABLE_2,0x00))
+    return false;
+  if(!maxim_max30102_write_reg(REG_FIFO_WR_PTR,0x00))  //FIFO_WR_PTR[4:0]
+    return false;
+  if(!maxim_max30102_write_reg(REG_OVF_COUNTER,0x00))  //OVF_COUNTER[4:0]
+    return false;
+  if(!maxim_max30102_write_reg(REG_FIFO_RD_PTR,0x00))  //FIFO_RD_PTR[4:0]
+    return false;
+  if(!maxim_max30102_write_reg(REG_FIFO_CONFIG,0x0f))  //sample avg = 1, fifo rollover=false, fifo almost full = 17
+    return false;
+  if(!maxim_max30102_write_reg(REG_MODE_CONFIG,0x03))   //0x02 for Red only, 0x03 for SpO2 mode 0x07 multimode LED
+    return false;
+  if(!maxim_max30102_write_reg(REG_SPO2_CONFIG,0x27))  // SPO2_ADC range = 4096nA, SPO2 sample rate (100 Hz), LED pulseWidth (400uS)
+    return false;
+  
+  if(!maxim_max30102_write_reg(REG_LED1_PA,0x24))   //Choose value for ~ 7mA for LED1
+    return false;
+  if(!maxim_max30102_write_reg(REG_LED2_PA,0x24))   // Choose value for ~ 7mA for LED2
+    return false;
+  if(!maxim_max30102_write_reg(REG_PILOT_PA,0x7f))   // Choose value for ~ 25mA for Pilot LED
+    return false;
+  return true;  
+}
+
+bool maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led)
+/**
+* \brief        Read a set of samples from the MAX30102 FIFO register
+* \par          Details
+*               This function reads a set of samples from the MAX30102 FIFO register
+*
+* \param[out]   *pun_red_led   - pointer that stores the red LED reading data
+* \param[out]   *pun_ir_led    - pointer that stores the IR LED reading data
+*
+* \retval       true on success
+*/
+{
+  uint32_t un_temp;
+  unsigned char uch_temp;
+  *pun_red_led=0;
+  *pun_ir_led=0;
+  char ach_i2c_data[6];
+  
+  //read and clear status register
+  maxim_max30102_read_reg(REG_INTR_STATUS_1, &uch_temp);
+  maxim_max30102_read_reg(REG_INTR_STATUS_2, &uch_temp);
+  
+  ach_i2c_data[0]=REG_FIFO_DATA;
+  if(i2c.write(I2C_WRITE_ADDR, ach_i2c_data, 1, true)!=0)
+    return false;
+  if(i2c.read(I2C_READ_ADDR, ach_i2c_data, 6, false)!=0)
+  {
+    return false;
+  }
+  un_temp=(unsigned char) ach_i2c_data[0];
+  un_temp<<=16;
+  *pun_red_led+=un_temp;
+  un_temp=(unsigned char) ach_i2c_data[1];
+  un_temp<<=8;
+  *pun_red_led+=un_temp;
+  un_temp=(unsigned char) ach_i2c_data[2];
+  *pun_red_led+=un_temp;
+  
+  un_temp=(unsigned char) ach_i2c_data[3];
+  un_temp<<=16;
+  *pun_ir_led+=un_temp;
+  un_temp=(unsigned char) ach_i2c_data[4];
+  un_temp<<=8;
+  *pun_ir_led+=un_temp;
+  un_temp=(unsigned char) ach_i2c_data[5];
+  *pun_ir_led+=un_temp;
+  *pun_red_led&=0x03FFFF;  //Mask MSB [23:18]
+  *pun_ir_led&=0x03FFFF;  //Mask MSB [23:18]
+  
+  
+  return true;
+}
+
+bool maxim_max30102_reset()
+/**
+* \brief        Reset the MAX30102
+* \par          Details
+*               This function resets the MAX30102
+*
+* \param        None
+*
+* \retval       true on success
+*/
+{
+    if(!maxim_max30102_write_reg(REG_MODE_CONFIG,0x40))
+        return false;
+    else
+        return true;    
+}
diff --git a/lib/vendor/Maxim/rd117_mbed/RD117_MBED/MAX30102/MAX30102.h b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/MAX30102/MAX30102.h
new file mode 100644
index 0000000000000000000000000000000000000000..031f9876d483af4173fa99cc344356fb781e5b0f
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/MAX30102/MAX30102.h
@@ -0,0 +1,97 @@
+/** \file max30102.h ******************************************************
+*
+* Project: MAXREFDES117#
+* Filename: max30102.h
+* Description: This module is an embedded controller driver header file for MAX30102
+*
+*
+* --------------------------------------------------------------------
+*
+* This code follows the following naming conventions:
+*
+* char              ch_pmod_value
+* char (array)      s_pmod_s_string[16]
+* float             f_pmod_value
+* int32_t           n_pmod_value
+* int32_t (array)   an_pmod_value[16]
+* int16_t           w_pmod_value
+* int16_t (array)   aw_pmod_value[16]
+* uint16_t          uw_pmod_value
+* uint16_t (array)  auw_pmod_value[16]
+* uint8_t           uch_pmod_value
+* uint8_t (array)   auch_pmod_buffer[16]
+* uint32_t          un_pmod_value
+* int32_t *         pn_pmod_value
+*
+* ------------------------------------------------------------------------- */
+/*******************************************************************************
+* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
+*
+* 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:
+*
+* The above copyright notice and this permission notice shall be included
+* in all copies or substantial portions of the Software.
+*
+* 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 MAXIM INTEGRATED 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.
+*
+* Except as contained in this notice, the name of Maxim Integrated
+* Products, Inc. shall not be used except as stated in the Maxim Integrated
+* Products, Inc. Branding Policy.
+*
+* The mere transfer of this software does not imply any licenses
+* of trade secrets, proprietary technology, copyrights, patents,
+* trademarks, maskwork rights, or any other form of intellectual
+* property whatsoever. Maxim Integrated Products, Inc. retains all
+* ownership rights.
+*******************************************************************************
+*/
+#ifndef MAX30102_H_
+#define MAX30102_H_
+
+#include "mbed.h"
+
+#define I2C_WRITE_ADDR 0xAE
+#define I2C_READ_ADDR 0xAF
+
+//register addresses
+#define REG_INTR_STATUS_1 0x00
+#define REG_INTR_STATUS_2 0x01
+#define REG_INTR_ENABLE_1 0x02
+#define REG_INTR_ENABLE_2 0x03
+#define REG_FIFO_WR_PTR 0x04
+#define REG_OVF_COUNTER 0x05
+#define REG_FIFO_RD_PTR 0x06
+#define REG_FIFO_DATA 0x07
+#define REG_FIFO_CONFIG 0x08
+#define REG_MODE_CONFIG 0x09
+#define REG_SPO2_CONFIG 0x0A
+#define REG_LED1_PA 0x0C
+#define REG_LED2_PA 0x0D
+#define REG_PILOT_PA 0x10
+#define REG_MULTI_LED_CTRL1 0x11
+#define REG_MULTI_LED_CTRL2 0x12
+#define REG_TEMP_INTR 0x1F
+#define REG_TEMP_FRAC 0x20
+#define REG_TEMP_CONFIG 0x21
+#define REG_PROX_INT_THRESH 0x30
+#define REG_REV_ID 0xFE
+#define REG_PART_ID 0xFF
+
+bool maxim_max30102_init();
+bool maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led);
+bool maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data);
+bool maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data);
+bool maxim_max30102_reset(void);
+
+#endif /* MAX30102_H_ */
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/RD117_MBED/algorithm/algorithm.cpp b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/algorithm/algorithm.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..409ec615fcf463c2019f4535fd2150e2602b1d5d
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/algorithm/algorithm.cpp
@@ -0,0 +1,363 @@
+/** \file algorithm.cpp ******************************************************
+*
+* Project: MAXREFDES117#
+* Filename: algorithm.cpp
+* Description: This module calculates the heart rate/SpO2 level
+*
+*
+* --------------------------------------------------------------------
+*
+* This code follows the following naming conventions:
+*
+* char              ch_pmod_value
+* char (array)      s_pmod_s_string[16]
+* float             f_pmod_value
+* int32_t           n_pmod_value
+* int32_t (array)   an_pmod_value[16]
+* int16_t           w_pmod_value
+* int16_t (array)   aw_pmod_value[16]
+* uint16_t          uw_pmod_value
+* uint16_t (array)  auw_pmod_value[16]
+* uint8_t           uch_pmod_value
+* uint8_t (array)   auch_pmod_buffer[16]
+* uint32_t          un_pmod_value
+* int32_t *         pn_pmod_value
+*
+* ------------------------------------------------------------------------- */
+/*******************************************************************************
+* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
+*
+* 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:
+*
+* The above copyright notice and this permission notice shall be included
+* in all copies or substantial portions of the Software.
+*
+* 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 MAXIM INTEGRATED 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.
+*
+* Except as contained in this notice, the name of Maxim Integrated
+* Products, Inc. shall not be used except as stated in the Maxim Integrated
+* Products, Inc. Branding Policy.
+*
+* The mere transfer of this software does not imply any licenses
+* of trade secrets, proprietary technology, copyrights, patents,
+* trademarks, maskwork rights, or any other form of intellectual
+* property whatsoever. Maxim Integrated Products, Inc. retains all
+* ownership rights.
+*******************************************************************************
+*/
+#include "algorithm.h"
+#include "mbed.h"
+
+void maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer,  int32_t n_ir_buffer_length, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, 
+                              int32_t *pn_heart_rate, int8_t  *pch_hr_valid)
+/**
+* \brief        Calculate the heart rate and SpO2 level
+* \par          Details
+*               By detecting  peaks of PPG cycle and corresponding AC/DC of red/infra-red signal, the ratio for the SPO2 is computed.
+*               Since this algorithm is aiming for Arm M0/M3. formaula for SPO2 did not achieve the accuracy due to register overflow.
+*               Thus, accurate SPO2 is precalculated and save longo uch_spo2_table[] per each ratio.
+*
+* \param[in]    *pun_ir_buffer           - IR sensor data buffer
+* \param[in]    n_ir_buffer_length      - IR sensor data buffer length
+* \param[in]    *pun_red_buffer          - Red sensor data buffer
+* \param[out]    *pn_spo2                - Calculated SpO2 value
+* \param[out]    *pch_spo2_valid         - 1 if the calculated SpO2 value is valid
+* \param[out]    *pn_heart_rate          - Calculated heart rate value
+* \param[out]    *pch_hr_valid           - 1 if the calculated heart rate value is valid
+*
+* \retval       None
+*/
+{
+    uint32_t un_ir_mean ,un_only_once ;
+    int32_t k ,n_i_ratio_count;
+    int32_t i, s, m, n_exact_ir_valley_locs_count ,n_middle_idx;
+    int32_t n_th1, n_npks,n_c_min;      
+    int32_t an_ir_valley_locs[15] ;
+    int32_t an_exact_ir_valley_locs[15] ;
+    int32_t an_dx_peak_locs[15] ;
+    int32_t n_peak_interval_sum;
+    
+    int32_t n_y_ac, n_x_ac;
+    int32_t n_spo2_calc; 
+    int32_t n_y_dc_max, n_x_dc_max; 
+    int32_t n_y_dc_max_idx, n_x_dc_max_idx; 
+    int32_t an_ratio[5],n_ratio_average; 
+    int32_t n_nume,  n_denom ;
+    // remove DC of ir signal    
+    un_ir_mean =0; 
+    for (k=0 ; k<n_ir_buffer_length ; k++ ) un_ir_mean += pun_ir_buffer[k] ;
+    un_ir_mean =un_ir_mean/n_ir_buffer_length ;
+    for (k=0 ; k<n_ir_buffer_length ; k++ )  an_x[k] =  pun_ir_buffer[k] - un_ir_mean ; 
+    
+    // 4 pt Moving Average
+    for(k=0; k< BUFFER_SIZE-MA4_SIZE; k++){
+        n_denom= ( an_x[k]+an_x[k+1]+ an_x[k+2]+ an_x[k+3]);
+        an_x[k]=  n_denom/(int32_t)4; 
+    }
+
+    // get difference of smoothed IR signal
+    
+    for( k=0; k<BUFFER_SIZE-MA4_SIZE-1;  k++)
+        an_dx[k]= (an_x[k+1]- an_x[k]);
+
+    // 2-pt Moving Average to an_dx
+    for(k=0; k< BUFFER_SIZE-MA4_SIZE-2; k++){
+        an_dx[k] =  ( an_dx[k]+an_dx[k+1])/2 ;
+    }
+    
+    // hamming window
+    // flip wave form so that we can detect valley with peak detector
+    for ( i=0 ; i<BUFFER_SIZE-HAMMING_SIZE-MA4_SIZE-2 ;i++){
+        s= 0;
+        for( k=i; k<i+ HAMMING_SIZE ;k++){
+            s -= an_dx[k] *auw_hamm[k-i] ; 
+                     }
+        an_dx[i]= s/ (int32_t)1146; // divide by sum of auw_hamm 
+    }
+
+ 
+    n_th1=0; // threshold calculation
+    for ( k=0 ; k<BUFFER_SIZE-HAMMING_SIZE ;k++){
+        n_th1 += ((an_dx[k]>0)? an_dx[k] : ((int32_t)0-an_dx[k])) ;
+    }
+    n_th1= n_th1/ ( BUFFER_SIZE-HAMMING_SIZE);
+    // peak location is acutally index for sharpest location of raw signal since we flipped the signal         
+    maxim_find_peaks( an_dx_peak_locs, &n_npks, an_dx, BUFFER_SIZE-HAMMING_SIZE, n_th1, 8, 5 );//peak_height, peak_distance, max_num_peaks 
+
+    n_peak_interval_sum =0;
+    if (n_npks>=2){
+        for (k=1; k<n_npks; k++)
+            n_peak_interval_sum += (an_dx_peak_locs[k]-an_dx_peak_locs[k -1]);
+        n_peak_interval_sum=n_peak_interval_sum/(n_npks-1);
+        *pn_heart_rate=(int32_t)(6000/n_peak_interval_sum);// beats per minutes
+        *pch_hr_valid  = 1;
+    }
+    else  {
+        *pn_heart_rate = -999;
+        *pch_hr_valid  = 0;
+    }
+            
+    for ( k=0 ; k<n_npks ;k++)
+        an_ir_valley_locs[k]=an_dx_peak_locs[k]+HAMMING_SIZE/2; 
+
+
+    // raw value : RED(=y) and IR(=X)
+    // we need to assess DC and AC value of ir and red PPG. 
+    for (k=0 ; k<n_ir_buffer_length ; k++ )  {
+        an_x[k] =  pun_ir_buffer[k] ; 
+        an_y[k] =  pun_red_buffer[k] ; 
+    }
+
+    // find precise min near an_ir_valley_locs
+    n_exact_ir_valley_locs_count =0; 
+    for(k=0 ; k<n_npks ;k++){
+        un_only_once =1;
+        m=an_ir_valley_locs[k];
+        n_c_min= 16777216;//2^24;
+        if (m+5 <  BUFFER_SIZE-HAMMING_SIZE  && m-5 >0){
+            for(i= m-5;i<m+5; i++)
+                if (an_x[i]<n_c_min){
+                    if (un_only_once >0){
+                       un_only_once =0;
+                   } 
+                   n_c_min= an_x[i] ;
+                   an_exact_ir_valley_locs[k]=i;
+                }
+            if (un_only_once ==0)
+                n_exact_ir_valley_locs_count ++ ;
+        }
+    }
+    if (n_exact_ir_valley_locs_count <2 ){
+       *pn_spo2 =  -999 ; // do not use SPO2 since signal ratio is out of range
+       *pch_spo2_valid  = 0; 
+       return;
+    }
+    // 4 pt MA
+    for(k=0; k< BUFFER_SIZE-MA4_SIZE; k++){
+        an_x[k]=( an_x[k]+an_x[k+1]+ an_x[k+2]+ an_x[k+3])/(int32_t)4;
+        an_y[k]=( an_y[k]+an_y[k+1]+ an_y[k+2]+ an_y[k+3])/(int32_t)4;
+    }
+
+    //using an_exact_ir_valley_locs , find ir-red DC andir-red AC for SPO2 calibration ratio
+    //finding AC/DC maximum of raw ir * red between two valley locations
+    n_ratio_average =0; 
+    n_i_ratio_count =0; 
+    
+    for(k=0; k< 5; k++) an_ratio[k]=0;
+    for (k=0; k< n_exact_ir_valley_locs_count; k++){
+        if (an_exact_ir_valley_locs[k] > BUFFER_SIZE ){             
+            *pn_spo2 =  -999 ; // do not use SPO2 since valley loc is out of range
+            *pch_spo2_valid  = 0; 
+            return;
+        }
+    }
+    // find max between two valley locations 
+    // and use ratio betwen AC compoent of Ir & Red and DC compoent of Ir & Red for SPO2 
+
+    for (k=0; k< n_exact_ir_valley_locs_count-1; k++){
+        n_y_dc_max= -16777216 ; 
+        n_x_dc_max= - 16777216; 
+        if (an_exact_ir_valley_locs[k+1]-an_exact_ir_valley_locs[k] >10){
+            for (i=an_exact_ir_valley_locs[k]; i< an_exact_ir_valley_locs[k+1]; i++){
+                if (an_x[i]> n_x_dc_max) {n_x_dc_max =an_x[i];n_x_dc_max_idx =i; }
+                if (an_y[i]> n_y_dc_max) {n_y_dc_max =an_y[i];n_y_dc_max_idx=i;}
+            }
+            n_y_ac= (an_y[an_exact_ir_valley_locs[k+1]] - an_y[an_exact_ir_valley_locs[k] ] )*(n_y_dc_max_idx -an_exact_ir_valley_locs[k]); //red
+            n_y_ac=  an_y[an_exact_ir_valley_locs[k]] + n_y_ac/ (an_exact_ir_valley_locs[k+1] - an_exact_ir_valley_locs[k])  ; 
+        
+        
+            n_y_ac=  an_y[n_y_dc_max_idx] - n_y_ac;    // subracting linear DC compoenents from raw 
+            n_x_ac= (an_x[an_exact_ir_valley_locs[k+1]] - an_x[an_exact_ir_valley_locs[k] ] )*(n_x_dc_max_idx -an_exact_ir_valley_locs[k]); // ir
+            n_x_ac=  an_x[an_exact_ir_valley_locs[k]] + n_x_ac/ (an_exact_ir_valley_locs[k+1] - an_exact_ir_valley_locs[k]); 
+            n_x_ac=  an_x[n_y_dc_max_idx] - n_x_ac;      // subracting linear DC compoenents from raw 
+            n_nume=( n_y_ac *n_x_dc_max)>>7 ; //prepare X100 to preserve floating value
+            n_denom= ( n_x_ac *n_y_dc_max)>>7;
+            if (n_denom>0  && n_i_ratio_count <5 &&  n_nume != 0)
+            {   
+                an_ratio[n_i_ratio_count]= (n_nume*100)/n_denom ; //formular is ( n_y_ac *n_x_dc_max) / ( n_x_ac *n_y_dc_max) ;
+                n_i_ratio_count++;
+            }
+        }
+    }
+
+    maxim_sort_ascend(an_ratio, n_i_ratio_count);
+    n_middle_idx= n_i_ratio_count/2;
+
+    if (n_middle_idx >1)
+        n_ratio_average =( an_ratio[n_middle_idx-1] +an_ratio[n_middle_idx])/2; // use median
+    else
+        n_ratio_average = an_ratio[n_middle_idx ];
+
+    if( n_ratio_average>2 && n_ratio_average <184){
+        n_spo2_calc= uch_spo2_table[n_ratio_average] ;
+        *pn_spo2 = n_spo2_calc ;
+        *pch_spo2_valid  = 1;//  float_SPO2 =  -45.060*n_ratio_average* n_ratio_average/10000 + 30.354 *n_ratio_average/100 + 94.845 ;  // for comparison with table
+    }
+    else{
+        *pn_spo2 =  -999 ; // do not use SPO2 since signal ratio is out of range
+        *pch_spo2_valid  = 0; 
+    }
+}
+
+
+void maxim_find_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num)
+/**
+* \brief        Find peaks
+* \par          Details
+*               Find at most MAX_NUM peaks above MIN_HEIGHT separated by at least MIN_DISTANCE
+*
+* \retval       None
+*/
+{
+    maxim_peaks_above_min_height( pn_locs, pn_npks, pn_x, n_size, n_min_height );
+    maxim_remove_close_peaks( pn_locs, pn_npks, pn_x, n_min_distance );
+    *pn_npks = min( *pn_npks, n_max_num );
+}
+
+void maxim_peaks_above_min_height(int32_t *pn_locs, int32_t *pn_npks, int32_t  *pn_x, int32_t n_size, int32_t n_min_height)
+/**
+* \brief        Find peaks above n_min_height
+* \par          Details
+*               Find all peaks above MIN_HEIGHT
+*
+* \retval       None
+*/
+{
+    int32_t i = 1, n_width;
+    *pn_npks = 0;
+    
+    while (i < n_size-1){
+        if (pn_x[i] > n_min_height && pn_x[i] > pn_x[i-1]){            // find left edge of potential peaks
+            n_width = 1;
+            while (i+n_width < n_size && pn_x[i] == pn_x[i+n_width])    // find flat peaks
+                n_width++;
+            if (pn_x[i] > pn_x[i+n_width] && (*pn_npks) < 15 ){                            // find right edge of peaks
+                pn_locs[(*pn_npks)++] = i;        
+                // for flat peaks, peak location is left edge
+                i += n_width+1;
+            }
+            else
+                i += n_width;
+        }
+        else
+            i++;
+    }
+}
+
+
+void maxim_remove_close_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance)
+/**
+* \brief        Remove peaks
+* \par          Details
+*               Remove peaks separated by less than MIN_DISTANCE
+*
+* \retval       None
+*/
+{
+    
+    int32_t i, j, n_old_npks, n_dist;
+    
+    /* Order peaks from large to small */
+    maxim_sort_indices_descend( pn_x, pn_locs, *pn_npks );
+
+    for ( i = -1; i < *pn_npks; i++ ){
+        n_old_npks = *pn_npks;
+        *pn_npks = i+1;
+        for ( j = i+1; j < n_old_npks; j++ ){
+            n_dist =  pn_locs[j] - ( i == -1 ? -1 : pn_locs[i] ); // lag-zero peak of autocorr is at index -1
+            if ( n_dist > n_min_distance || n_dist < -n_min_distance )
+                pn_locs[(*pn_npks)++] = pn_locs[j];
+        }
+    }
+
+    // Resort indices longo ascending order
+    maxim_sort_ascend( pn_locs, *pn_npks );
+}
+
+void maxim_sort_ascend(int32_t *pn_x,int32_t n_size) 
+/**
+* \brief        Sort array
+* \par          Details
+*               Sort array in ascending order (insertion sort algorithm)
+*
+* \retval       None
+*/
+{
+    int32_t i, j, n_temp;
+    for (i = 1; i < n_size; i++) {
+        n_temp = pn_x[i];
+        for (j = i; j > 0 && n_temp < pn_x[j-1]; j--)
+            pn_x[j] = pn_x[j-1];
+        pn_x[j] = n_temp;
+    }
+}
+
+void maxim_sort_indices_descend(int32_t *pn_x, int32_t *pn_indx, int32_t n_size)
+/**
+* \brief        Sort indices
+* \par          Details
+*               Sort indices according to descending order (insertion sort algorithm)
+*
+* \retval       None
+*/ 
+{
+    int32_t i, j, n_temp;
+    for (i = 1; i < n_size; i++) {
+        n_temp = pn_indx[i];
+        for (j = i; j > 0 && pn_x[n_temp] > pn_x[pn_indx[j-1]]; j--)
+            pn_indx[j] = pn_indx[j-1];
+        pn_indx[j] = n_temp;
+    }
+}
+
diff --git a/lib/vendor/Maxim/rd117_mbed/RD117_MBED/algorithm/algorithm.h b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/algorithm/algorithm.h
new file mode 100644
index 0000000000000000000000000000000000000000..ec8cd7f67b2e5ffe9e0d8bab94cedc5c9dc70380
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/algorithm/algorithm.h
@@ -0,0 +1,100 @@
+/** \file algorithm.h ******************************************************
+*
+* Project: MAXREFDES117#
+* Filename: algorithm.h
+* Description: This module is the heart rate/SpO2 calculation algorithm header file
+*
+* Revision History:
+*\n 1-18-2016 Rev 01.00 SK Initial release.
+*\n
+*
+* --------------------------------------------------------------------
+*
+* This code follows the following naming conventions:
+*
+*\n char              ch_pmod_value
+*\n char (array)      s_pmod_s_string[16]
+*\n float             f_pmod_value
+*\n int32_t           n_pmod_value
+*\n int32_t (array)   an_pmod_value[16]
+*\n int16_t           w_pmod_value
+*\n int16_t (array)   aw_pmod_value[16]
+*\n uint16_t          uw_pmod_value
+*\n uint16_t (array)  auw_pmod_value[16]
+*\n uint8_t           uch_pmod_value
+*\n uint8_t (array)   auch_pmod_buffer[16]
+*\n uint32_t          un_pmod_value
+*\n int32_t *         pn_pmod_value
+*
+* ------------------------------------------------------------------------- */
+/*******************************************************************************
+* Copyright (C) 2015 Maxim Integrated Products, Inc., All Rights Reserved.
+*
+* 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:
+*
+* The above copyright notice and this permission notice shall be included
+* in all copies or substantial portions of the Software.
+*
+* 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 MAXIM INTEGRATED 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.
+*
+* Except as contained in this notice, the name of Maxim Integrated
+* Products, Inc. shall not be used except as stated in the Maxim Integrated
+* Products, Inc. Branding Policy.
+*
+* The mere transfer of this software does not imply any licenses
+* of trade secrets, proprietary technology, copyrights, patents,
+* trademarks, maskwork rights, or any other form of intellectual
+* property whatsoever. Maxim Integrated Products, Inc. retains all
+* ownership rights.
+*******************************************************************************
+*/
+#ifndef ALGORITHM_H_
+#define ALGORITHM_H_
+
+#include "mbed.h"
+
+#define true 1
+#define false 0
+#define FS 100
+#define BUFFER_SIZE  (FS* 5) 
+#define HR_FIFO_SIZE 7
+#define MA4_SIZE  4 // DO NOT CHANGE
+#define HAMMING_SIZE  5// DO NOT CHANGE
+#define min(x,y) ((x) < (y) ? (x) : (y))
+
+const uint16_t auw_hamm[31]={ 41,    276,    512,    276,     41 }; //Hamm=  long16(512* hamming(5)');
+//uch_spo2_table is computed as  -45.060*ratioAverage* ratioAverage + 30.354 *ratioAverage + 94.845 ;
+const uint8_t uch_spo2_table[184]={ 95, 95, 95, 96, 96, 96, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 99, 99, 99, 99, 
+                            99, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
+                            100, 100, 100, 100, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98, 98, 98, 98, 97, 97, 
+                            97, 97, 96, 96, 96, 96, 95, 95, 95, 94, 94, 94, 93, 93, 93, 92, 92, 92, 91, 91, 
+                            90, 90, 89, 89, 89, 88, 88, 87, 87, 86, 86, 85, 85, 84, 84, 83, 82, 82, 81, 81, 
+                            80, 80, 79, 78, 78, 77, 76, 76, 75, 74, 74, 73, 72, 72, 71, 70, 69, 69, 68, 67, 
+                            66, 66, 65, 64, 63, 62, 62, 61, 60, 59, 58, 57, 56, 56, 55, 54, 53, 52, 51, 50, 
+                            49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 31, 30, 29, 
+                            28, 27, 26, 25, 23, 22, 21, 20, 19, 17, 16, 15, 14, 12, 11, 10, 9, 7, 6, 5, 
+                            3, 2, 1 } ;
+static  int32_t an_dx[ BUFFER_SIZE-MA4_SIZE]; // delta
+static  int32_t an_x[ BUFFER_SIZE]; //ir
+static  int32_t an_y[ BUFFER_SIZE]; //red
+
+
+void maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer ,  int32_t n_ir_buffer_length, uint32_t *pun_red_buffer ,   int32_t *pn_spo2, int8_t *pch_spo2_valid ,  int32_t *pn_heart_rate , int8_t  *pch_hr_valid);
+void maxim_find_peaks( int32_t *pn_locs, int32_t *pn_npks,  int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num );
+void maxim_peaks_above_min_height( int32_t *pn_locs, int32_t *pn_npks,  int32_t *pn_x, int32_t n_size, int32_t n_min_height );
+void maxim_remove_close_peaks( int32_t *pn_locs, int32_t *pn_npks,   int32_t  *pn_x, int32_t n_min_distance );
+void maxim_sort_ascend( int32_t *pn_x, int32_t n_size );
+void maxim_sort_indices_descend(  int32_t  *pn_x, int32_t *pn_indx, int32_t n_size);
+
+#endif /* ALGORITHM_H_ */
\ No newline at end of file
diff --git a/lib/vendor/Maxim/rd117_mbed/RD117_MBED/main.cpp b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8b4596c7774fc88d0a38bc8a321e478f5509b02c
--- /dev/null
+++ b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/main.cpp
@@ -0,0 +1,219 @@
+/** \file main.cpp ******************************************************
+*
+* Project: MAXREFDES117#
+* Filename: main.cpp
+* Description: This module contains the Main application for the MAXREFDES117 example program.
+*
+*
+* --------------------------------------------------------------------
+*
+* This code follows the following naming conventions:
+*
+* char              ch_pmod_value
+* char (array)      s_pmod_s_string[16]
+* float             f_pmod_value
+* int32_t           n_pmod_value
+* int32_t (array)   an_pmod_value[16]
+* int16_t           w_pmod_value
+* int16_t (array)   aw_pmod_value[16]
+* uint16_t          uw_pmod_value
+* uint16_t (array)  auw_pmod_value[16]
+* uint8_t           uch_pmod_value
+* uint8_t (array)   auch_pmod_buffer[16]
+* uint32_t          un_pmod_value
+* int32_t *         pn_pmod_value
+*
+* ------------------------------------------------------------------------- */
+/*******************************************************************************
+* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
+*
+* 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:
+*
+* The above copyright notice and this permission notice shall be included
+* in all copies or substantial portions of the Software.
+*
+* 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 MAXIM INTEGRATED 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.
+*
+* Except as contained in this notice, the name of Maxim Integrated
+* Products, Inc. shall not be used except as stated in the Maxim Integrated
+* Products, Inc. Branding Policy.
+*
+* The mere transfer of this software does not imply any licenses
+* of trade secrets, proprietary technology, copyrights, patents,
+* trademarks, maskwork rights, or any other form of intellectual
+* property whatsoever. Maxim Integrated Products, Inc. retains all
+* ownership rights.
+*******************************************************************************
+*/
+/*!\mainpage Main Page
+*
+* \section intro_sec Introduction
+*
+* This is the code documentation for the MAXREFDES117# subsystem reference design.
+* 
+*  The Files page contains the File List page and the Globals page.
+* 
+*  The Globals page contains the Functions, Variables, and Macros sub-pages.
+*
+* \image html MAXREFDES117_Block_Diagram.png "MAXREFDES117# System Block Diagram"
+* 
+* \image html MAXREFDES117_firmware_Flowchart.png "MAXREFDES117# Firmware Flowchart"
+*
+*/
+#include "mbed.h"
+#include "algorithm.h"
+#include "MAX30102.h"
+
+#define MAX_BRIGHTNESS 255
+
+uint32_t aun_ir_buffer[500]; //IR LED sensor data
+int32_t n_ir_buffer_length;    //data length
+uint32_t aun_red_buffer[500];    //Red LED sensor data
+int32_t n_sp02; //SPO2 value
+int8_t ch_spo2_valid;   //indicator to show if the SP02 calculation is valid
+int32_t n_heart_rate;   //heart rate value
+int8_t  ch_hr_valid;    //indicator to show if the heart rate calculation is valid
+uint8_t uch_dummy;
+
+Serial pc(USBTX, USBRX);    //initializes the serial port
+#ifdef TARGET_KL25Z 
+PwmOut led(PTB18);  //initializes the pwm output that connects to the on board LED
+DigitalIn INT(PTD1);  //pin PTD1 connects to the interrupt output pin of the MAX30102
+#endif
+#ifdef TARGET_K64F
+DigitalIn INT(PTD1);  //pin PTD1 connects to the interrupt output pin of the MAX30102
+#endif
+#ifdef TARGET_MAX32600MBED
+PwmOut led(LED_RED);    //initializes the pwm output that connects to the on board LED
+DigitalIn INT(P2_0);  //pin P20 connects to the interrupt output pin of the MAX30102
+#endif
+
+// the setup routine runs once when you press reset:
+int main() { 
+    uint32_t un_min, un_max, un_prev_data;  //variables to calculate the on-board LED brightness that reflects the heartbeats
+    int i;
+    int32_t n_brightness;
+    float f_temp;
+    
+    maxim_max30102_reset(); //resets the MAX30102
+    // initialize serial communication at 115200 bits per second:
+    pc.baud(115200);
+    pc.format(8,SerialBase::None,1);
+    wait(1);
+    
+    //read and clear status register
+    maxim_max30102_read_reg(0,&uch_dummy);
+    
+    //wait until the user presses a key
+    while(pc.readable()==0)
+    {
+        pc.printf("\x1B[2J");  //clear terminal program screen
+        pc.printf("Press any key to start conversion\n\r");
+        wait(1);
+    }
+    uch_dummy=getchar();
+    
+    maxim_max30102_init();  //initializes the MAX30102
+        
+        
+    n_brightness=0;
+    un_min=0x3FFFF;
+    un_max=0;
+  
+    n_ir_buffer_length=500; //buffer length of 100 stores 5 seconds of samples running at 100sps
+    
+    //read the first 500 samples, and determine the signal range
+    for(i=0;i<n_ir_buffer_length;i++)
+    {
+        while(INT.read()==1);   //wait until the interrupt pin asserts
+        
+        maxim_max30102_read_fifo((aun_red_buffer+i), (aun_ir_buffer+i));  //read from MAX30102 FIFO
+            
+        if(un_min>aun_red_buffer[i])
+            un_min=aun_red_buffer[i];    //update signal min
+        if(un_max<aun_red_buffer[i])
+            un_max=aun_red_buffer[i];    //update signal max
+        pc.printf("red=");
+        pc.printf("%i", aun_red_buffer[i]);
+        pc.printf(", ir=");
+        pc.printf("%i\n\r", aun_ir_buffer[i]);
+    }
+    un_prev_data=aun_red_buffer[i];
+    
+    
+    //calculate heart rate and SpO2 after first 500 samples (first 5 seconds of samples)
+    maxim_heart_rate_and_oxygen_saturation(aun_ir_buffer, n_ir_buffer_length, aun_red_buffer, &n_sp02, &ch_spo2_valid, &n_heart_rate, &ch_hr_valid); 
+    
+    //Continuously taking samples from MAX30102.  Heart rate and SpO2 are calculated every 1 second
+    while(1)
+    {
+        i=0;
+        un_min=0x3FFFF;
+        un_max=0;
+        
+        //dumping the first 100 sets of samples in the memory and shift the last 400 sets of samples to the top
+        for(i=100;i<500;i++)
+        {
+            aun_red_buffer[i-100]=aun_red_buffer[i];
+            aun_ir_buffer[i-100]=aun_ir_buffer[i];
+            
+            //update the signal min and max
+            if(un_min>aun_red_buffer[i])
+            un_min=aun_red_buffer[i];
+            if(un_max<aun_red_buffer[i])
+            un_max=aun_red_buffer[i];
+        }
+        
+        //take 100 sets of samples before calculating the heart rate.
+        for(i=400;i<500;i++)
+        {
+            un_prev_data=aun_red_buffer[i-1];
+            while(INT.read()==1);
+            maxim_max30102_read_fifo((aun_red_buffer+i), (aun_ir_buffer+i));
+        
+            if(aun_red_buffer[i]>un_prev_data)
+            {
+                f_temp=aun_red_buffer[i]-un_prev_data;
+                f_temp/=(un_max-un_min);
+                f_temp*=MAX_BRIGHTNESS;
+                n_brightness-=(int)f_temp;
+                if(n_brightness<0)
+                    n_brightness=0;
+            }
+            else
+            {
+                f_temp=un_prev_data-aun_red_buffer[i];
+                f_temp/=(un_max-un_min);
+                f_temp*=MAX_BRIGHTNESS;
+                n_brightness+=(int)f_temp;
+                if(n_brightness>MAX_BRIGHTNESS)
+                    n_brightness=MAX_BRIGHTNESS;
+            }
+#if defined(TARGET_KL25Z) || defined(TARGET_MAX32600MBED)
+            led.write(1-(float)n_brightness/256);
+#endif
+            //send samples and calculation result to terminal program through UART
+            pc.printf("red=");
+            pc.printf("%i", aun_red_buffer[i]);
+            pc.printf(", ir=");
+            pc.printf("%i", aun_ir_buffer[i]);
+            pc.printf(", HR=%i, ", n_heart_rate); 
+            pc.printf("HRvalid=%i, ", ch_hr_valid);
+            pc.printf("SpO2=%i, ", n_sp02);
+            pc.printf("SPO2Valid=%i\n\r", ch_spo2_valid);
+        }
+        maxim_heart_rate_and_oxygen_saturation(aun_ir_buffer, n_ir_buffer_length, aun_red_buffer, &n_sp02, &ch_spo2_valid, &n_heart_rate, &ch_hr_valid); 
+    }
+}
+ 
\ No newline at end of file