1
0
mirror of https://github.com/taigrr/arduinolibs synced 2025-01-18 04:33:12 -08:00

Update docs

This commit is contained in:
Rhys Weatherley
2013-09-29 09:34:55 +10:00
parent 17f4fb4873
commit 8b7f9606ee
409 changed files with 21357 additions and 18181 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Bitmap.h Source File</title> <title>ArduinoLibs: Bitmap.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,157 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">Bitmap.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef Bitmap_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define Bitmap_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span>
<a name="l00028"></a>00028
<a name="l00029"></a>00029 <span class="keyword">class </span><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a>;
<a name="l00030"></a>00030 <span class="keyword">class </span>String;
<a name="l00031"></a>00031
<a name="l00032"></a><a class="code" href="classBitmap.html">00032</a> <span class="keyword">class </span><a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a>
<a name="l00033"></a>00033 {
<a name="l00034"></a>00034 <span class="keyword">public</span>:
<a name="l00035"></a>00035 <a class="code" href="classBitmap.html#a40526748415c8bbc58a8510d636c20f4" title="Constructs a new in-memory bitmap that is width x height pixels in size.">Bitmap</a>(<span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523" title="Returns the width of the bitmap in pixels.">width</a>, <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3" title="Returns the height of the bitmap in pixels.">height</a>);
<a name="l00036"></a>00036 <a class="code" href="classBitmap.html#a72d2a301ec1eb1c8d0f3d64823659a8e" title="Destroys this bitmap.">~Bitmap</a>();
<a name="l00037"></a>00037
<a name="l00038"></a><a class="code" href="classBitmap.html#a3846a240722e847d3cf11f701da1ce7b">00038</a> <span class="keywordtype">bool</span> <a class="code" href="classBitmap.html#a3846a240722e847d3cf11f701da1ce7b" title="Returns true if the memory for this bitmap is valid; false otherwise.">isValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fb != 0; }
<a name="l00039"></a>00039
<a name="l00040"></a><a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">00040</a> <span class="keyword">typedef</span> uint8_t <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a>;
<a name="l00041"></a>00041
<a name="l00042"></a><a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">00042</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc" title="Color value corresponding to &quot;black&quot;.">Black</a> = 0;
<a name="l00043"></a><a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">00043</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a> = 1;
<a name="l00044"></a><a class="code" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">00044</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> <a class="code" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e" title="Special color value that is used with drawRect() and drawCircle() to indicate that the interior of th...">NoFill</a> = 2;
<a name="l00045"></a>00045
<a name="l00046"></a><a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">00046</a> <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523" title="Returns the width of the bitmap in pixels.">width</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _width; }
<a name="l00047"></a><a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">00047</a> <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3" title="Returns the height of the bitmap in pixels.">height</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _height; }
<a name="l00048"></a><a class="code" href="classBitmap.html#af30df263729385ea2330effe3c80a1bc">00048</a> <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#af30df263729385ea2330effe3c80a1bc" title="Returns the number of bytes in each line of the bitmap&#39;s data() buffer.">stride</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _stride; }
<a name="l00049"></a><a class="code" href="classBitmap.html#ad18d3d5a1e77d541a95e93ad1f958411">00049</a> <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#ad18d3d5a1e77d541a95e93ad1f958411" title="Returns the number of bits per pixel for the bitmap; always 1.">bitsPerPixel</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 1; }
<a name="l00050"></a>00050
<a name="l00051"></a><a class="code" href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d">00051</a> uint8_t *<a class="code" href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d" title="Returns a pointer to the start of the bitmap&#39;s data buffer.">data</a>() { <span class="keywordflow">return</span> fb; }
<a name="l00052"></a><a class="code" href="classBitmap.html#a20fea2a946545aa3b5edd78245149e5f">00052</a> <span class="keyword">const</span> uint8_t *<a class="code" href="classBitmap.html#a20fea2a946545aa3b5edd78245149e5f" title="Returns a constant pointer to the start of the bitmap&#39;s data buffer.This is an overloaded member func...">data</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fb; }
<a name="l00053"></a>00053
<a name="l00054"></a>00054 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1" title="Clears the entire bitmap to the specified color.">clear</a>(<a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color = <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc" title="Color value corresponding to &quot;black&quot;.">Black</a>);
<a name="l00055"></a>00055
<a name="l00056"></a>00056 <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> <a class="code" href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203" title="Returns the color of the pixel at (x, y); either Black or White.">pixel</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span>;
<a name="l00057"></a>00057 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114" title="Sets the pixel at (x, y) to color.">setPixel</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color);
<a name="l00058"></a>00058
<a name="l00059"></a>00059 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767" title="Draws a line from (x1, y1) to (x2, y2) in color.">drawLine</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>);
<a name="l00060"></a>00060 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc" title="Draws a rectangle from (x1, y1) to (x2, y2), with the outline in borderColor and the interior filled ...">drawRect</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> borderColor = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> fillColor = <a class="code" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e" title="Special color value that is used with drawRect() and drawCircle() to indicate that the interior of th...">NoFill</a>);
<a name="l00061"></a>00061 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a568acbca3818dd85dd62fff6d0b36ffb" title="Draws a filled rectangle from (x1, y1) to (x2, y2) in color.">drawFilledRect</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>);
<a name="l00062"></a>00062 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa" title="Draws a circle with a specific center (centerX, centerY) and radius, with the outline in borderColor ...">drawCircle</a>(<span class="keywordtype">int</span> centerX, <span class="keywordtype">int</span> centerY, <span class="keywordtype">int</span> radius, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> borderColor = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> fillColor = <a class="code" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e" title="Special color value that is used with drawRect() and drawCircle() to indicate that the interior of th...">NoFill</a>);
<a name="l00063"></a>00063 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a757291b9a39bcb0d64ac98d3a2fa061b" title="Draws a filled circle with a specific center (centerX, centerY) and radius in color.">drawFilledCircle</a>(<span class="keywordtype">int</span> centerX, <span class="keywordtype">int</span> centerY, <span class="keywordtype">int</span> radius, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>);
<a name="l00064"></a>00064
<a name="l00065"></a>00065 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72" title="Draws bitmap at (x, y) in color.">drawBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> &amp;bitmap, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>);
<a name="l00066"></a>00066 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72" title="Draws bitmap at (x, y) in color.">drawBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> prog_uint8_t *bitmap, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>);
<a name="l00067"></a>00067 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a" title="Draws bitmap at (x, y) in inverted colors.">drawInvertedBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> &amp;bitmap);
<a name="l00068"></a>00068 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a" title="Draws bitmap at (x, y) in inverted colors.">drawInvertedBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> prog_uint8_t *bitmap);
<a name="l00069"></a>00069
<a name="l00070"></a><a class="code" href="classBitmap.html#ab6bd47cb892b47b4c69b422ace182b87">00070</a> <span class="keyword">const</span> prog_uint8_t *<a class="code" href="classBitmap.html#ab6bd47cb892b47b4c69b422ace182b87" title="Returns the currently selected font, or null if none selected.">font</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _font; }
<a name="l00071"></a><a class="code" href="classBitmap.html#abf7adfceb267080aa9806388e96358c4">00071</a> <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#abf7adfceb267080aa9806388e96358c4" title="Sets the font for use with drawText() and drawChar().">setFont</a>(<span class="keyword">const</span> prog_uint8_t *<a class="code" href="classBitmap.html#ab6bd47cb892b47b4c69b422ace182b87" title="Returns the currently selected font, or null if none selected.">font</a>) { _font = <a class="code" href="classBitmap.html#ab6bd47cb892b47b4c69b422ace182b87" title="Returns the currently selected font, or null if none selected.">font</a>; }
<a name="l00072"></a>00072
<a name="l00073"></a><a class="code" href="classBitmap.html#ab6e5f5744fd2f18478aac428b751d848">00073</a> <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> <a class="code" href="classBitmap.html#ab6e5f5744fd2f18478aac428b751d848" title="Returns the color that will be used for drawing text with drawText() and drawChar(). The default is White.">textColor</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _textColor; }
<a name="l00074"></a><a class="code" href="classBitmap.html#a8e225a4f188269bb18265ae4b49de0a3">00074</a> <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a8e225a4f188269bb18265ae4b49de0a3" title="Sets the color that will be used for drawing text with drawText() and drawChar().">setTextColor</a>(<a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color) { _textColor = color; }
<a name="l00075"></a>00075
<a name="l00076"></a>00076 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0" title="Draws the len characters of str at (x, y).">drawText</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">int</span> len = -1);
<a name="l00077"></a>00077 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0" title="Draws the len characters of str at (x, y).">drawText</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> String &amp;str, <span class="keywordtype">int</span> start = 0, <span class="keywordtype">int</span> len = -1);
<a name="l00078"></a>00078
<a name="l00079"></a>00079 <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd" title="Draws a single character ch at (x, y).">drawChar</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">char</span> ch);
<a name="l00080"></a>00080
<a name="l00081"></a>00081 <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a9b79ac13077ca865e4515510297780bd" title="Returns the width in pixels of ch in the current font().">charWidth</a>(<span class="keywordtype">char</span> ch) <span class="keyword">const</span>;
<a name="l00082"></a>00082 <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a0f7607b1c7867987f4500d490a666e8a" title="Returns the width in pixels of the len characters of str in the current font(), including inter-chara...">textWidth</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">int</span> len = -1) <span class="keyword">const</span>;
<a name="l00083"></a>00083 <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a0f7607b1c7867987f4500d490a666e8a" title="Returns the width in pixels of the len characters of str in the current font(), including inter-chara...">textWidth</a>(<span class="keyword">const</span> String &amp;str, <span class="keywordtype">int</span> start = 0, <span class="keywordtype">int</span> len = -1) <span class="keyword">const</span>;
<a name="l00084"></a>00084 <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a628bb694fcfe6eab619a4f1e152d41c4" title="Returns the height in pixels of the current text drawing font(); or zero if font() is not set...">textHeight</a>() <span class="keyword">const</span>;
<a name="l00085"></a>00085
<a name="l00086"></a>00086 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#ab22fe1f3871934987a670b559f67c67c" title="Copies the width x height pixels starting at top-left corner (x, y) to (destX, destY) in the bitmap d...">copy</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> *dest, <span class="keywordtype">int</span> destX, <span class="keywordtype">int</span> destY);
<a name="l00087"></a>00087 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2" title="Fills the width x height pixels starting at top-left corner (x, y) with color.">fill</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color);
<a name="l00088"></a>00088 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2" title="Fills the width x height pixels starting at top-left corner (x, y) with color.">fill</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <span class="keyword">const</span> prog_uint8_t *pattern, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>);
<a name="l00089"></a>00089
<a name="l00090"></a>00090 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a" title="Scrolls the entire contents of the bitmap by dx and dy.">scroll</a>(<span class="keywordtype">int</span> dx, <span class="keywordtype">int</span> dy, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> fillColor = <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc" title="Color value corresponding to &quot;black&quot;.">Black</a>);
<a name="l00091"></a>00091 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a" title="Scrolls the entire contents of the bitmap by dx and dy.">scroll</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <span class="keywordtype">int</span> dx, <span class="keywordtype">int</span> dy, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> fillColor = <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc" title="Color value corresponding to &quot;black&quot;.">Black</a>);
<a name="l00092"></a>00092
<a name="l00093"></a>00093 <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a6d85556bcc9fac91d33f0f6f7a6430dd" title="Inverts the width x height pixels starting at top-left corner (x, y).">invert</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);
<a name="l00094"></a>00094
<a name="l00095"></a>00095 <span class="keyword">private</span>:
<a name="l00096"></a>00096 <span class="comment">// Disable copy constructor and operator=().</span>
<a name="l00097"></a>00097 <a class="code" href="classBitmap.html#a40526748415c8bbc58a8510d636c20f4" title="Constructs a new in-memory bitmap that is width x height pixels in size.">Bitmap</a>(<span class="keyword">const</span> <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> &amp;) {}
<a name="l00098"></a>00098 <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> &amp;) { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l00099"></a>00099
<a name="l00100"></a>00100 <span class="keywordtype">int</span> _width;
<a name="l00101"></a>00101 <span class="keywordtype">int</span> _height;
<a name="l00102"></a>00102 <span class="keywordtype">int</span> _stride;
<a name="l00103"></a>00103 uint8_t *fb;
<a name="l00104"></a>00104 <span class="keyword">const</span> prog_uint8_t *_font;
<a name="l00105"></a>00105 <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> _textColor;
<a name="l00106"></a>00106
<a name="l00107"></a>00107 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a>;
<a name="l00108"></a>00108
<a name="l00109"></a>00109 <span class="keywordtype">void</span> blit(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2, <span class="keywordtype">int</span> x3, <span class="keywordtype">int</span> y3);
<a name="l00110"></a>00110 <span class="keywordtype">void</span> drawCirclePoints(<span class="keywordtype">int</span> centerX, <span class="keywordtype">int</span> centerY, <span class="keywordtype">int</span> radius, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> borderColor, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> fillColor);
<a name="l00111"></a>00111 };
<a name="l00112"></a>00112
<a name="l00113"></a><a class="code" href="classBitmap.html#a568acbca3818dd85dd62fff6d0b36ffb">00113</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a568acbca3818dd85dd62fff6d0b36ffb" title="Draws a filled rectangle from (x1, y1) to (x2, y2) in color.">Bitmap::drawFilledRect</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color)
<a name="l00114"></a>00114 {
<a name="l00115"></a>00115 <a class="code" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc" title="Draws a rectangle from (x1, y1) to (x2, y2), with the outline in borderColor and the interior filled ...">drawRect</a>(x1, y1, x2, y2, color, color);
<a name="l00116"></a>00116 }
<a name="l00117"></a>00117
<a name="l00118"></a><a class="code" href="classBitmap.html#a757291b9a39bcb0d64ac98d3a2fa061b">00118</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a757291b9a39bcb0d64ac98d3a2fa061b" title="Draws a filled circle with a specific center (centerX, centerY) and radius in color.">Bitmap::drawFilledCircle</a>(<span class="keywordtype">int</span> centerX, <span class="keywordtype">int</span> centerY, <span class="keywordtype">int</span> radius, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color)
<a name="l00119"></a>00119 {
<a name="l00120"></a>00120 <a class="code" href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa" title="Draws a circle with a specific center (centerX, centerY) and radius, with the outline in borderColor ...">drawCircle</a>(centerX, centerY, radius, color, color);
<a name="l00121"></a>00121 }
<a name="l00122"></a>00122
<a name="l00123"></a><a class="code" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a">00123</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a" title="Draws bitmap at (x, y) in inverted colors.">Bitmap::drawInvertedBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> &amp;bitmap)
<a name="l00124"></a>00124 {
<a name="l00125"></a>00125 <a class="code" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72" title="Draws bitmap at (x, y) in color.">drawBitmap</a>(x, y, bitmap, <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc" title="Color value corresponding to &quot;black&quot;.">Black</a>);
<a name="l00126"></a>00126 }
<a name="l00127"></a>00127
<a name="l00128"></a><a class="code" href="classBitmap.html#ae41aa6bfa8d508d216e25d80bb93747e">00128</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a" title="Draws bitmap at (x, y) in inverted colors.">Bitmap::drawInvertedBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> prog_uint8_t *bitmap)
<a name="l00129"></a>00129 {
<a name="l00130"></a>00130 <a class="code" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72" title="Draws bitmap at (x, y) in color.">drawBitmap</a>(x, y, bitmap, <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc" title="Color value corresponding to &quot;black&quot;.">Black</a>);
<a name="l00131"></a>00131 }
<a name="l00132"></a>00132
<a name="l00133"></a><a class="code" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a">00133</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a" title="Scrolls the entire contents of the bitmap by dx and dy.">Bitmap::scroll</a>(<span class="keywordtype">int</span> dx, <span class="keywordtype">int</span> dy, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> fillColor)
<a name="l00134"></a>00134 {
<a name="l00135"></a>00135 <a class="code" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a" title="Scrolls the entire contents of the bitmap by dx and dy.">scroll</a>(0, 0, _width, _height, dx, dy, fillColor);
<a name="l00136"></a>00136 }
<a name="l00137"></a>00137
<a name="l00138"></a>00138 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -214,8 +77,162 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_6591a2127a29f6cea3994dcb5b0596d1.html">DMD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Bitmap.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef Bitmap_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define Bitmap_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">class </span><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a>;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">class </span>String;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="classBitmap.html"> 32</a></span>&#160;<span class="keyword">class </span><a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="classBitmap.html#a40526748415c8bbc58a8510d636c20f4" title="Constructs a new in-memory bitmap that is width x height pixels in size.">Bitmap</a>(<span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523" title="Returns the width of the bitmap in pixels.">width</a>, <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3" title="Returns the height of the bitmap in pixels.">height</a>);</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="classBitmap.html#a72d2a301ec1eb1c8d0f3d64823659a8e" title="Destroys this bitmap.">~Bitmap</a>();</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="classBitmap.html#a3846a240722e847d3cf11f701da1ce7b"> 38</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classBitmap.html#a3846a240722e847d3cf11f701da1ce7b" title="Returns true if the memory for this bitmap is valid; false otherwise.">isValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fb != 0; }</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba"> 40</a></span>&#160; <span class="keyword">typedef</span> uint8_t <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a>;</div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43"> 41</a></span>&#160; <span class="keyword">typedef</span> PGM_VOID_P <a class="code" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43" title="Type that represents a bitmap within program memory.">ProgMem</a>;</div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="code" href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf"> 42</a></span>&#160; <span class="keyword">typedef</span> PGM_VOID_P <a class="code" href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf" title="Type that represents a font within program memory.">Font</a>;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc"> 44</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc" title="Color value corresponding to &quot;black&quot;.">Black</a> = 0;</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7"> 45</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a> = 1;</div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e"> 46</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> <a class="code" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e" title="Special color value that is used with drawRect() and drawCircle() to indicate that the interior of th...">NoFill</a> = 2;</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"><a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523"> 48</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523" title="Returns the width of the bitmap in pixels.">width</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _width; }</div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3"> 49</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3" title="Returns the height of the bitmap in pixels.">height</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _height; }</div>
<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="classBitmap.html#af30df263729385ea2330effe3c80a1bc"> 50</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#af30df263729385ea2330effe3c80a1bc" title="Returns the number of bytes in each line of the bitmap&#39;s data() buffer.">stride</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _stride; }</div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="classBitmap.html#ad18d3d5a1e77d541a95e93ad1f958411"> 51</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#ad18d3d5a1e77d541a95e93ad1f958411" title="Returns the number of bits per pixel for the bitmap; always 1.">bitsPerPixel</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 1; }</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d"> 53</a></span>&#160; uint8_t *<a class="code" href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d" title="Returns a pointer to the start of the bitmap&#39;s data buffer.">data</a>() { <span class="keywordflow">return</span> fb; }</div>
<div class="line"><a name="l00054"></a><span class="lineno"><a class="code" href="classBitmap.html#a20fea2a946545aa3b5edd78245149e5f"> 54</a></span>&#160; <span class="keyword">const</span> uint8_t *<a class="code" href="classBitmap.html#a20fea2a946545aa3b5edd78245149e5f" title="Returns a constant pointer to the start of the bitmap&#39;s data buffer.This is an overloaded member func...">data</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fb; }</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1" title="Clears the entire bitmap to the specified color.">clear</a>(<a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color = <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc" title="Color value corresponding to &quot;black&quot;.">Black</a>);</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; <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> <a class="code" href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203" title="Returns the color of the pixel at (x, y); either Black or White.">pixel</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114" title="Sets the pixel at (x, y) to color.">setPixel</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767" title="Draws a line from (x1, y1) to (x2, y2) in color.">drawLine</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc" title="Draws a rectangle from (x1, y1) to (x2, y2), with the outline in borderColor and the interior filled ...">drawRect</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> borderColor = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> fillColor = <a class="code" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e" title="Special color value that is used with drawRect() and drawCircle() to indicate that the interior of th...">NoFill</a>);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a568acbca3818dd85dd62fff6d0b36ffb" title="Draws a filled rectangle from (x1, y1) to (x2, y2) in color.">drawFilledRect</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>);</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa" title="Draws a circle with a specific center (centerX, centerY) and radius, with the outline in borderColor ...">drawCircle</a>(<span class="keywordtype">int</span> centerX, <span class="keywordtype">int</span> centerY, <span class="keywordtype">int</span> radius, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> borderColor = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> fillColor = <a class="code" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e" title="Special color value that is used with drawRect() and drawCircle() to indicate that the interior of th...">NoFill</a>);</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a757291b9a39bcb0d64ac98d3a2fa061b" title="Draws a filled circle with a specific center (centerX, centerY) and radius in color.">drawFilledCircle</a>(<span class="keywordtype">int</span> centerX, <span class="keywordtype">int</span> centerY, <span class="keywordtype">int</span> radius, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>);</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"> 67</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72" title="Draws bitmap at (x, y) in color.">drawBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> &amp;bitmap, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>);</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72" title="Draws bitmap at (x, y) in color.">drawBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <a class="code" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43" title="Type that represents a bitmap within program memory.">Bitmap::ProgMem</a> bitmap, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a" title="Draws bitmap at (x, y) in inverted colors.">drawInvertedBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> &amp;bitmap);</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a" title="Draws bitmap at (x, y) in inverted colors.">drawInvertedBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <a class="code" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43" title="Type that represents a bitmap within program memory.">Bitmap::ProgMem</a> bitmap);</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"><a class="code" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c"> 72</a></span>&#160; <a class="code" href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf" title="Type that represents a font within program memory.">Font</a> <a class="code" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c" title="Returns the currently selected font, or null if none selected.">font</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _font; }</div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="classBitmap.html#a64d7a9651d5c385a044cc910a3b82837"> 73</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a64d7a9651d5c385a044cc910a3b82837" title="Sets the font for use with drawText() and drawChar().">setFont</a>(<a class="code" href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf" title="Type that represents a font within program memory.">Font</a> <a class="code" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c" title="Returns the currently selected font, or null if none selected.">font</a>) { _font = <a class="code" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c" title="Returns the currently selected font, or null if none selected.">font</a>; }</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
<div class="line"><a name="l00075"></a><span class="lineno"><a class="code" href="classBitmap.html#ab6e5f5744fd2f18478aac428b751d848"> 75</a></span>&#160; <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> <a class="code" href="classBitmap.html#ab6e5f5744fd2f18478aac428b751d848" title="Returns the color that will be used for drawing text with drawText() and drawChar(). The default is White.">textColor</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _textColor; }</div>
<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="classBitmap.html#a8e225a4f188269bb18265ae4b49de0a3"> 76</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a8e225a4f188269bb18265ae4b49de0a3" title="Sets the color that will be used for drawing text with drawText() and drawChar().">setTextColor</a>(<a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color) { _textColor = color; }</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="keywordtype">void</span> <a class="code" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0" title="Draws the len characters of str at (x, y).">drawText</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">int</span> len = -1);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0" title="Draws the len characters of str at (x, y).">drawText</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> String &amp;str, <span class="keywordtype">int</span> start = 0, <span class="keywordtype">int</span> len = -1);</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="keywordtype">int</span> <a class="code" href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd" title="Draws a single character ch at (x, y).">drawChar</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">char</span> ch);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a9b79ac13077ca865e4515510297780bd" title="Returns the width in pixels of ch in the current font().">charWidth</a>(<span class="keywordtype">char</span> ch) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a0f7607b1c7867987f4500d490a666e8a" title="Returns the width in pixels of the len characters of str in the current font(), including inter-chara...">textWidth</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">int</span> len = -1) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a0f7607b1c7867987f4500d490a666e8a" title="Returns the width in pixels of the len characters of str in the current font(), including inter-chara...">textWidth</a>(<span class="keyword">const</span> String &amp;str, <span class="keywordtype">int</span> start = 0, <span class="keywordtype">int</span> len = -1) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a628bb694fcfe6eab619a4f1e152d41c4" title="Returns the height in pixels of the current text drawing font(); or zero if font() is not set...">textHeight</a>() <span class="keyword">const</span>;</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"> 88</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#ab22fe1f3871934987a670b559f67c67c" title="Copies the width x height pixels starting at top-left corner (x, y) to (destX, destY) in the bitmap d...">copy</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> *dest, <span class="keywordtype">int</span> destX, <span class="keywordtype">int</span> destY);</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2" title="Fills the width x height pixels starting at top-left corner (x, y) with color.">fill</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color);</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2" title="Fills the width x height pixels starting at top-left corner (x, y) with color.">fill</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <a class="code" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43" title="Type that represents a bitmap within program memory.">Bitmap::ProgMem</a> pattern, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>);</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="keywordtype">void</span> <a class="code" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a" title="Scrolls the entire contents of the bitmap by dx and dy.">scroll</a>(<span class="keywordtype">int</span> dx, <span class="keywordtype">int</span> dy, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> fillColor = <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc" title="Color value corresponding to &quot;black&quot;.">Black</a>);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a" title="Scrolls the entire contents of the bitmap by dx and dy.">scroll</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <span class="keywordtype">int</span> dx, <span class="keywordtype">int</span> dy, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> fillColor = <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc" title="Color value corresponding to &quot;black&quot;.">Black</a>);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a6d85556bcc9fac91d33f0f6f7a6430dd" title="Inverts the width x height pixels starting at top-left corner (x, y).">invert</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);</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="keyword">private</span>:</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">// Disable copy constructor and operator=().</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="classBitmap.html#a40526748415c8bbc58a8510d636c20f4" title="Constructs a new in-memory bitmap that is width x height pixels in size.">Bitmap</a>(<span class="keyword">const</span> <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> &amp;) {}</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> &amp;) { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</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">int</span> _width;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">int</span> _height;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">int</span> _stride;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; uint8_t *fb;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf" title="Type that represents a font within program memory.">Font</a> _font;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> _textColor;</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="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a>;</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="keywordtype">void</span> blit(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2, <span class="keywordtype">int</span> x3, <span class="keywordtype">int</span> y3);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordtype">void</span> drawCirclePoints(<span class="keywordtype">int</span> centerX, <span class="keywordtype">int</span> centerY, <span class="keywordtype">int</span> radius, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> borderColor, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> fillColor);</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="classBitmap.html#a568acbca3818dd85dd62fff6d0b36ffb"> 115</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a568acbca3818dd85dd62fff6d0b36ffb" title="Draws a filled rectangle from (x1, y1) to (x2, y2) in color.">Bitmap::drawFilledRect</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color)</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;{</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc" title="Draws a rectangle from (x1, y1) to (x2, y2), with the outline in borderColor and the interior filled ...">drawRect</a>(x1, y1, x2, y2, color, color);</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;</div>
<div class="line"><a name="l00120"></a><span class="lineno"><a class="code" href="classBitmap.html#a757291b9a39bcb0d64ac98d3a2fa061b"> 120</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a757291b9a39bcb0d64ac98d3a2fa061b" title="Draws a filled circle with a specific center (centerX, centerY) and radius in color.">Bitmap::drawFilledCircle</a>(<span class="keywordtype">int</span> centerX, <span class="keywordtype">int</span> centerY, <span class="keywordtype">int</span> radius, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> color)</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="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa" title="Draws a circle with a specific center (centerX, centerY) and radius, with the outline in borderColor ...">drawCircle</a>(centerX, centerY, radius, color, color);</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</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"><a class="code" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a"> 125</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a" title="Draws bitmap at (x, y) in inverted colors.">Bitmap::drawInvertedBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> &amp;bitmap)</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="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72" title="Draws bitmap at (x, y) in color.">drawBitmap</a>(x, y, bitmap, <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc" title="Color value corresponding to &quot;black&quot;.">Black</a>);</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"><a class="code" href="classBitmap.html#a2e862b72c2d6471af737fac320472d69"> 130</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a" title="Draws bitmap at (x, y) in inverted colors.">Bitmap::drawInvertedBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <a class="code" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43" title="Type that represents a bitmap within program memory.">Bitmap::ProgMem</a> bitmap)</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;{</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72" title="Draws bitmap at (x, y) in color.">drawBitmap</a>(x, y, bitmap, <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc" title="Color value corresponding to &quot;black&quot;.">Black</a>);</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;</div>
<div class="line"><a name="l00135"></a><span class="lineno"><a class="code" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a"> 135</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a" title="Scrolls the entire contents of the bitmap by dx and dy.">Bitmap::scroll</a>(<span class="keywordtype">int</span> dx, <span class="keywordtype">int</span> dy, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> fillColor)</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;{</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a" title="Scrolls the entire contents of the bitmap by dx and dy.">scroll</a>(0, 0, _width, _height, dx, dy, fillColor);</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;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: BlinkLED.cpp Source File</title> <title>ArduinoLibs: BlinkLED.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,116 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">BlinkLED.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;BlinkLED.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#else</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#endif</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span>
<a name="l00064"></a><a class="code" href="classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f">00064</a> <a class="code" href="classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f" title="Initialize a blinking LED on the specified pin.">BlinkLED::BlinkLED</a>(uint8_t pin, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> onTime, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offTime, <span class="keywordtype">bool</span> initialState)
<a name="l00065"></a>00065 : _pin(pin)
<a name="l00066"></a>00066 , _state(initialState)
<a name="l00067"></a>00067 , _paused(false)
<a name="l00068"></a>00068 , _onTime(onTime)
<a name="l00069"></a>00069 , _offTime(offTime)
<a name="l00070"></a>00070 {
<a name="l00071"></a>00071 pinMode(pin, OUTPUT);
<a name="l00072"></a>00072 digitalWrite(pin, initialState ? HIGH : LOW);
<a name="l00073"></a>00073 _lastChange = millis();
<a name="l00074"></a>00074 }
<a name="l00075"></a>00075
<a name="l00079"></a><a class="code" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">00079</a> <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">BlinkLED::loop</a>()
<a name="l00080"></a>00080 {
<a name="l00081"></a>00081 <span class="keywordflow">if</span> (_paused)
<a name="l00082"></a>00082 <span class="keywordflow">return</span>;
<a name="l00083"></a>00083 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> currentTime = millis();
<a name="l00084"></a>00084 <span class="keywordflow">if</span> (_state) {
<a name="l00085"></a>00085 <span class="keywordflow">if</span> ((currentTime - _lastChange) &gt;= _onTime) {
<a name="l00086"></a>00086 digitalWrite(_pin, LOW);
<a name="l00087"></a>00087 _lastChange += _onTime;
<a name="l00088"></a>00088 _state = <span class="keyword">false</span>;
<a name="l00089"></a>00089 }
<a name="l00090"></a>00090 } <span class="keywordflow">else</span> {
<a name="l00091"></a>00091 <span class="keywordflow">if</span> ((currentTime - _lastChange) &gt;= _offTime) {
<a name="l00092"></a>00092 digitalWrite(_pin, HIGH);
<a name="l00093"></a>00093 _lastChange += _offTime;
<a name="l00094"></a>00094 _state = <span class="keyword">true</span>;
<a name="l00095"></a>00095 }
<a name="l00096"></a>00096 }
<a name="l00097"></a>00097 }
<a name="l00098"></a>00098
<a name="l00122"></a><a class="code" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258">00122</a> <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258" title="Sets the onTime and offTime (in milliseconds).">BlinkLED::setBlinkRate</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> onTime, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offTime)
<a name="l00123"></a>00123 {
<a name="l00124"></a>00124 _onTime = <a class="code" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime</a>;
<a name="l00125"></a>00125 _offTime = <a class="code" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime</a>;
<a name="l00126"></a>00126 }
<a name="l00127"></a>00127
<a name="l00145"></a><a class="code" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4">00145</a> <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4" title="Sets the current state of the LED, where true is on, false is off.">BlinkLED::setState</a>(<span class="keywordtype">bool</span> state)
<a name="l00146"></a>00146 {
<a name="l00147"></a>00147 <span class="keywordflow">if</span> (_state != state) {
<a name="l00148"></a>00148 digitalWrite(_pin, state ? HIGH : LOW);
<a name="l00149"></a>00149 _state = <a class="code" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state</a>;
<a name="l00150"></a>00150 _lastChange = millis();
<a name="l00151"></a>00151 }
<a name="l00152"></a>00152 }
<a name="l00153"></a>00153
<a name="l00170"></a><a class="code" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252">00170</a> <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252" title="Resumes the LED blink cycle after a pause().">BlinkLED::resume</a>()
<a name="l00171"></a>00171 {
<a name="l00172"></a>00172 <span class="keywordflow">if</span> (_paused) {
<a name="l00173"></a>00173 _paused = <span class="keyword">false</span>;
<a name="l00174"></a>00174 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> currentTime = millis();
<a name="l00175"></a>00175 <span class="keywordflow">if</span> (_state) {
<a name="l00176"></a>00176 <span class="keywordflow">if</span> ((currentTime - _lastChange) &gt;= _onTime) {
<a name="l00177"></a>00177 digitalWrite(_pin, LOW);
<a name="l00178"></a>00178 _lastChange = currentTime;
<a name="l00179"></a>00179 _state = <span class="keyword">false</span>;
<a name="l00180"></a>00180 }
<a name="l00181"></a>00181 } <span class="keywordflow">else</span> {
<a name="l00182"></a>00182 <span class="keywordflow">if</span> ((currentTime - _lastChange) &gt;= _offTime) {
<a name="l00183"></a>00183 digitalWrite(_pin, HIGH);
<a name="l00184"></a>00184 _lastChange = currentTime;
<a name="l00185"></a>00185 _state = <span class="keyword">true</span>;
<a name="l00186"></a>00186 }
<a name="l00187"></a>00187 }
<a name="l00188"></a>00188 }
<a name="l00189"></a>00189 }
<a name="l00190"></a>00190
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -173,8 +77,119 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_1586d320a3b1e622174530fde769cda9.html">BlinkLED</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">BlinkLED.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;BlinkLED.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f"> 64</a></span>&#160;<a class="code" href="classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f" title="Initialize a blinking LED on the specified pin.">BlinkLED::BlinkLED</a>(uint8_t pin, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> onTime, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offTime, <span class="keywordtype">bool</span> initialState)</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; : _pin(pin)</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; , _state(initialState)</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; , _paused(false)</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; , _onTime(onTime)</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; , _offTime(offTime)</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; pinMode(pin, OUTPUT);</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; digitalWrite(pin, initialState ? HIGH : LOW);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; _lastChange = millis();</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;}</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e"> 79</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">BlinkLED::loop</a>()</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="keywordflow">if</span> (_paused)</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> currentTime = millis();</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (_state) {</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">if</span> ((currentTime - _lastChange) &gt;= _onTime) {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; digitalWrite(_pin, LOW);</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; _lastChange += _onTime;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; _state = <span class="keyword">false</span>;</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"> 90</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> ((currentTime - _lastChange) &gt;= _offTime) {</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; digitalWrite(_pin, HIGH);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; _lastChange += _offTime;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; _state = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</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;}</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
<div class="line"><a name="l00122"></a><span class="lineno"><a class="code" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258"> 122</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258" title="Sets the onTime and offTime (in milliseconds).">BlinkLED::setBlinkRate</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> onTime, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offTime)</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;{</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; _onTime = <a class="code" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime</a>;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; _offTime = <a class="code" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime</a>;</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;</div>
<div class="line"><a name="l00145"></a><span class="lineno"><a class="code" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4"> 145</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4" title="Sets the current state of the LED, where true is on, false is off.">BlinkLED::setState</a>(<span class="keywordtype">bool</span> state)</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;{</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span> (_state != state) {</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; digitalWrite(_pin, state ? HIGH : LOW);</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; _state = <a class="code" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state</a>;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; _lastChange = millis();</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;}</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div>
<div class="line"><a name="l00170"></a><span class="lineno"><a class="code" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252"> 170</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252" title="Resumes the LED blink cycle after a pause().">BlinkLED::resume</a>()</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span> (_paused) {</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; _paused = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> currentTime = millis();</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (_state) {</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span> ((currentTime - _lastChange) &gt;= _onTime) {</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; digitalWrite(_pin, LOW);</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; _lastChange = currentTime;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; _state = <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; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span> ((currentTime - _lastChange) &gt;= _offTime) {</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; digitalWrite(_pin, HIGH);</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; _lastChange = currentTime;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; _state = <span class="keyword">true</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; }</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</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;</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: BlinkLED.h Source File</title> <title>ArduinoLibs: BlinkLED.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,74 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">BlinkLED.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef BlinkLED_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define BlinkLED_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
<a name="l00027"></a>00027
<a name="l00028"></a><a class="code" href="classBlinkLED.html">00028</a> <span class="keyword">class </span><a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a>
<a name="l00029"></a>00029 {
<a name="l00030"></a>00030 <span class="keyword">public</span>:
<a name="l00031"></a>00031 <a class="code" href="classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f" title="Initialize a blinking LED on the specified pin.">BlinkLED</a>(uint8_t pin, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime</a>, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime</a>, <span class="keywordtype">bool</span> initialState = <span class="keyword">false</span>);
<a name="l00032"></a>00032
<a name="l00033"></a>00033 <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">loop</a>();
<a name="l00034"></a>00034
<a name="l00035"></a><a class="code" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb">00035</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _onTime; }
<a name="l00036"></a><a class="code" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc">00036</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _offTime; }
<a name="l00037"></a>00037 <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258" title="Sets the onTime and offTime (in milliseconds).">setBlinkRate</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> onTime, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offTime);
<a name="l00038"></a>00038
<a name="l00039"></a><a class="code" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233">00039</a> <span class="keywordtype">bool</span> <a class="code" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _state; }
<a name="l00040"></a>00040 <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4" title="Sets the current state of the LED, where true is on, false is off.">setState</a>(<span class="keywordtype">bool</span> <a class="code" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state</a>);
<a name="l00041"></a>00041
<a name="l00042"></a><a class="code" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a">00042</a> <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a" title="Pauses the LED blink cycle in its current state().">pause</a>() { _paused = <span class="keyword">true</span>; }
<a name="l00043"></a>00043 <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252" title="Resumes the LED blink cycle after a pause().">resume</a>();
<a name="l00044"></a><a class="code" href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8">00044</a> <span class="keywordtype">bool</span> <a class="code" href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8" title="Returns true if the LED blink cycle is paused; false otherwise.">isPaused</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _paused; }
<a name="l00045"></a>00045
<a name="l00046"></a>00046 <span class="keyword">private</span>:
<a name="l00047"></a>00047 uint8_t _pin;
<a name="l00048"></a>00048 <span class="keywordtype">bool</span> _state;
<a name="l00049"></a>00049 <span class="keywordtype">bool</span> _paused;
<a name="l00050"></a>00050 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _onTime;
<a name="l00051"></a>00051 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _offTime;
<a name="l00052"></a>00052 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _lastChange;
<a name="l00053"></a>00053 };
<a name="l00054"></a>00054
<a name="l00055"></a>00055 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -131,8 +77,77 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_1586d320a3b1e622174530fde769cda9.html">BlinkLED</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">BlinkLED.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef BlinkLED_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define BlinkLED_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="classBlinkLED.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f" title="Initialize a blinking LED on the specified pin.">BlinkLED</a>(uint8_t pin, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime</a>, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime</a>, <span class="keywordtype">bool</span> initialState = <span class="keyword">false</span>);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">loop</a>();</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"><a class="code" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb"> 35</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _onTime; }</div>
<div class="line"><a name="l00036"></a><span class="lineno"><a class="code" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc"> 36</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _offTime; }</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258" title="Sets the onTime and offTime (in milliseconds).">setBlinkRate</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> onTime, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offTime);</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233"> 39</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _state; }</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4" title="Sets the current state of the LED, where true is on, false is off.">setState</a>(<span class="keywordtype">bool</span> <a class="code" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state</a>);</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"><a class="code" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a"> 42</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a" title="Pauses the LED blink cycle in its current state().">pause</a>() { _paused = <span class="keyword">true</span>; }</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252" title="Resumes the LED blink cycle after a pause().">resume</a>();</div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8"> 44</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8" title="Returns true if the LED blink cycle is paused; false otherwise.">isPaused</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _paused; }</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="keyword">private</span>:</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; uint8_t _pin;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">bool</span> _state;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">bool</span> _paused;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _onTime;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _offTime;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _lastChange;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;};</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: BoolField.cpp Source File</title> <title>ArduinoLibs: BoolField.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,116 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">BoolField.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;BoolField.h&quot;</span>
<a name="l00024"></a>00024
<a name="l00077"></a><a class="code" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998">00077</a> <a class="code" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998" title="Constructs a new boolean field with a specific label.">BoolField::BoolField</a>(<span class="keyword">const</span> String &amp;label)
<a name="l00078"></a>00078 : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(label)
<a name="l00079"></a>00079 , _printLen(0)
<a name="l00080"></a>00080 , _value(false)
<a name="l00081"></a>00081 {
<a name="l00082"></a>00082 }
<a name="l00083"></a>00083
<a name="l00094"></a><a class="code" href="classBoolField.html#a49aad212ed18f84baa105c24e86281d9">00094</a> <a class="code" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998" title="Constructs a new boolean field with a specific label.">BoolField::BoolField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label, <span class="keyword">const</span> String &amp;trueLabel, <span class="keyword">const</span> String &amp;falseLabel, <span class="keywordtype">bool</span> value)
<a name="l00095"></a>00095 : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(form, label)
<a name="l00096"></a>00096 , _trueLabel(trueLabel)
<a name="l00097"></a>00097 , _falseLabel(falseLabel)
<a name="l00098"></a>00098 , _printLen(0)
<a name="l00099"></a>00099 , _value(value)
<a name="l00100"></a>00100 {
<a name="l00101"></a>00101 }
<a name="l00102"></a>00102
<a name="l00103"></a><a class="code" href="classBoolField.html#af793bafc1193d79b495c2ede711bca57">00103</a> <span class="keywordtype">int</span> <a class="code" href="classBoolField.html#af793bafc1193d79b495c2ede711bca57" title="Dispatches event via this field.">BoolField::dispatch</a>(<span class="keywordtype">int</span> event)
<a name="l00104"></a>00104 {
<a name="l00105"></a>00105 <span class="keywordflow">if</span> (event == LCD_BUTTON_UP || event == LCD_BUTTON_DOWN) {
<a name="l00106"></a>00106 <a class="code" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577" title="Sets the current value of this field to value.">setValue</a>(!_value);
<a name="l00107"></a>00107 <span class="keywordflow">return</span> FORM_CHANGED;
<a name="l00108"></a>00108 } <span class="keywordflow">else</span> {
<a name="l00109"></a>00109 <span class="keywordflow">return</span> -1;
<a name="l00110"></a>00110 }
<a name="l00111"></a>00111 }
<a name="l00112"></a>00112
<a name="l00113"></a><a class="code" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09">00113</a> <span class="keywordtype">void</span> <a class="code" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09" title="Enters the field due to form navigation.">BoolField::enterField</a>(<span class="keywordtype">bool</span> reverse)
<a name="l00114"></a>00114 {
<a name="l00115"></a>00115 <a class="code" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09" title="Enters the field due to form navigation.">Field::enterField</a>(reverse);
<a name="l00116"></a>00116 printValue();
<a name="l00117"></a>00117 }
<a name="l00118"></a>00118
<a name="l00131"></a><a class="code" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577">00131</a> <span class="keywordtype">void</span> <a class="code" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577" title="Sets the current value of this field to value.">BoolField::setValue</a>(<span class="keywordtype">bool</span> value)
<a name="l00132"></a>00132 {
<a name="l00133"></a>00133 <span class="keywordflow">if</span> (value != _value) {
<a name="l00134"></a>00134 _value = <a class="code" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value</a>;
<a name="l00135"></a>00135 <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())
<a name="l00136"></a>00136 printValue();
<a name="l00137"></a>00137 }
<a name="l00138"></a>00138 }
<a name="l00139"></a>00139
<a name="l00153"></a><a class="code" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194">00153</a> <span class="keywordtype">void</span> <a class="code" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194" title="Sets the string that is displayed when value() is true to trueLabel.">BoolField::setTrueLabel</a>(<span class="keyword">const</span> String &amp;trueLabel)
<a name="l00154"></a>00154 {
<a name="l00155"></a>00155 _trueLabel = <a class="code" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d" title="Returns the string that is displayed when value() is true.">trueLabel</a>;
<a name="l00156"></a>00156 <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())
<a name="l00157"></a>00157 printValue();
<a name="l00158"></a>00158 }
<a name="l00159"></a>00159
<a name="l00173"></a><a class="code" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a">00173</a> <span class="keywordtype">void</span> <a class="code" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a" title="Sets the string that is displayed when value() is false to falseLabel.">BoolField::setFalseLabel</a>(<span class="keyword">const</span> String &amp;falseLabel)
<a name="l00174"></a>00174 {
<a name="l00175"></a>00175 _falseLabel = <a class="code" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01" title="Returns the string that is displayed when value() is false.">falseLabel</a>;
<a name="l00176"></a>00176 <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())
<a name="l00177"></a>00177 printValue();
<a name="l00178"></a>00178 }
<a name="l00179"></a>00179
<a name="l00180"></a>00180 <span class="keywordtype">void</span> BoolField::printValue()
<a name="l00181"></a>00181 {
<a name="l00182"></a>00182 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len;
<a name="l00183"></a>00183 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(0, 1);
<a name="l00184"></a>00184 <span class="keywordflow">if</span> (_value) {
<a name="l00185"></a>00185 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;print(_trueLabel);
<a name="l00186"></a>00186 len = _trueLabel.length();
<a name="l00187"></a>00187 <span class="keywordflow">while</span> (len++ &lt; _printLen)
<a name="l00188"></a>00188 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39; &#39;</span>);
<a name="l00189"></a>00189 _printLen = _trueLabel.length();
<a name="l00190"></a>00190 } <span class="keywordflow">else</span> {
<a name="l00191"></a>00191 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;print(_falseLabel);
<a name="l00192"></a>00192 len = _falseLabel.length();
<a name="l00193"></a>00193 <span class="keywordflow">while</span> (len++ &lt; _printLen)
<a name="l00194"></a>00194 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39; &#39;</span>);
<a name="l00195"></a>00195 _printLen = _falseLabel.length();
<a name="l00196"></a>00196 }
<a name="l00197"></a>00197 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -173,8 +77,119 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">BoolField.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;BoolField.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998"> 77</a></span>&#160;<a class="code" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998" title="Constructs a new boolean field with a specific label.">BoolField::BoolField</a>(<span class="keyword">const</span> String &amp;label)</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(label)</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; , _printLen(0)</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; , _value(false)</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;}</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div>
<div class="line"><a name="l00094"></a><span class="lineno"><a class="code" href="classBoolField.html#a49aad212ed18f84baa105c24e86281d9"> 94</a></span>&#160;<a class="code" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998" title="Constructs a new boolean field with a specific label.">BoolField::BoolField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label, <span class="keyword">const</span> String &amp;trueLabel, <span class="keyword">const</span> String &amp;falseLabel, <span class="keywordtype">bool</span> value)</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(form, label)</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; , _trueLabel(trueLabel)</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; , _falseLabel(falseLabel)</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; , _printLen(0)</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; , _value(value)</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;}</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"><a class="code" href="classBoolField.html#af793bafc1193d79b495c2ede711bca57"> 103</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classBoolField.html#af793bafc1193d79b495c2ede711bca57" title="Dispatches event via this field.">BoolField::dispatch</a>(<span class="keywordtype">int</span> event)</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="keywordflow">if</span> (event == LCD_BUTTON_UP || event == LCD_BUTTON_DOWN) {</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577" title="Sets the current value of this field to value.">setValue</a>(!_value);</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> FORM_CHANGED;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> -1;</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;}</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"><a class="code" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09"> 113</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09" title="Enters the field due to form navigation.">BoolField::enterField</a>(<span class="keywordtype">bool</span> reverse)</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; <a class="code" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09" title="Enters the field due to form navigation.">Field::enterField</a>(reverse);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; printValue();</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="l00131"></a><span class="lineno"><a class="code" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577"> 131</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577" title="Sets the current value of this field to value.">BoolField::setValue</a>(<span class="keywordtype">bool</span> value)</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;{</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (value != _value) {</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; _value = <a class="code" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value</a>;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; printValue();</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;</div>
<div class="line"><a name="l00153"></a><span class="lineno"><a class="code" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194"> 153</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194" title="Sets the string that is displayed when value() is true to trueLabel.">BoolField::setTrueLabel</a>(<span class="keyword">const</span> String &amp;trueLabel)</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; _trueLabel = <a class="code" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d" title="Returns the string that is displayed when value() is true.">trueLabel</a>;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; printValue();</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;}</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00173"></a><span class="lineno"><a class="code" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a"> 173</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a" title="Sets the string that is displayed when value() is false to falseLabel.">BoolField::setFalseLabel</a>(<span class="keyword">const</span> String &amp;falseLabel)</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;{</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; _falseLabel = <a class="code" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01" title="Returns the string that is displayed when value() is false.">falseLabel</a>;</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; printValue();</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;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keywordtype">void</span> BoolField::printValue()</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;{</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len;</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(0, 1);</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (_value) {</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;print(_trueLabel);</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; len = _trueLabel.length();</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">while</span> (len++ &lt; _printLen)</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39; &#39;</span>);</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; _printLen = _trueLabel.length();</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;print(_falseLabel);</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; len = _falseLabel.length();</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">while</span> (len++ &lt; _printLen)</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39; &#39;</span>);</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; _printLen = _falseLabel.length();</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;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: BoolField.h Source File</title> <title>ArduinoLibs: BoolField.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,74 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">BoolField.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef BoolField_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define BoolField_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;Field.h&quot;</span>
<a name="l00027"></a>00027
<a name="l00028"></a><a class="code" href="classBoolField.html">00028</a> <span class="keyword">class </span><a class="code" href="classBoolField.html" title="Field that manages the input of a boolean value.">BoolField</a> : <span class="keyword">public</span> <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> {
<a name="l00029"></a>00029 <span class="keyword">public</span>:
<a name="l00030"></a>00030 <span class="keyword">explicit</span> <a class="code" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998" title="Constructs a new boolean field with a specific label.">BoolField</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>);
<a name="l00031"></a>00031 <a class="code" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998" title="Constructs a new boolean field with a specific label.">BoolField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5" title="Returns the Form that owns this field; null if not associated with a Form.">form</a>, <span class="keyword">const</span> String &amp;label, <span class="keyword">const</span> String &amp;<a class="code" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d" title="Returns the string that is displayed when value() is true.">trueLabel</a>, <span class="keyword">const</span> String &amp;<a class="code" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01" title="Returns the string that is displayed when value() is false.">falseLabel</a>, <span class="keywordtype">bool</span> <a class="code" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value</a>);
<a name="l00032"></a>00032
<a name="l00033"></a>00033 <span class="keywordtype">int</span> <a class="code" href="classBoolField.html#af793bafc1193d79b495c2ede711bca57" title="Dispatches event via this field.">dispatch</a>(<span class="keywordtype">int</span> event);
<a name="l00034"></a>00034
<a name="l00035"></a>00035 <span class="keywordtype">void</span> <a class="code" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09" title="Enters the field due to form navigation.">enterField</a>(<span class="keywordtype">bool</span> reverse);
<a name="l00036"></a>00036
<a name="l00037"></a><a class="code" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39">00037</a> <span class="keywordtype">bool</span> <a class="code" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _value; }
<a name="l00038"></a>00038 <span class="keywordtype">void</span> <a class="code" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577" title="Sets the current value of this field to value.">setValue</a>(<span class="keywordtype">bool</span> value);
<a name="l00039"></a>00039
<a name="l00040"></a><a class="code" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d">00040</a> <span class="keyword">const</span> String &amp;<a class="code" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d" title="Returns the string that is displayed when value() is true.">trueLabel</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _trueLabel; }
<a name="l00041"></a>00041 <span class="keywordtype">void</span> <a class="code" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194" title="Sets the string that is displayed when value() is true to trueLabel.">setTrueLabel</a>(<span class="keyword">const</span> String &amp;trueLabel);
<a name="l00042"></a>00042
<a name="l00043"></a><a class="code" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01">00043</a> <span class="keyword">const</span> String &amp;<a class="code" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01" title="Returns the string that is displayed when value() is false.">falseLabel</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _falseLabel; }
<a name="l00044"></a>00044 <span class="keywordtype">void</span> <a class="code" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a" title="Sets the string that is displayed when value() is false to falseLabel.">setFalseLabel</a>(<span class="keyword">const</span> String &amp;falseLabel);
<a name="l00045"></a>00045
<a name="l00046"></a>00046 <span class="keyword">private</span>:
<a name="l00047"></a>00047 String _trueLabel;
<a name="l00048"></a>00048 String _falseLabel;
<a name="l00049"></a>00049 <span class="keywordtype">int</span> _printLen;
<a name="l00050"></a>00050 <span class="keywordtype">bool</span> _value;
<a name="l00051"></a>00051
<a name="l00052"></a>00052 <span class="keywordtype">void</span> printValue();
<a name="l00053"></a>00053 };
<a name="l00054"></a>00054
<a name="l00055"></a>00055 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -131,8 +77,77 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">BoolField.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef BoolField_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define BoolField_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;Field.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="classBoolField.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classBoolField.html" title="Field that manages the input of a boolean value.">BoolField</a> : <span class="keyword">public</span> <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> {</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998" title="Constructs a new boolean field with a specific label.">BoolField</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998" title="Constructs a new boolean field with a specific label.">BoolField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5" title="Returns the Form that owns this field; null if not associated with a Form.">form</a>, <span class="keyword">const</span> String &amp;label, <span class="keyword">const</span> String &amp;<a class="code" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d" title="Returns the string that is displayed when value() is true.">trueLabel</a>, <span class="keyword">const</span> String &amp;<a class="code" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01" title="Returns the string that is displayed when value() is false.">falseLabel</a>, <span class="keywordtype">bool</span> <a class="code" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value</a>);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBoolField.html#af793bafc1193d79b495c2ede711bca57" title="Dispatches event via this field.">dispatch</a>(<span class="keywordtype">int</span> event);</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="keywordtype">void</span> <a class="code" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09" title="Enters the field due to form navigation.">enterField</a>(<span class="keywordtype">bool</span> reverse);</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"><a class="code" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39"> 37</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _value; }</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577" title="Sets the current value of this field to value.">setValue</a>(<span class="keywordtype">bool</span> value);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d"> 40</a></span>&#160; <span class="keyword">const</span> String &amp;<a class="code" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d" title="Returns the string that is displayed when value() is true.">trueLabel</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _trueLabel; }</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194" title="Sets the string that is displayed when value() is true to trueLabel.">setTrueLabel</a>(<span class="keyword">const</span> String &amp;trueLabel);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01"> 43</a></span>&#160; <span class="keyword">const</span> String &amp;<a class="code" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01" title="Returns the string that is displayed when value() is false.">falseLabel</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _falseLabel; }</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a" title="Sets the string that is displayed when value() is false to falseLabel.">setFalseLabel</a>(<span class="keyword">const</span> String &amp;falseLabel);</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="keyword">private</span>:</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; String _trueLabel;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; String _falseLabel;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">int</span> _printLen;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">bool</span> _value;</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="keywordtype">void</span> printValue();</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;};</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Charlieplex.cpp Source File</title> <title>ArduinoLibs: Charlieplex.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,156 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">Charlieplex.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;Charlieplex.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#else</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#endif</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#include &lt;stdlib.h&gt;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;string.h&gt;</span>
<a name="l00031"></a>00031
<a name="l00121"></a><a class="code" href="classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd">00121</a> <a class="code" href="classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd" title="Constructs a new charliexplexing array where the output pins are specified by the numPins entries in ...">Charlieplex::Charlieplex</a>(<span class="keyword">const</span> uint8_t *pins, uint8_t numPins)
<a name="l00122"></a>00122 : _count(((int)numPins) * (numPins - 1))
<a name="l00123"></a>00123 , _lastTime(micros())
<a name="l00124"></a>00124 , _currentIndex(-1)
<a name="l00125"></a>00125 , _pwmPhase(0xC0)
<a name="l00126"></a>00126 {
<a name="l00127"></a>00127 <span class="comment">// Determine the best hold time for 50 Hz refresh when all LED&#39;s</span>
<a name="l00128"></a>00128 <span class="comment">// are lit. Divide it again by 4 (to get 200 Hz) to manage the</span>
<a name="l00129"></a>00129 <span class="comment">// simulated PWM in refresh().</span>
<a name="l00130"></a>00130 _holdTime = 20000 / _count / 4;
<a name="l00131"></a>00131
<a name="l00132"></a>00132 <span class="comment">// Allocate the pin arrays and populate them. Doing this now makes</span>
<a name="l00133"></a>00133 <span class="comment">// refresh() more efficient later, at the expense of some memory.</span>
<a name="l00134"></a>00134 _pins1 = (uint8_t *)malloc(_count);
<a name="l00135"></a>00135 _pins2 = (uint8_t *)malloc(_count);
<a name="l00136"></a>00136 <span class="keywordtype">int</span> n = 0;
<a name="l00137"></a>00137 <span class="keywordflow">for</span> (uint8_t pass = 1; pass &lt; numPins; ++pass) {
<a name="l00138"></a>00138 <span class="keywordflow">for</span> (uint8_t pin = 0; pin &lt; (numPins - pass); ++pin) {
<a name="l00139"></a>00139 _pins1[n] = _pins2[n + 1] = pins[pin];
<a name="l00140"></a>00140 _pins2[n] = _pins1[n + 1] = pins[pin + pass];
<a name="l00141"></a>00141 n += 2;
<a name="l00142"></a>00142 }
<a name="l00143"></a>00143 }
<a name="l00144"></a>00144
<a name="l00145"></a>00145 <span class="comment">// Allocate space for the LED value array and zero it.</span>
<a name="l00146"></a>00146 _values = (uint8_t *)malloc(_count);
<a name="l00147"></a>00147 memset(_values, 0, _count);
<a name="l00148"></a>00148
<a name="l00149"></a>00149 <span class="comment">// Start with all pins configured as floating inputs (all LED&#39;s off).</span>
<a name="l00150"></a>00150 <span class="keywordflow">for</span> (uint8_t pin = 0; pin &lt; numPins; ++pin) {
<a name="l00151"></a>00151 digitalWrite(pins[pin], LOW);
<a name="l00152"></a>00152 pinMode(pins[pin], INPUT);
<a name="l00153"></a>00153 }
<a name="l00154"></a>00154 }
<a name="l00155"></a>00155
<a name="l00159"></a><a class="code" href="classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103">00159</a> <a class="code" href="classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103" title="Destroys this charlieplexed array.">Charlieplex::~Charlieplex</a>()
<a name="l00160"></a>00160 {
<a name="l00161"></a>00161 free(_pins1);
<a name="l00162"></a>00162 free(_pins2);
<a name="l00163"></a>00163 free(_values);
<a name="l00164"></a>00164 }
<a name="l00165"></a>00165
<a name="l00277"></a><a class="code" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a">00277</a> <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">Charlieplex::loop</a>()
<a name="l00278"></a>00278 {
<a name="l00279"></a>00279 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> us = micros();
<a name="l00280"></a>00280 <span class="keywordflow">if</span> ((us - _lastTime) &gt;= _holdTime) {
<a name="l00281"></a>00281 _lastTime = us;
<a name="l00282"></a>00282 <a class="code" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b" title="Refreshes the charlieplexed array by advancing to the next LED that needs to be lit.">refresh</a>();
<a name="l00283"></a>00283 }
<a name="l00284"></a>00284 }
<a name="l00285"></a>00285
<a name="l00296"></a><a class="code" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b">00296</a> <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b" title="Refreshes the charlieplexed array by advancing to the next LED that needs to be lit.">Charlieplex::refresh</a>()
<a name="l00297"></a>00297 {
<a name="l00298"></a>00298 <span class="comment">// Find the next LED to be lit.</span>
<a name="l00299"></a>00299 <span class="keywordtype">int</span> prevIndex = _currentIndex;
<a name="l00300"></a>00300 <span class="keywordtype">int</span> limit = _count;
<a name="l00301"></a>00301 <span class="keywordflow">while</span> (limit &gt;= 0) {
<a name="l00302"></a>00302 _currentIndex = (_currentIndex + 1) % _count;
<a name="l00303"></a>00303 <span class="keywordflow">if</span> (_values[_currentIndex] != 0)
<a name="l00304"></a>00304 <span class="keywordflow">break</span>;
<a name="l00305"></a>00305 --limit;
<a name="l00306"></a>00306 }
<a name="l00307"></a>00307 <span class="keywordflow">if</span> (limit &lt; 0) {
<a name="l00308"></a>00308 <span class="comment">// No LED&#39;s are lit. Turn off the previous LED and exit.</span>
<a name="l00309"></a>00309 <span class="keywordflow">if</span> (prevIndex != -1) {
<a name="l00310"></a>00310 digitalWrite(_pins1[prevIndex], LOW);
<a name="l00311"></a>00311 digitalWrite(_pins2[prevIndex], LOW);
<a name="l00312"></a>00312 pinMode(_pins1[prevIndex], INPUT);
<a name="l00313"></a>00313 pinMode(_pins2[prevIndex], INPUT);
<a name="l00314"></a>00314 }
<a name="l00315"></a>00315 _currentIndex = -1;
<a name="l00316"></a>00316 <span class="keywordflow">return</span>;
<a name="l00317"></a>00317 }
<a name="l00318"></a>00318
<a name="l00319"></a>00319 <span class="comment">// Light the current LED.</span>
<a name="l00320"></a>00320 uint8_t value = _values[_currentIndex];
<a name="l00321"></a>00321 uint8_t pin1 = _pins1[_currentIndex];
<a name="l00322"></a>00322 uint8_t pin2 = _pins2[_currentIndex];
<a name="l00323"></a>00323 _pwmPhase += 0x40;
<a name="l00324"></a>00324 <span class="keywordflow">if</span> (prevIndex != _currentIndex) {
<a name="l00325"></a>00325 <span class="comment">// Turn off the previous LED.</span>
<a name="l00326"></a>00326 <span class="keywordflow">if</span> (prevIndex != -1) {
<a name="l00327"></a>00327 digitalWrite(_pins1[prevIndex], LOW);
<a name="l00328"></a>00328 digitalWrite(_pins2[prevIndex], LOW);
<a name="l00329"></a>00329 pinMode(_pins1[prevIndex], INPUT);
<a name="l00330"></a>00330 pinMode(_pins2[prevIndex], INPUT);
<a name="l00331"></a>00331 }
<a name="l00332"></a>00332
<a name="l00333"></a>00333 <span class="comment">// We simulate PWM using a phase counter because analogWrite()</span>
<a name="l00334"></a>00334 <span class="comment">// combined with holdTime() causes too much flickering if more</span>
<a name="l00335"></a>00335 <span class="comment">// than one LED is lit. This reduces the PWM resolution to 1 in 4.</span>
<a name="l00336"></a>00336 pinMode(pin1, OUTPUT);
<a name="l00337"></a>00337 pinMode(pin2, OUTPUT);
<a name="l00338"></a>00338 <span class="keywordflow">if</span> (value &gt; _pwmPhase)
<a name="l00339"></a>00339 digitalWrite(pin1, HIGH);
<a name="l00340"></a>00340 <span class="keywordflow">else</span>
<a name="l00341"></a>00341 digitalWrite(pin1, LOW);
<a name="l00342"></a>00342 } <span class="keywordflow">else</span> {
<a name="l00343"></a>00343 <span class="comment">// Same LED as previous. Since there is only a single LED</span>
<a name="l00344"></a>00344 <span class="comment">// that is lit, we can use analogWrite() to set the PWM state.</span>
<a name="l00345"></a>00345 <span class="keywordflow">if</span> (value == 255)
<a name="l00346"></a>00346 digitalWrite(pin1, HIGH);
<a name="l00347"></a>00347 <span class="keywordflow">else</span>
<a name="l00348"></a>00348 analogWrite(pin1, value);
<a name="l00349"></a>00349 }
<a name="l00350"></a>00350 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -213,8 +77,159 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_1586d320a3b1e622174530fde769cda9.html">BlinkLED</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Charlieplex.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;Charlieplex.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00121"></a><span class="lineno"><a class="code" href="classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd"> 121</a></span>&#160;<a class="code" href="classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd" title="Constructs a new charliexplexing array where the output pins are specified by the numPins entries in ...">Charlieplex::Charlieplex</a>(<span class="keyword">const</span> uint8_t *pins, uint8_t numPins)</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; : _count(((int)numPins) * (numPins - 1))</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; , _lastTime(micros())</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; , _currentIndex(-1)</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; , _pwmPhase(0xC0)</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; <span class="comment">// Determine the best hold time for 50 Hz refresh when all LED&#39;s</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">// are lit. Divide it again by 4 (to get 200 Hz) to manage the</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">// simulated PWM in refresh().</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; _holdTime = 20000 / _count / 4;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="comment">// Allocate the pin arrays and populate them. Doing this now makes</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">// refresh() more efficient later, at the expense of some memory.</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; _pins1 = (uint8_t *)malloc(_count);</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; _pins2 = (uint8_t *)malloc(_count);</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">int</span> n = 0;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">for</span> (uint8_t pass = 1; pass &lt; numPins; ++pass) {</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">for</span> (uint8_t pin = 0; pin &lt; (numPins - pass); ++pin) {</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; _pins1[n] = _pins2[n + 1] = pins[pin];</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; _pins2[n] = _pins1[n + 1] = pins[pin + pass];</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; n += 2;</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; }</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// Allocate space for the LED value array and zero it.</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; _values = (uint8_t *)malloc(_count);</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; memset(_values, 0, _count);</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="comment">// Start with all pins configured as floating inputs (all LED&#39;s off).</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">for</span> (uint8_t pin = 0; pin &lt; numPins; ++pin) {</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; digitalWrite(pins[pin], LOW);</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; pinMode(pins[pin], INPUT);</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;</div>
<div class="line"><a name="l00159"></a><span class="lineno"><a class="code" href="classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103"> 159</a></span>&#160;<a class="code" href="classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103" title="Destroys this charlieplexed array.">Charlieplex::~Charlieplex</a>()</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; free(_pins1);</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; free(_pins2);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; free(_values);</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;</div>
<div class="line"><a name="l00277"></a><span class="lineno"><a class="code" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a"> 277</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">Charlieplex::loop</a>()</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;{</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> us = micros();</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> ((us - _lastTime) &gt;= _holdTime) {</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; _lastTime = us;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b" title="Refreshes the charlieplexed array by advancing to the next LED that needs to be lit.">refresh</a>();</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</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;</div>
<div class="line"><a name="l00296"></a><span class="lineno"><a class="code" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b"> 296</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b" title="Refreshes the charlieplexed array by advancing to the next LED that needs to be lit.">Charlieplex::refresh</a>()</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; <span class="comment">// Find the next LED to be lit.</span></div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordtype">int</span> prevIndex = _currentIndex;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordtype">int</span> limit = _count;</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">while</span> (limit &gt;= 0) {</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; _currentIndex = (_currentIndex + 1) % _count;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span> (_values[_currentIndex] != 0)</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; --limit;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (limit &lt; 0) {</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="comment">// No LED&#39;s are lit. Turn off the previous LED and exit.</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (prevIndex != -1) {</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; digitalWrite(_pins1[prevIndex], LOW);</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; digitalWrite(_pins2[prevIndex], LOW);</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; pinMode(_pins1[prevIndex], INPUT);</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; pinMode(_pins2[prevIndex], INPUT);</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; _currentIndex = -1;</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span>;</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;</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="comment">// Light the current LED.</span></div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; uint8_t value = _values[_currentIndex];</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; uint8_t pin1 = _pins1[_currentIndex];</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; uint8_t pin2 = _pins2[_currentIndex];</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; _pwmPhase += 0x40;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">if</span> (prevIndex != _currentIndex) {</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="comment">// Turn off the previous LED.</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span> (prevIndex != -1) {</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; digitalWrite(_pins1[prevIndex], LOW);</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; digitalWrite(_pins2[prevIndex], LOW);</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; pinMode(_pins1[prevIndex], INPUT);</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; pinMode(_pins2[prevIndex], INPUT);</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="comment">// We simulate PWM using a phase counter because analogWrite()</span></div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="comment">// combined with holdTime() causes too much flickering if more</span></div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="comment">// than one LED is lit. This reduces the PWM resolution to 1 in 4.</span></div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; pinMode(pin1, OUTPUT);</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; pinMode(pin2, OUTPUT);</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">if</span> (value &gt; _pwmPhase)</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; digitalWrite(pin1, HIGH);</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; digitalWrite(pin1, LOW);</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="comment">// Same LED as previous. Since there is only a single LED</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="comment">// that is lit, we can use analogWrite() to set the PWM state.</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">if</span> (value == 255)</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; digitalWrite(pin1, HIGH);</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; analogWrite(pin1, value);</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Charlieplex.h Source File</title> <title>ArduinoLibs: Charlieplex.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,78 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">Charlieplex.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef Charlieplex_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define Charlieplex_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
<a name="l00027"></a>00027
<a name="l00028"></a><a class="code" href="classCharlieplex.html">00028</a> <span class="keyword">class </span><a class="code" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a>
<a name="l00029"></a>00029 {
<a name="l00030"></a>00030 <span class="keyword">public</span>:
<a name="l00031"></a>00031 <a class="code" href="classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd" title="Constructs a new charliexplexing array where the output pins are specified by the numPins entries in ...">Charlieplex</a>(<span class="keyword">const</span> uint8_t *pins, uint8_t numPins);
<a name="l00032"></a>00032 <a class="code" href="classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103" title="Destroys this charlieplexed array.">~Charlieplex</a>();
<a name="l00033"></a>00033
<a name="l00034"></a><a class="code" href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e">00034</a> <span class="keywordtype">int</span> <a class="code" href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e" title="Returns the number of LED&#39;s in this charlieplexed array based on the number of pins.">count</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _count; }
<a name="l00035"></a>00035
<a name="l00036"></a><a class="code" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d">00036</a> <span class="keywordtype">bool</span> <a class="code" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d" title="Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...">led</a>(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _values[index] != 0; }
<a name="l00037"></a><a class="code" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5">00037</a> <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5" title="Sets the value of the LED at index in the charliplexed array.">setLed</a>(<span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> value) { _values[index] = (value ? 255 : 0); }
<a name="l00038"></a>00038
<a name="l00039"></a><a class="code" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6">00039</a> uint8_t <a class="code" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6" title="Returns the PWM value of the LED at index in the charplexed array; between 0 and 255.">pwmLed</a>(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _values[index]; }
<a name="l00040"></a><a class="code" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b">00040</a> <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b" title="Sets the PWM value of the LED at index in the charliplexed array; between 0 and 255.">setPwmLed</a>(<span class="keywordtype">int</span> index, uint8_t value) { _values[index] = value; }
<a name="l00041"></a>00041
<a name="l00042"></a><a class="code" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30">00042</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30" title="Returns the number of microseconds that each LED should be held on for before moving onto the next in...">holdTime</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _holdTime; }
<a name="l00043"></a><a class="code" href="classCharlieplex.html#a8502f4c752faba37023ced587695f6a4">00043</a> <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a8502f4c752faba37023ced587695f6a4" title="Sets the number of microseconds that each LED should be held on for before moving onto the next in lo...">setHoldTime</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> us) { _holdTime = us; }
<a name="l00044"></a>00044
<a name="l00045"></a>00045 <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop</a>();
<a name="l00046"></a>00046 <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b" title="Refreshes the charlieplexed array by advancing to the next LED that needs to be lit.">refresh</a>();
<a name="l00047"></a>00047
<a name="l00048"></a>00048 <span class="keyword">private</span>:
<a name="l00049"></a>00049 <span class="keywordtype">int</span> _count;
<a name="l00050"></a>00050 uint8_t *_pins1;
<a name="l00051"></a>00051 uint8_t *_pins2;
<a name="l00052"></a>00052 uint8_t *_values;
<a name="l00053"></a>00053 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _holdTime;
<a name="l00054"></a>00054 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _lastTime;
<a name="l00055"></a>00055 <span class="keywordtype">int</span> _currentIndex;
<a name="l00056"></a>00056 uint8_t _pwmPhase;
<a name="l00057"></a>00057 };
<a name="l00058"></a>00058
<a name="l00059"></a>00059 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -135,8 +77,81 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_1586d320a3b1e622174530fde769cda9.html">BlinkLED</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Charlieplex.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef Charlieplex_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define Charlieplex_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="classCharlieplex.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd" title="Constructs a new charliexplexing array where the output pins are specified by the numPins entries in ...">Charlieplex</a>(<span class="keyword">const</span> uint8_t *pins, uint8_t numPins);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103" title="Destroys this charlieplexed array.">~Charlieplex</a>();</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e"> 34</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e" title="Returns the number of LED&#39;s in this charlieplexed array based on the number of pins.">count</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _count; }</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"><a class="code" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d"> 36</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d" title="Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...">led</a>(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _values[index] != 0; }</div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="code" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5"> 37</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5" title="Sets the value of the LED at index in the charliplexed array.">setLed</a>(<span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> value) { _values[index] = (value ? 255 : 0); }</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6"> 39</a></span>&#160; uint8_t <a class="code" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6" title="Returns the PWM value of the LED at index in the charplexed array; between 0 and 255.">pwmLed</a>(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _values[index]; }</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b"> 40</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b" title="Sets the PWM value of the LED at index in the charliplexed array; between 0 and 255.">setPwmLed</a>(<span class="keywordtype">int</span> index, uint8_t value) { _values[index] = value; }</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"><a class="code" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30"> 42</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30" title="Returns the number of microseconds that each LED should be held on for before moving onto the next in...">holdTime</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _holdTime; }</div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="classCharlieplex.html#a8502f4c752faba37023ced587695f6a4"> 43</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a8502f4c752faba37023ced587695f6a4" title="Sets the number of microseconds that each LED should be held on for before moving onto the next in lo...">setHoldTime</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> us) { _holdTime = us; }</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; <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop</a>();</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b" title="Refreshes the charlieplexed array by advancing to the next LED that needs to be lit.">refresh</a>();</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="keyword">private</span>:</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">int</span> _count;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; uint8_t *_pins1;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; uint8_t *_pins2;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; uint8_t *_values;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _holdTime;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _lastTime;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">int</span> _currentIndex;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; uint8_t _pwmPhase;</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;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: ChaseLEDs.cpp Source File</title> <title>ArduinoLibs: ChaseLEDs.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,84 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">ChaseLEDs.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;ChaseLEDs.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#else</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#endif</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span>
<a name="l00071"></a><a class="code" href="classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78">00071</a> <a class="code" href="classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78" title="Initializes the LED chaser.">ChaseLEDs::ChaseLEDs</a>(<span class="keyword">const</span> uint8_t *pins, <span class="keywordtype">int</span> num, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> advanceTime)
<a name="l00072"></a>00072 : _pins(pins)
<a name="l00073"></a>00073 , _numPins(num)
<a name="l00074"></a>00074 , _currentIndex(-1)
<a name="l00075"></a>00075 , _advanceTime(advanceTime)
<a name="l00076"></a>00076 , _lastChange(millis())
<a name="l00077"></a>00077 {
<a name="l00078"></a>00078 <span class="keywordflow">for</span> (uint8_t index = 0; index &lt; _numPins; ++index) {
<a name="l00079"></a>00079 pinMode(_pins[index], OUTPUT);
<a name="l00080"></a>00080 digitalWrite(_pins[index], LOW);
<a name="l00081"></a>00081 }
<a name="l00082"></a>00082 }
<a name="l00083"></a>00083
<a name="l00087"></a><a class="code" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">00087</a> <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">ChaseLEDs::loop</a>()
<a name="l00088"></a>00088 {
<a name="l00089"></a>00089 <span class="keywordflow">if</span> (_currentIndex &gt;= 0) {
<a name="l00090"></a>00090 <span class="keywordflow">if</span> ((millis() - _lastChange) &gt;= _advanceTime) {
<a name="l00091"></a>00091 <span class="comment">// Advance to the next LED in sequence.</span>
<a name="l00092"></a>00092 _currentIndex = (_currentIndex + 1) % _numPins;
<a name="l00093"></a>00093 _lastChange += _advanceTime;
<a name="l00094"></a>00094 <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance</a>(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(1), _pins[_currentIndex]);
<a name="l00095"></a>00095 }
<a name="l00096"></a>00096 } <span class="keywordflow">else</span> {
<a name="l00097"></a>00097 <span class="comment">// First time - light the first LED.</span>
<a name="l00098"></a>00098 _currentIndex = 0;
<a name="l00099"></a>00099 _lastChange = millis();
<a name="l00100"></a>00100 <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance</a>(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(1), _pins[_currentIndex]);
<a name="l00101"></a>00101 }
<a name="l00102"></a>00102 }
<a name="l00103"></a>00103
<a name="l00136"></a><a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b">00136</a> <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">ChaseLEDs::advance</a>(uint8_t prevPin, uint8_t nextPin)
<a name="l00137"></a>00137 {
<a name="l00138"></a>00138 digitalWrite(prevPin, LOW);
<a name="l00139"></a>00139 digitalWrite(nextPin, HIGH);
<a name="l00140"></a>00140 }
<a name="l00141"></a>00141
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -141,8 +77,87 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_1586d320a3b1e622174530fde769cda9.html">BlinkLED</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ChaseLEDs.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;ChaseLEDs.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78"> 71</a></span>&#160;<a class="code" href="classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78" title="Initializes the LED chaser.">ChaseLEDs::ChaseLEDs</a>(<span class="keyword">const</span> uint8_t *pins, <span class="keywordtype">int</span> num, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> advanceTime)</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; : _pins(pins)</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; , _numPins(num)</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; , _currentIndex(-1)</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; , _advanceTime(advanceTime)</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; , _lastChange(millis())</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">for</span> (uint8_t index = 0; index &lt; _numPins; ++index) {</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; pinMode(_pins[index], OUTPUT);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; digitalWrite(_pins[index], LOW);</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;}</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786"> 87</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">ChaseLEDs::loop</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; <span class="keywordflow">if</span> (_currentIndex &gt;= 0) {</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">if</span> ((millis() - _lastChange) &gt;= _advanceTime) {</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">// Advance to the next LED in sequence.</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; _currentIndex = (_currentIndex + 1) % _numPins;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; _lastChange += _advanceTime;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance</a>(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(1), _pins[_currentIndex]);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// First time - light the first LED.</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; _currentIndex = 0;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; _lastChange = millis();</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance</a>(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(1), _pins[_currentIndex]);</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;}</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
<div class="line"><a name="l00136"></a><span class="lineno"><a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b"> 136</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">ChaseLEDs::advance</a>(uint8_t prevPin, uint8_t nextPin)</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; digitalWrite(prevPin, LOW);</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; digitalWrite(nextPin, HIGH);</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;</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: ChaseLEDs.h Source File</title> <title>ArduinoLibs: ChaseLEDs.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,70 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">ChaseLEDs.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef ChaseLEDs_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define ChaseLEDs_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
<a name="l00027"></a>00027
<a name="l00028"></a><a class="code" href="classChaseLEDs.html">00028</a> <span class="keyword">class </span><a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>
<a name="l00029"></a>00029 {
<a name="l00030"></a>00030 <span class="keyword">public</span>:
<a name="l00031"></a>00031 <a class="code" href="classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78" title="Initializes the LED chaser.">ChaseLEDs</a>(<span class="keyword">const</span> uint8_t *pins, <span class="keywordtype">int</span> num, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700" title="Returns the number of milliseconds that each LED will be lit in the chase sequence.">advanceTime</a>);
<a name="l00032"></a>00032
<a name="l00033"></a>00033 <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">loop</a>();
<a name="l00034"></a>00034
<a name="l00035"></a><a class="code" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700">00035</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700" title="Returns the number of milliseconds that each LED will be lit in the chase sequence.">advanceTime</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _advanceTime; }
<a name="l00036"></a><a class="code" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7">00036</a> <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7" title="Sets the number of milliseconds to advance between LED&#39;s to advanceTime.">setAdvanceTime</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> advanceTime) { _advanceTime = <a class="code" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700" title="Returns the number of milliseconds that each LED will be lit in the chase sequence.">advanceTime</a>; }
<a name="l00037"></a>00037
<a name="l00038"></a>00038 <span class="keyword">protected</span>:
<a name="l00039"></a>00039 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance</a>(uint8_t prevPin, uint8_t nextPin);
<a name="l00040"></a><a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525">00040</a> uint8_t <a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(<span class="keywordtype">int</span> n)<span class="keyword"> const</span>
<a name="l00041"></a>00041 <span class="keyword"> </span>{ <span class="keywordflow">return</span> _pins[(_currentIndex + _numPins - n) % _numPins]; }
<a name="l00042"></a>00042
<a name="l00043"></a>00043 <span class="keyword">private</span>:
<a name="l00044"></a>00044 <span class="keyword">const</span> uint8_t *_pins;
<a name="l00045"></a>00045 <span class="keywordtype">int</span> _numPins;
<a name="l00046"></a>00046 <span class="keywordtype">int</span> _currentIndex;
<a name="l00047"></a>00047 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _advanceTime;
<a name="l00048"></a>00048 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _lastChange;
<a name="l00049"></a>00049 };
<a name="l00050"></a>00050
<a name="l00051"></a>00051 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -127,8 +77,73 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_1586d320a3b1e622174530fde769cda9.html">BlinkLED</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ChaseLEDs.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef ChaseLEDs_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ChaseLEDs_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="classChaseLEDs.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78" title="Initializes the LED chaser.">ChaseLEDs</a>(<span class="keyword">const</span> uint8_t *pins, <span class="keywordtype">int</span> num, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700" title="Returns the number of milliseconds that each LED will be lit in the chase sequence.">advanceTime</a>);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">loop</a>();</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"><a class="code" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700"> 35</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700" title="Returns the number of milliseconds that each LED will be lit in the chase sequence.">advanceTime</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _advanceTime; }</div>
<div class="line"><a name="l00036"></a><span class="lineno"><a class="code" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7"> 36</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7" title="Sets the number of milliseconds to advance between LED&#39;s to advanceTime.">setAdvanceTime</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> advanceTime) { _advanceTime = <a class="code" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700" title="Returns the number of milliseconds that each LED will be lit in the chase sequence.">advanceTime</a>; }</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance</a>(uint8_t prevPin, uint8_t nextPin);</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525"> 40</a></span>&#160; uint8_t <a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(<span class="keywordtype">int</span> n)<span class="keyword"> const</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword"> </span>{ <span class="keywordflow">return</span> _pins[(_currentIndex + _numPins - n) % _numPins]; }</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> uint8_t *_pins;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">int</span> _numPins;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">int</span> _currentIndex;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _advanceTime;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _lastChange;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;};</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: DMD.cpp Source File</title> <title>ArduinoLibs: DMD.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,367 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">DMD.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;DMD.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#else</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#endif</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#include &lt;pins_arduino.h&gt;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;avr/io.h&gt;</span>
<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;avr/interrupt.h&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;string.h&gt;</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
<a name="l00034"></a>00034
<a name="l00210"></a>00210 <span class="comment">// Pins on the DMD connector board.</span>
<a name="l00211"></a>00211 <span class="preprocessor">#define DMD_PIN_PHASE_LSB 6 // A</span>
<a name="l00212"></a>00212 <span class="preprocessor"></span><span class="preprocessor">#define DMD_PIN_PHASE_MSB 7 // B</span>
<a name="l00213"></a>00213 <span class="preprocessor"></span><span class="preprocessor">#define DMD_PIN_LATCH 8 // SCLK</span>
<a name="l00214"></a>00214 <span class="preprocessor"></span><span class="preprocessor">#define DMD_PIN_OUTPUT_ENABLE 9 // nOE</span>
<a name="l00215"></a>00215 <span class="preprocessor"></span><span class="preprocessor">#define DMD_PIN_SPI_SS SS // SPI Slave Select</span>
<a name="l00216"></a>00216 <span class="preprocessor"></span><span class="preprocessor">#define DMD_PIN_SPI_MOSI MOSI // SPI Master Out, Slave In (R)</span>
<a name="l00217"></a>00217 <span class="preprocessor"></span><span class="preprocessor">#define DMD_PIN_SPI_MISO MISO // SPI Master In, Slave Out</span>
<a name="l00218"></a>00218 <span class="preprocessor"></span><span class="preprocessor">#define DMD_PIN_SPI_SCK SCK // SPI Serial Clock (CLK)</span>
<a name="l00219"></a>00219 <span class="preprocessor"></span>
<a name="l00220"></a>00220 <span class="comment">// Dimension information for the display.</span>
<a name="l00221"></a>00221 <span class="preprocessor">#define DMD_NUM_COLUMNS 32 // Number of columns in a panel.</span>
<a name="l00222"></a>00222 <span class="preprocessor"></span><span class="preprocessor">#define DMD_NUM_ROWS 16 // Number of rows in a panel.</span>
<a name="l00223"></a>00223 <span class="preprocessor"></span>
<a name="l00224"></a>00224 <span class="comment">// Refresh times.</span>
<a name="l00225"></a>00225 <span class="preprocessor">#define DMD_REFRESH_MS 5</span>
<a name="l00226"></a>00226 <span class="preprocessor"></span><span class="preprocessor">#define DMD_REFRESH_US 5000</span>
<a name="l00227"></a>00227 <span class="preprocessor"></span>
<a name="l00237"></a><a class="code" href="classDMD.html#affd37accffe951c8878434dfa1245809">00237</a> <a class="code" href="classDMD.html#affd37accffe951c8878434dfa1245809" title="Constructs a new dot matrix display handler for a display that is widthPanels x heightPanels in size...">DMD::DMD</a>(<span class="keywordtype">int</span> widthPanels, <span class="keywordtype">int</span> heightPanels)
<a name="l00238"></a>00238 : <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a>(widthPanels * DMD_NUM_COLUMNS, heightPanels * DMD_NUM_ROWS)
<a name="l00239"></a>00239 , _doubleBuffer(false)
<a name="l00240"></a>00240 , phase(0)
<a name="l00241"></a>00241 , fb0(0)
<a name="l00242"></a>00242 , fb1(0)
<a name="l00243"></a>00243 , displayfb(0)
<a name="l00244"></a>00244 , lastRefresh(millis())
<a name="l00245"></a>00245 {
<a name="l00246"></a>00246 <span class="comment">// Both rendering and display are to fb0 initially.</span>
<a name="l00247"></a>00247 fb0 = displayfb = fb;
<a name="l00248"></a>00248
<a name="l00249"></a>00249 <span class="comment">// Initialize SPI to MSB-first, mode 0, clock divider = 2.</span>
<a name="l00250"></a>00250 pinMode(DMD_PIN_SPI_SCK, OUTPUT);
<a name="l00251"></a>00251 pinMode(DMD_PIN_SPI_MOSI, OUTPUT);
<a name="l00252"></a>00252 pinMode(DMD_PIN_SPI_SS, OUTPUT);
<a name="l00253"></a>00253 digitalWrite(DMD_PIN_SPI_SCK, LOW);
<a name="l00254"></a>00254 digitalWrite(DMD_PIN_SPI_MOSI, LOW);
<a name="l00255"></a>00255 digitalWrite(DMD_PIN_SPI_SS, HIGH);
<a name="l00256"></a>00256 SPCR |= _BV(MSTR);
<a name="l00257"></a>00257 SPCR |= _BV(SPE);
<a name="l00258"></a>00258 SPCR &amp;= ~(_BV(DORD)); <span class="comment">// MSB-first</span>
<a name="l00259"></a>00259 SPCR &amp;= ~0x0C; <span class="comment">// Mode 0</span>
<a name="l00260"></a>00260 SPCR &amp;= ~0x03; <span class="comment">// Clock divider rate 2</span>
<a name="l00261"></a>00261 SPSR |= 0x01; <span class="comment">// MSB of clock divider rate</span>
<a name="l00262"></a>00262
<a name="l00263"></a>00263 <span class="comment">// Initialize the DMD-specific pins.</span>
<a name="l00264"></a>00264 pinMode(DMD_PIN_PHASE_LSB, OUTPUT);
<a name="l00265"></a>00265 pinMode(DMD_PIN_PHASE_MSB, OUTPUT);
<a name="l00266"></a>00266 pinMode(DMD_PIN_LATCH, OUTPUT);
<a name="l00267"></a>00267 pinMode(DMD_PIN_OUTPUT_ENABLE, OUTPUT);
<a name="l00268"></a>00268 digitalWrite(DMD_PIN_PHASE_LSB, LOW);
<a name="l00269"></a>00269 digitalWrite(DMD_PIN_PHASE_MSB, LOW);
<a name="l00270"></a>00270 digitalWrite(DMD_PIN_LATCH, LOW);
<a name="l00271"></a>00271 digitalWrite(DMD_PIN_OUTPUT_ENABLE, LOW);
<a name="l00272"></a>00272 digitalWrite(DMD_PIN_SPI_MOSI, HIGH);
<a name="l00273"></a>00273 }
<a name="l00274"></a>00274
<a name="l00278"></a><a class="code" href="classDMD.html#a7b37e05584d3e0308163700920df99b2">00278</a> <a class="code" href="classDMD.html#a7b37e05584d3e0308163700920df99b2" title="Destroys this dot matrix display handler.">DMD::~DMD</a>()
<a name="l00279"></a>00279 {
<a name="l00280"></a>00280 <span class="keywordflow">if</span> (fb0)
<a name="l00281"></a>00281 free(fb0);
<a name="l00282"></a>00282 <span class="keywordflow">if</span> (fb1)
<a name="l00283"></a>00283 free(fb1);
<a name="l00284"></a>00284 fb = 0; <span class="comment">// Don&#39;t free the buffer again in the base class.</span>
<a name="l00285"></a>00285 }
<a name="l00286"></a>00286
<a name="l00314"></a><a class="code" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723">00314</a> <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">DMD::setDoubleBuffer</a>(<span class="keywordtype">bool</span> doubleBuffer)
<a name="l00315"></a>00315 {
<a name="l00316"></a>00316 <span class="keywordflow">if</span> (doubleBuffer != _doubleBuffer) {
<a name="l00317"></a>00317 _doubleBuffer = <a class="code" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec" title="Returns true if the display is double-buffered; false if single-buffered. The default is false...">doubleBuffer</a>;
<a name="l00318"></a>00318 <span class="keywordflow">if</span> (doubleBuffer) {
<a name="l00319"></a>00319 <span class="comment">// Allocate a new back buffer.</span>
<a name="l00320"></a>00320 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size = _stride * _height;
<a name="l00321"></a>00321 fb1 = (uint8_t *)malloc(size);
<a name="l00322"></a>00322
<a name="l00323"></a>00323 <span class="comment">// Clear the new back buffer and then switch to it, leaving</span>
<a name="l00324"></a>00324 <span class="comment">// the current contents of fb0 on the screen.</span>
<a name="l00325"></a>00325 <span class="keywordflow">if</span> (fb1) {
<a name="l00326"></a>00326 memset(fb1, 0xFF, size);
<a name="l00327"></a>00327 cli();
<a name="l00328"></a>00328 fb = fb1;
<a name="l00329"></a>00329 displayfb = fb0;
<a name="l00330"></a>00330 sei();
<a name="l00331"></a>00331 } <span class="keywordflow">else</span> {
<a name="l00332"></a>00332 <span class="comment">// Failed to allocate the memory, so revert to single-buffered.</span>
<a name="l00333"></a>00333 _doubleBuffer = <span class="keyword">false</span>;
<a name="l00334"></a>00334 }
<a name="l00335"></a>00335 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fb1) {
<a name="l00336"></a>00336 <span class="comment">// Disabling double-buffering, so forcibly switch to fb0.</span>
<a name="l00337"></a>00337 cli();
<a name="l00338"></a>00338 fb = fb0;
<a name="l00339"></a>00339 displayfb = fb0;
<a name="l00340"></a>00340 sei();
<a name="l00341"></a>00341
<a name="l00342"></a>00342 <span class="comment">// Free the unnecessary buffer.</span>
<a name="l00343"></a>00343 free(fb1);
<a name="l00344"></a>00344 fb1 = 0;
<a name="l00345"></a>00345 }
<a name="l00346"></a>00346 }
<a name="l00347"></a>00347 }
<a name="l00348"></a>00348
<a name="l00363"></a><a class="code" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a">00363</a> <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">DMD::swapBuffers</a>()
<a name="l00364"></a>00364 {
<a name="l00365"></a>00365 <span class="keywordflow">if</span> (_doubleBuffer) {
<a name="l00366"></a>00366 <span class="comment">// Turn off interrupts while swapping buffers so that we don&#39;t</span>
<a name="l00367"></a>00367 <span class="comment">// accidentally try to refresh() in the middle of this code.</span>
<a name="l00368"></a>00368 cli();
<a name="l00369"></a>00369 <span class="keywordflow">if</span> (fb == fb0) {
<a name="l00370"></a>00370 fb = fb1;
<a name="l00371"></a>00371 displayfb = fb0;
<a name="l00372"></a>00372 } <span class="keywordflow">else</span> {
<a name="l00373"></a>00373 fb = fb0;
<a name="l00374"></a>00374 displayfb = fb1;
<a name="l00375"></a>00375 }
<a name="l00376"></a>00376 sei();
<a name="l00377"></a>00377 }
<a name="l00378"></a>00378 }
<a name="l00379"></a>00379
<a name="l00396"></a><a class="code" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736">00396</a> <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736" title="Swaps the buffers that are used for rendering to the display and copies the former back buffer conten...">DMD::swapBuffersAndCopy</a>()
<a name="l00397"></a>00397 {
<a name="l00398"></a>00398 <a class="code" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers</a>();
<a name="l00399"></a>00399 <span class="keywordflow">if</span> (_doubleBuffer)
<a name="l00400"></a>00400 memcpy(fb, displayfb, _stride * _height);
<a name="l00401"></a>00401 }
<a name="l00402"></a>00402
<a name="l00420"></a><a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114">00420</a> <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">DMD::loop</a>()
<a name="l00421"></a>00421 {
<a name="l00422"></a>00422 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> currentTime = millis();
<a name="l00423"></a>00423 <span class="keywordflow">if</span> ((currentTime - lastRefresh) &gt;= DMD_REFRESH_MS) {
<a name="l00424"></a>00424 lastRefresh = currentTime;
<a name="l00425"></a>00425 <a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();
<a name="l00426"></a>00426 }
<a name="l00427"></a>00427 }
<a name="l00428"></a>00428
<a name="l00429"></a>00429 <span class="comment">// Send a single byte via SPI.</span>
<a name="l00430"></a>00430 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> spiSend(byte value)
<a name="l00431"></a>00431 {
<a name="l00432"></a>00432 SPDR = value;
<a name="l00433"></a>00433 <span class="keywordflow">while</span> (!(SPSR &amp; _BV(SPIF)))
<a name="l00434"></a>00434 ; <span class="comment">// Wait for the transfer to complete.</span>
<a name="l00435"></a>00435 }
<a name="l00436"></a>00436
<a name="l00437"></a>00437 <span class="comment">// Flip the bits in a byte. Table generated by genflip.c</span>
<a name="l00438"></a>00438 <span class="keyword">static</span> <span class="keyword">const</span> uint8_t flipBits[256] PROGMEM = {
<a name="l00439"></a>00439 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, 0x10, 0x90, 0x50, 0xD0,
<a name="l00440"></a>00440 0x30, 0xB0, 0x70, 0xF0, 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8,
<a name="l00441"></a>00441 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, 0x04, 0x84, 0x44, 0xC4,
<a name="l00442"></a>00442 0x24, 0xA4, 0x64, 0xE4, 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4,
<a name="l00443"></a>00443 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, 0x1C, 0x9C, 0x5C, 0xDC,
<a name="l00444"></a>00444 0x3C, 0xBC, 0x7C, 0xFC, 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2,
<a name="l00445"></a>00445 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, 0x0A, 0x8A, 0x4A, 0xCA,
<a name="l00446"></a>00446 0x2A, 0xAA, 0x6A, 0xEA, 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA,
<a name="l00447"></a>00447 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, 0x16, 0x96, 0x56, 0xD6,
<a name="l00448"></a>00448 0x36, 0xB6, 0x76, 0xF6, 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE,
<a name="l00449"></a>00449 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, 0x01, 0x81, 0x41, 0xC1,
<a name="l00450"></a>00450 0x21, 0xA1, 0x61, 0xE1, 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1,
<a name="l00451"></a>00451 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, 0x19, 0x99, 0x59, 0xD9,
<a name="l00452"></a>00452 0x39, 0xB9, 0x79, 0xF9, 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5,
<a name="l00453"></a>00453 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, 0x0D, 0x8D, 0x4D, 0xCD,
<a name="l00454"></a>00454 0x2D, 0xAD, 0x6D, 0xED, 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD,
<a name="l00455"></a>00455 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, 0x13, 0x93, 0x53, 0xD3,
<a name="l00456"></a>00456 0x33, 0xB3, 0x73, 0xF3, 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB,
<a name="l00457"></a>00457 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, 0x07, 0x87, 0x47, 0xC7,
<a name="l00458"></a>00458 0x27, 0xA7, 0x67, 0xE7, 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7,
<a name="l00459"></a>00459 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, 0x1F, 0x9F, 0x5F, 0xDF,
<a name="l00460"></a>00460 0x3F, 0xBF, 0x7F, 0xFF
<a name="l00461"></a>00461 };
<a name="l00462"></a>00462
<a name="l00478"></a><a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8">00478</a> <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">DMD::refresh</a>()
<a name="l00479"></a>00479 {
<a name="l00480"></a>00480 <span class="comment">// Bail out if there is a conflict on the SPI bus.</span>
<a name="l00481"></a>00481 <span class="keywordflow">if</span> (!digitalRead(DMD_PIN_SPI_SS))
<a name="l00482"></a>00482 <span class="keywordflow">return</span>;
<a name="l00483"></a>00483
<a name="l00484"></a>00484 <span class="comment">// Transfer the data for the next group of interleaved rows.</span>
<a name="l00485"></a>00485 <span class="keywordtype">int</span> stride4 = _stride * 4;
<a name="l00486"></a>00486 uint8_t *data0;
<a name="l00487"></a>00487 uint8_t *data1;
<a name="l00488"></a>00488 uint8_t *data2;
<a name="l00489"></a>00489 uint8_t *data3;
<a name="l00490"></a>00490 <span class="keywordtype">bool</span> flipRow = ((_height &amp; 0x10) == 0);
<a name="l00491"></a>00491 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> y = 0; y &lt; _height; y += 16) {
<a name="l00492"></a>00492 <span class="keywordflow">if</span> (!flipRow) {
<a name="l00493"></a>00493 <span class="comment">// The panels in this row are the right way up.</span>
<a name="l00494"></a>00494 data0 = displayfb + _stride * (y + phase);
<a name="l00495"></a>00495 data1 = data0 + stride4;
<a name="l00496"></a>00496 data2 = data1 + stride4;
<a name="l00497"></a>00497 data3 = data2 + stride4;
<a name="l00498"></a>00498 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = _stride; x &gt; 0; --x) {
<a name="l00499"></a>00499 spiSend(*data3++);
<a name="l00500"></a>00500 spiSend(*data2++);
<a name="l00501"></a>00501 spiSend(*data1++);
<a name="l00502"></a>00502 spiSend(*data0++);
<a name="l00503"></a>00503 }
<a name="l00504"></a>00504 flipRow = <span class="keyword">true</span>;
<a name="l00505"></a>00505 } <span class="keywordflow">else</span> {
<a name="l00506"></a>00506 <span class="comment">// The panels in this row are upside-down and reversed.</span>
<a name="l00507"></a>00507 data0 = displayfb + _stride * (y + 16 - phase) - 1;
<a name="l00508"></a>00508 data1 = data0 - stride4;
<a name="l00509"></a>00509 data2 = data1 - stride4;
<a name="l00510"></a>00510 data3 = data2 - stride4;
<a name="l00511"></a>00511 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = _stride; x &gt; 0; --x) {
<a name="l00512"></a>00512 spiSend(pgm_read_byte(&amp;(flipBits[*data3--])));
<a name="l00513"></a>00513 spiSend(pgm_read_byte(&amp;(flipBits[*data2--])));
<a name="l00514"></a>00514 spiSend(pgm_read_byte(&amp;(flipBits[*data1--])));
<a name="l00515"></a>00515 spiSend(pgm_read_byte(&amp;(flipBits[*data0--])));
<a name="l00516"></a>00516 }
<a name="l00517"></a>00517 flipRow = <span class="keyword">false</span>;
<a name="l00518"></a>00518 }
<a name="l00519"></a>00519 }
<a name="l00520"></a>00520
<a name="l00521"></a>00521 <span class="comment">// Latch the data from the shift registers onto the actual display.</span>
<a name="l00522"></a>00522 digitalWrite(DMD_PIN_OUTPUT_ENABLE, LOW);
<a name="l00523"></a>00523 digitalWrite(DMD_PIN_LATCH, HIGH);
<a name="l00524"></a>00524 digitalWrite(DMD_PIN_LATCH, LOW);
<a name="l00525"></a>00525 <span class="keywordflow">if</span> (phase &amp; 0x02)
<a name="l00526"></a>00526 digitalWrite(DMD_PIN_PHASE_MSB, HIGH);
<a name="l00527"></a>00527 <span class="keywordflow">else</span>
<a name="l00528"></a>00528 digitalWrite(DMD_PIN_PHASE_MSB, LOW);
<a name="l00529"></a>00529 <span class="keywordflow">if</span> (phase &amp; 0x01)
<a name="l00530"></a>00530 digitalWrite(DMD_PIN_PHASE_LSB, HIGH);
<a name="l00531"></a>00531 <span class="keywordflow">else</span>
<a name="l00532"></a>00532 digitalWrite(DMD_PIN_PHASE_LSB, LOW);
<a name="l00533"></a>00533 digitalWrite(DMD_PIN_OUTPUT_ENABLE, HIGH);
<a name="l00534"></a>00534 phase = (phase + 1) &amp; 0x03;
<a name="l00535"></a>00535 }
<a name="l00536"></a>00536
<a name="l00563"></a><a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2">00563</a> <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">DMD::enableTimer1</a>()
<a name="l00564"></a>00564 {
<a name="l00565"></a>00565 <span class="comment">// Number of CPU cycles in the display&#39;s refresh period.</span>
<a name="l00566"></a>00566 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> numCycles = (F_CPU / 2000000) * DMD_REFRESH_US;
<a name="l00567"></a>00567
<a name="l00568"></a>00568 <span class="comment">// Determine the prescaler to be used.</span>
<a name="l00569"></a>00569 <span class="preprocessor"> #define TIMER1_RESOLUTION 65536UL</span>
<a name="l00570"></a>00570 <span class="preprocessor"></span> uint8_t prescaler;
<a name="l00571"></a>00571 <span class="keywordflow">if</span> (numCycles &lt; TIMER1_RESOLUTION) {
<a name="l00572"></a>00572 <span class="comment">// No prescaling required.</span>
<a name="l00573"></a>00573 prescaler = _BV(CS10);
<a name="l00574"></a>00574 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numCycles &lt; TIMER1_RESOLUTION * 8) {
<a name="l00575"></a>00575 <span class="comment">// Prescaler = 8.</span>
<a name="l00576"></a>00576 prescaler = _BV(CS11);
<a name="l00577"></a>00577 numCycles &gt;&gt;= 3;
<a name="l00578"></a>00578 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numCycles &lt; TIMER1_RESOLUTION * 64) {
<a name="l00579"></a>00579 <span class="comment">// Prescaler = 64.</span>
<a name="l00580"></a>00580 prescaler = _BV(CS11) | _BV(CS10);
<a name="l00581"></a>00581 numCycles &gt;&gt;= 6;
<a name="l00582"></a>00582 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numCycles &lt; TIMER1_RESOLUTION * 256) {
<a name="l00583"></a>00583 <span class="comment">// Prescaler = 256.</span>
<a name="l00584"></a>00584 prescaler = _BV(CS12);
<a name="l00585"></a>00585 numCycles &gt;&gt;= 8;
<a name="l00586"></a>00586 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numCycles &lt; TIMER1_RESOLUTION * 1024) {
<a name="l00587"></a>00587 <span class="comment">// Prescaler = 1024.</span>
<a name="l00588"></a>00588 prescaler = _BV(CS12) | _BV(CS10);
<a name="l00589"></a>00589 numCycles &gt;&gt;= 10;
<a name="l00590"></a>00590 } <span class="keywordflow">else</span> {
<a name="l00591"></a>00591 <span class="comment">// Too long, so set the maximum timeout.</span>
<a name="l00592"></a>00592 prescaler = _BV(CS12) | _BV(CS10);
<a name="l00593"></a>00593 numCycles = TIMER1_RESOLUTION - 1;
<a name="l00594"></a>00594 }
<a name="l00595"></a>00595
<a name="l00596"></a>00596 <span class="comment">// Configure Timer1 for the period we want.</span>
<a name="l00597"></a>00597 TCCR1A = 0;
<a name="l00598"></a>00598 TCCR1B = _BV(WGM13);
<a name="l00599"></a>00599 uint8_t saveSREG = SREG;
<a name="l00600"></a>00600 cli();
<a name="l00601"></a>00601 ICR1 = numCycles;
<a name="l00602"></a>00602 SREG = saveSREG; <span class="comment">// Implicit sei() if interrupts were on previously.</span>
<a name="l00603"></a>00603 TCCR1B = (TCCR1B &amp; ~(_BV(CS12) | _BV(CS11) | _BV(CS10))) | prescaler;
<a name="l00604"></a>00604
<a name="l00605"></a>00605 <span class="comment">// Turn on the Timer1 overflow interrupt.</span>
<a name="l00606"></a>00606 TIMSK1 |= _BV(TOIE1);
<a name="l00607"></a>00607 }
<a name="l00608"></a>00608
<a name="l00614"></a><a class="code" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33">00614</a> <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33" title="Disables Timer1 overflow interrupts.">DMD::disableTimer1</a>()
<a name="l00615"></a>00615 {
<a name="l00616"></a>00616 <span class="comment">// Turn off the Timer1 overflow interrupt.</span>
<a name="l00617"></a>00617 TIMSK1 &amp;= ~_BV(TOIE1);
<a name="l00618"></a>00618 }
<a name="l00619"></a>00619
<a name="l00646"></a><a class="code" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97">00646</a> <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">DMD::enableTimer2</a>()
<a name="l00647"></a>00647 {
<a name="l00648"></a>00648 <span class="comment">// Configure Timer2 for the period we want. With the prescaler set</span>
<a name="l00649"></a>00649 <span class="comment">// to 128, then 256 increments of Timer2 gives roughly 4 ms between</span>
<a name="l00650"></a>00650 <span class="comment">// overflows on a system with a 16 MHz clock. We adjust the prescaler</span>
<a name="l00651"></a>00651 <span class="comment">// accordingly for other clock frequencies.</span>
<a name="l00652"></a>00652 TCCR2A = 0;
<a name="l00653"></a>00653 <span class="keywordflow">if</span> (F_CPU &gt;= 32000000)
<a name="l00654"></a>00654 TCCR2B = _BV(CS22) | _BV(CS21); <span class="comment">// Prescaler = 256</span>
<a name="l00655"></a>00655 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (F_CPU &gt;= 16000000)
<a name="l00656"></a>00656 TCCR2B = _BV(CS22) | _BV(CS20); <span class="comment">// Prescaler = 128</span>
<a name="l00657"></a>00657 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (F_CPU &gt;= 8000000)
<a name="l00658"></a>00658 TCCR2B = _BV(CS22); <span class="comment">// Prescaler = 64</span>
<a name="l00659"></a>00659 <span class="keywordflow">else</span>
<a name="l00660"></a>00660 TCCR2B = _BV(CS21) | _BV(CS20); <span class="comment">// Prescaler = 32</span>
<a name="l00661"></a>00661
<a name="l00662"></a>00662 <span class="comment">// Reset Timer2 to kick off the process.</span>
<a name="l00663"></a>00663 TCNT2 = 0;
<a name="l00664"></a>00664
<a name="l00665"></a>00665 <span class="comment">// Turn on the Timer2 overflow interrupt (also turn off OCIE2A and OCIE2B).</span>
<a name="l00666"></a>00666 TIMSK2 = _BV(TOIE2);
<a name="l00667"></a>00667 }
<a name="l00668"></a>00668
<a name="l00674"></a><a class="code" href="classDMD.html#a52fe885bfb380b74df54c96221811cff">00674</a> <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a52fe885bfb380b74df54c96221811cff" title="Disables Timer2 overflow interrupts.">DMD::disableTimer2</a>()
<a name="l00675"></a>00675 {
<a name="l00676"></a>00676 <span class="comment">// Turn off the Timer2 overflow interrupt.</span>
<a name="l00677"></a>00677 TIMSK2 &amp;= ~_BV(TOIE2);
<a name="l00678"></a>00678 }
<a name="l00679"></a>00679
<a name="l00690"></a><a class="code" href="classDMD.html#a557412f734fc4596e1102bf71e110ea0">00690</a> <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">DMD::Color</a> <a class="code" href="classDMD.html#a557412f734fc4596e1102bf71e110ea0" title="Converts an RGB value into a pixel color value.">DMD::fromRGB</a>(uint8_t r, uint8_t g, uint8_t b)
<a name="l00691"></a>00691 {
<a name="l00692"></a>00692 <span class="keywordflow">if</span> (r || g || b)
<a name="l00693"></a>00693 <span class="keywordflow">return</span> <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>;
<a name="l00694"></a>00694 <span class="keywordflow">else</span>
<a name="l00695"></a>00695 <span class="keywordflow">return</span> <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc" title="Color value corresponding to &quot;black&quot;.">Black</a>;
<a name="l00696"></a>00696 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -424,8 +77,370 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_6591a2127a29f6cea3994dcb5b0596d1.html">DMD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">DMD.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;DMD.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;pins_arduino.h&gt;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;avr/io.h&gt;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &lt;avr/interrupt.h&gt;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment">// Pins on the DMD connector board.</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="preprocessor">#define DMD_PIN_PHASE_LSB 6 // A</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DMD_PIN_PHASE_MSB 7 // B</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DMD_PIN_LATCH 8 // SCLK</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DMD_PIN_OUTPUT_ENABLE 9 // nOE</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DMD_PIN_SPI_SS SS // SPI Slave Select</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DMD_PIN_SPI_MOSI MOSI // SPI Master Out, Slave In (R)</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DMD_PIN_SPI_MISO MISO // SPI Master In, Slave Out</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DMD_PIN_SPI_SCK SCK // SPI Serial Clock (CLK)</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment">// Dimension information for the display.</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="preprocessor">#define DMD_NUM_COLUMNS 32 // Number of columns in a panel.</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DMD_NUM_ROWS 16 // Number of rows in a panel.</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;<span class="comment">// Refresh times.</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="preprocessor">#define DMD_REFRESH_MS 5</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DMD_REFRESH_US 5000</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00237"></a><span class="lineno"><a class="code" href="classDMD.html#affd37accffe951c8878434dfa1245809"> 237</a></span>&#160;<a class="code" href="classDMD.html#affd37accffe951c8878434dfa1245809" title="Constructs a new dot matrix display handler for a display that is widthPanels x heightPanels in size...">DMD::DMD</a>(<span class="keywordtype">int</span> widthPanels, <span class="keywordtype">int</span> heightPanels)</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; : <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a>(widthPanels * DMD_NUM_COLUMNS, heightPanels * DMD_NUM_ROWS)</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; , _doubleBuffer(false)</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; , phase(0)</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; , fb0(0)</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; , fb1(0)</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; , displayfb(0)</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; , lastRefresh(millis())</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;{</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="comment">// Both rendering and display are to fb0 initially.</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; fb0 = displayfb = fb;</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">// Initialize SPI to MSB-first, mode 0, clock divider = 2.</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; pinMode(DMD_PIN_SPI_SCK, OUTPUT);</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; pinMode(DMD_PIN_SPI_MOSI, OUTPUT);</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; pinMode(DMD_PIN_SPI_SS, OUTPUT);</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; digitalWrite(DMD_PIN_SPI_SCK, LOW);</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; digitalWrite(DMD_PIN_SPI_MOSI, LOW);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; digitalWrite(DMD_PIN_SPI_SS, HIGH);</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; SPCR |= _BV(MSTR);</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; SPCR |= _BV(SPE);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; SPCR &amp;= ~(_BV(DORD)); <span class="comment">// MSB-first</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; SPCR &amp;= ~0x0C; <span class="comment">// Mode 0</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; SPCR &amp;= ~0x03; <span class="comment">// Clock divider rate 2</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; SPSR |= 0x01; <span class="comment">// MSB of clock divider rate</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="comment">// Initialize the DMD-specific pins.</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; pinMode(DMD_PIN_PHASE_LSB, OUTPUT);</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; pinMode(DMD_PIN_PHASE_MSB, OUTPUT);</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; pinMode(DMD_PIN_LATCH, OUTPUT);</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; pinMode(DMD_PIN_OUTPUT_ENABLE, OUTPUT);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; digitalWrite(DMD_PIN_PHASE_LSB, LOW);</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; digitalWrite(DMD_PIN_PHASE_MSB, LOW);</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; digitalWrite(DMD_PIN_LATCH, LOW);</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; digitalWrite(DMD_PIN_OUTPUT_ENABLE, LOW);</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; digitalWrite(DMD_PIN_SPI_MOSI, HIGH);</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;</div>
<div class="line"><a name="l00278"></a><span class="lineno"><a class="code" href="classDMD.html#a7b37e05584d3e0308163700920df99b2"> 278</a></span>&#160;<a class="code" href="classDMD.html#a7b37e05584d3e0308163700920df99b2" title="Destroys this dot matrix display handler.">DMD::~DMD</a>()</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">if</span> (fb0)</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; free(fb0);</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span> (fb1)</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; free(fb1);</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; fb = 0; <span class="comment">// Don&#39;t free the buffer again in the base class.</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;}</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div>
<div class="line"><a name="l00314"></a><span class="lineno"><a class="code" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723"> 314</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">DMD::setDoubleBuffer</a>(<span class="keywordtype">bool</span> doubleBuffer)</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;{</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">if</span> (doubleBuffer != _doubleBuffer) {</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; _doubleBuffer = <a class="code" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec" title="Returns true if the display is double-buffered; false if single-buffered. The default is false...">doubleBuffer</a>;</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">if</span> (doubleBuffer) {</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="comment">// Allocate a new back buffer.</span></div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size = _stride * _height;</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; fb1 = (uint8_t *)malloc(size);</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; <span class="comment">// Clear the new back buffer and then switch to it, leaving</span></div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="comment">// the current contents of fb0 on the screen.</span></div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">if</span> (fb1) {</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; memset(fb1, 0xFF, size);</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; cli();</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; fb = fb1;</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; displayfb = fb0;</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; sei();</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="comment">// Failed to allocate the memory, so revert to single-buffered.</span></div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; _doubleBuffer = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fb1) {</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="comment">// Disabling double-buffering, so forcibly switch to fb0.</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; cli();</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; fb = fb0;</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; displayfb = fb0;</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; sei();</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="comment">// Free the unnecessary buffer.</span></div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; free(fb1);</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; fb1 = 0;</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"> 346</span>&#160; }</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;}</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div>
<div class="line"><a name="l00363"></a><span class="lineno"><a class="code" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a"> 363</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">DMD::swapBuffers</a>()</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="keywordflow">if</span> (_doubleBuffer) {</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="comment">// Turn off interrupts while swapping buffers so that we don&#39;t</span></div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="comment">// accidentally try to refresh() in the middle of this code.</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; cli();</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">if</span> (fb == fb0) {</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; fb = fb1;</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; displayfb = fb0;</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; fb = fb0;</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; displayfb = fb1;</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; sei();</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</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;</div>
<div class="line"><a name="l00396"></a><span class="lineno"><a class="code" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736"> 396</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736" title="Swaps the buffers that are used for rendering to the display and copies the former back buffer conten...">DMD::swapBuffersAndCopy</a>()</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;{</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers</a>();</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">if</span> (_doubleBuffer)</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; memcpy(fb, displayfb, _stride * _height);</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;}</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;</div>
<div class="line"><a name="l00420"></a><span class="lineno"><a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114"> 420</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">DMD::loop</a>()</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;{</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> currentTime = millis();</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">if</span> ((currentTime - lastRefresh) &gt;= DMD_REFRESH_MS) {</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; lastRefresh = currentTime;</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;}</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;<span class="comment">// Send a single byte via SPI.</span></div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> spiSend(byte value)</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;{</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; SPDR = value;</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">while</span> (!(SPSR &amp; _BV(SPIF)))</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; ; <span class="comment">// Wait for the transfer to complete.</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;</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;<span class="comment">// Flip the bits in a byte. Table generated by genflip.c</span></div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> uint8_t flipBits[256] PROGMEM = {</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, 0x10, 0x90, 0x50, 0xD0,</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; 0x30, 0xB0, 0x70, 0xF0, 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8,</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, 0x04, 0x84, 0x44, 0xC4,</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; 0x24, 0xA4, 0x64, 0xE4, 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4,</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, 0x1C, 0x9C, 0x5C, 0xDC,</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; 0x3C, 0xBC, 0x7C, 0xFC, 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2,</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, 0x0A, 0x8A, 0x4A, 0xCA,</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; 0x2A, 0xAA, 0x6A, 0xEA, 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA,</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, 0x16, 0x96, 0x56, 0xD6,</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; 0x36, 0xB6, 0x76, 0xF6, 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE,</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, 0x01, 0x81, 0x41, 0xC1,</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; 0x21, 0xA1, 0x61, 0xE1, 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1,</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, 0x19, 0x99, 0x59, 0xD9,</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; 0x39, 0xB9, 0x79, 0xF9, 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5,</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, 0x0D, 0x8D, 0x4D, 0xCD,</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; 0x2D, 0xAD, 0x6D, 0xED, 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD,</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, 0x13, 0x93, 0x53, 0xD3,</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; 0x33, 0xB3, 0x73, 0xF3, 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB,</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, 0x07, 0x87, 0x47, 0xC7,</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; 0x27, 0xA7, 0x67, 0xE7, 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7,</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, 0x1F, 0x9F, 0x5F, 0xDF,</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; 0x3F, 0xBF, 0x7F, 0xFF</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"> 462</span>&#160;</div>
<div class="line"><a name="l00478"></a><span class="lineno"><a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8"> 478</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">DMD::refresh</a>()</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;{</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="comment">// Bail out if there is a conflict on the SPI bus.</span></div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span> (!digitalRead(DMD_PIN_SPI_SS))</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="comment">// Transfer the data for the next group of interleaved rows.</span></div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordtype">int</span> stride4 = _stride * 4;</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; uint8_t *data0;</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; uint8_t *data1;</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; uint8_t *data2;</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; uint8_t *data3;</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordtype">bool</span> flipRow = ((_height &amp; 0x10) == 0);</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> y = 0; y &lt; _height; y += 16) {</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span> (!flipRow) {</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="comment">// The panels in this row are the right way up.</span></div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; data0 = displayfb + _stride * (y + phase);</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; data1 = data0 + stride4;</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; data2 = data1 + stride4;</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; data3 = data2 + stride4;</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = _stride; x &gt; 0; --x) {</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; spiSend(*data3++);</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; spiSend(*data2++);</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; spiSend(*data1++);</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; spiSend(*data0++);</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; flipRow = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="comment">// The panels in this row are upside-down and reversed.</span></div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; data0 = displayfb + _stride * (y + 16 - phase) - 1;</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; data1 = data0 - stride4;</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; data2 = data1 - stride4;</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; data3 = data2 - stride4;</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = _stride; x &gt; 0; --x) {</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; spiSend(pgm_read_byte(&amp;(flipBits[*data3--])));</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; spiSend(pgm_read_byte(&amp;(flipBits[*data2--])));</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; spiSend(pgm_read_byte(&amp;(flipBits[*data1--])));</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; spiSend(pgm_read_byte(&amp;(flipBits[*data0--])));</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; flipRow = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="comment">// Latch the data from the shift registers onto the actual display.</span></div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; digitalWrite(DMD_PIN_OUTPUT_ENABLE, LOW);</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; digitalWrite(DMD_PIN_LATCH, HIGH);</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; digitalWrite(DMD_PIN_LATCH, LOW);</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">if</span> (phase &amp; 0x02)</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; digitalWrite(DMD_PIN_PHASE_MSB, HIGH);</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; digitalWrite(DMD_PIN_PHASE_MSB, LOW);</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">if</span> (phase &amp; 0x01)</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; digitalWrite(DMD_PIN_PHASE_LSB, HIGH);</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; digitalWrite(DMD_PIN_PHASE_LSB, LOW);</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; digitalWrite(DMD_PIN_OUTPUT_ENABLE, HIGH);</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; phase = (phase + 1) &amp; 0x03;</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;}</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;</div>
<div class="line"><a name="l00563"></a><span class="lineno"><a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2"> 563</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">DMD::enableTimer1</a>()</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="comment">// Number of CPU cycles in the display&#39;s refresh period.</span></div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> numCycles = (F_CPU / 2000000) * DMD_REFRESH_US;</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;</div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="comment">// Determine the prescaler to be used.</span></div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="preprocessor"> #define TIMER1_RESOLUTION 65536UL</span></div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="preprocessor"></span> uint8_t prescaler;</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">if</span> (numCycles &lt; TIMER1_RESOLUTION) {</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="comment">// No prescaling required.</span></div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; prescaler = _BV(CS10);</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numCycles &lt; TIMER1_RESOLUTION * 8) {</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="comment">// Prescaler = 8.</span></div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; prescaler = _BV(CS11);</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; numCycles &gt;&gt;= 3;</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numCycles &lt; TIMER1_RESOLUTION * 64) {</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="comment">// Prescaler = 64.</span></div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; prescaler = _BV(CS11) | _BV(CS10);</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; numCycles &gt;&gt;= 6;</div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numCycles &lt; TIMER1_RESOLUTION * 256) {</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="comment">// Prescaler = 256.</span></div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; prescaler = _BV(CS12);</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; numCycles &gt;&gt;= 8;</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numCycles &lt; TIMER1_RESOLUTION * 1024) {</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="comment">// Prescaler = 1024.</span></div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; prescaler = _BV(CS12) | _BV(CS10);</div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; numCycles &gt;&gt;= 10;</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="comment">// Too long, so set the maximum timeout.</span></div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; prescaler = _BV(CS12) | _BV(CS10);</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; numCycles = TIMER1_RESOLUTION - 1;</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; }</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="comment">// Configure Timer1 for the period we want.</span></div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; TCCR1A = 0;</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; TCCR1B = _BV(WGM13);</div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; uint8_t saveSREG = SREG;</div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; cli();</div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; ICR1 = numCycles;</div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; SREG = saveSREG; <span class="comment">// Implicit sei() if interrupts were on previously.</span></div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; TCCR1B = (TCCR1B &amp; ~(_BV(CS12) | _BV(CS11) | _BV(CS10))) | prescaler;</div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="comment">// Turn on the Timer1 overflow interrupt.</span></div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; TIMSK1 |= _BV(TOIE1);</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;}</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;</div>
<div class="line"><a name="l00614"></a><span class="lineno"><a class="code" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33"> 614</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33" title="Disables Timer1 overflow interrupts.">DMD::disableTimer1</a>()</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;{</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="comment">// Turn off the Timer1 overflow interrupt.</span></div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; TIMSK1 &amp;= ~_BV(TOIE1);</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;}</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div>
<div class="line"><a name="l00646"></a><span class="lineno"><a class="code" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97"> 646</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">DMD::enableTimer2</a>()</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;{</div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="comment">// Configure Timer2 for the period we want. With the prescaler set</span></div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="comment">// to 128, then 256 increments of Timer2 gives roughly 4 ms between</span></div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="comment">// overflows on a system with a 16 MHz clock. We adjust the prescaler</span></div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="comment">// accordingly for other clock frequencies.</span></div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; TCCR2A = 0;</div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">if</span> (F_CPU &gt;= 32000000)</div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; TCCR2B = _BV(CS22) | _BV(CS21); <span class="comment">// Prescaler = 256</span></div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (F_CPU &gt;= 16000000)</div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; TCCR2B = _BV(CS22) | _BV(CS20); <span class="comment">// Prescaler = 128</span></div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (F_CPU &gt;= 8000000)</div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; TCCR2B = _BV(CS22); <span class="comment">// Prescaler = 64</span></div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; TCCR2B = _BV(CS21) | _BV(CS20); <span class="comment">// Prescaler = 32</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="comment">// Reset Timer2 to kick off the process.</span></div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; TCNT2 = 0;</div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;</div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="comment">// Turn on the Timer2 overflow interrupt (also turn off OCIE2A and OCIE2B).</span></div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; TIMSK2 = _BV(TOIE2);</div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;}</div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;</div>
<div class="line"><a name="l00674"></a><span class="lineno"><a class="code" href="classDMD.html#a52fe885bfb380b74df54c96221811cff"> 674</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a52fe885bfb380b74df54c96221811cff" title="Disables Timer2 overflow interrupts.">DMD::disableTimer2</a>()</div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;{</div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="comment">// Turn off the Timer2 overflow interrupt.</span></div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; TIMSK2 &amp;= ~_BV(TOIE2);</div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;}</div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;</div>
<div class="line"><a name="l00690"></a><span class="lineno"><a class="code" href="classDMD.html#a557412f734fc4596e1102bf71e110ea0"> 690</a></span>&#160;<a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">DMD::Color</a> <a class="code" href="classDMD.html#a557412f734fc4596e1102bf71e110ea0" title="Converts an RGB value into a pixel color value.">DMD::fromRGB</a>(uint8_t r, uint8_t g, uint8_t b)</div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;{</div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">if</span> (r || g || b)</div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7" title="Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...">White</a>;</div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc" title="Color value corresponding to &quot;black&quot;.">Black</a>;</div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: DMD.h Source File</title> <title>ArduinoLibs: DMD.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,82 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">DMD.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef DMD_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define DMD_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;Bitmap.h&quot;</span>
<a name="l00027"></a>00027
<a name="l00028"></a><a class="code" href="classDMD.html">00028</a> <span class="keyword">class </span><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> : <span class="keyword">public</span> <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a>
<a name="l00029"></a>00029 {
<a name="l00030"></a>00030 <span class="keyword">public</span>:
<a name="l00031"></a>00031 <span class="keyword">explicit</span> <a class="code" href="classDMD.html#affd37accffe951c8878434dfa1245809" title="Constructs a new dot matrix display handler for a display that is widthPanels x heightPanels in size...">DMD</a>(<span class="keywordtype">int</span> widthPanels = 1, <span class="keywordtype">int</span> heightPanels = 1);
<a name="l00032"></a>00032 <a class="code" href="classDMD.html#a7b37e05584d3e0308163700920df99b2" title="Destroys this dot matrix display handler.">~DMD</a>();
<a name="l00033"></a>00033
<a name="l00034"></a><a class="code" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec">00034</a> <span class="keywordtype">bool</span> <a class="code" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec" title="Returns true if the display is double-buffered; false if single-buffered. The default is false...">doubleBuffer</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _doubleBuffer; }
<a name="l00035"></a>00035 <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer</a>(<span class="keywordtype">bool</span> <a class="code" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec" title="Returns true if the display is double-buffered; false if single-buffered. The default is false...">doubleBuffer</a>);
<a name="l00036"></a>00036 <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers</a>();
<a name="l00037"></a>00037 <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736" title="Swaps the buffers that are used for rendering to the display and copies the former back buffer conten...">swapBuffersAndCopy</a>();
<a name="l00038"></a>00038
<a name="l00039"></a>00039 <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop</a>();
<a name="l00040"></a>00040 <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();
<a name="l00041"></a>00041
<a name="l00042"></a>00042 <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1</a>();
<a name="l00043"></a>00043 <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33" title="Disables Timer1 overflow interrupts.">disableTimer1</a>();
<a name="l00044"></a>00044
<a name="l00045"></a>00045 <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">enableTimer2</a>();
<a name="l00046"></a>00046 <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a52fe885bfb380b74df54c96221811cff" title="Disables Timer2 overflow interrupts.">disableTimer2</a>();
<a name="l00047"></a>00047
<a name="l00048"></a>00048 <span class="keyword">static</span> <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> <a class="code" href="classDMD.html#a557412f734fc4596e1102bf71e110ea0" title="Converts an RGB value into a pixel color value.">fromRGB</a>(uint8_t r, uint8_t g, uint8_t b);
<a name="l00049"></a>00049
<a name="l00050"></a>00050 <span class="keyword">private</span>:
<a name="l00051"></a>00051 <span class="comment">// Disable copy constructor and operator=().</span>
<a name="l00052"></a>00052 <a class="code" href="classDMD.html#affd37accffe951c8878434dfa1245809" title="Constructs a new dot matrix display handler for a display that is widthPanels x heightPanels in size...">DMD</a>(<span class="keyword">const</span> <a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> &amp;other) : <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a>(other) {}
<a name="l00053"></a>00053 <a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> &amp;) { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l00054"></a>00054
<a name="l00055"></a>00055 <span class="keywordtype">bool</span> _doubleBuffer;
<a name="l00056"></a>00056 uint8_t phase;
<a name="l00057"></a>00057 uint8_t *fb0;
<a name="l00058"></a>00058 uint8_t *fb1;
<a name="l00059"></a>00059 uint8_t *displayfb;
<a name="l00060"></a>00060 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> lastRefresh;
<a name="l00061"></a>00061 };
<a name="l00062"></a>00062
<a name="l00063"></a>00063 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -139,8 +77,85 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_6591a2127a29f6cea3994dcb5b0596d1.html">DMD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">DMD.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef DMD_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DMD_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;Bitmap.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="classDMD.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> : <span class="keyword">public</span> <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classDMD.html#affd37accffe951c8878434dfa1245809" title="Constructs a new dot matrix display handler for a display that is widthPanels x heightPanels in size...">DMD</a>(<span class="keywordtype">int</span> widthPanels = 1, <span class="keywordtype">int</span> heightPanels = 1);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="classDMD.html#a7b37e05584d3e0308163700920df99b2" title="Destroys this dot matrix display handler.">~DMD</a>();</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec"> 34</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec" title="Returns true if the display is double-buffered; false if single-buffered. The default is false...">doubleBuffer</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _doubleBuffer; }</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer</a>(<span class="keywordtype">bool</span> <a class="code" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec" title="Returns true if the display is double-buffered; false if single-buffered. The default is false...">doubleBuffer</a>);</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers</a>();</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736" title="Swaps the buffers that are used for rendering to the display and copies the former back buffer conten...">swapBuffersAndCopy</a>();</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop</a>();</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();</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="keywordtype">void</span> <a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1</a>();</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33" title="Disables Timer1 overflow interrupts.">disableTimer1</a>();</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; <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">enableTimer2</a>();</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a52fe885bfb380b74df54c96221811cff" title="Disables Timer2 overflow interrupts.">disableTimer2</a>();</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="keyword">static</span> <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba" title="Type that represents the color of a pixel in a bitmap.">Color</a> <a class="code" href="classDMD.html#a557412f734fc4596e1102bf71e110ea0" title="Converts an RGB value into a pixel color value.">fromRGB</a>(uint8_t r, uint8_t g, uint8_t b);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// Disable copy constructor and operator=().</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="classDMD.html#affd37accffe951c8878434dfa1245809" title="Constructs a new dot matrix display handler for a display that is widthPanels x heightPanels in size...">DMD</a>(<span class="keyword">const</span> <a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> &amp;other) : <a class="code" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a>(other) {}</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> &amp;) { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">bool</span> _doubleBuffer;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; uint8_t phase;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; uint8_t *fb0;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; uint8_t *fb1;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; uint8_t *displayfb;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> lastRefresh;</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;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: DS1307RTC.cpp Source File</title> <title>ArduinoLibs: DS1307RTC.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,305 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">DS1307RTC.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;DS1307RTC.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &quot;../I2C/I2CMaster.h&quot;</span>
<a name="l00025"></a>00025 <span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#else</span>
<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
<a name="l00029"></a>00029 <span class="preprocessor">#endif</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span>
<a name="l00054"></a>00054 <span class="comment">// I2C address of the RTC chip (7-bit).</span>
<a name="l00055"></a>00055 <span class="preprocessor">#define DS1307_I2C_ADDRESS 0x68</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span>
<a name="l00057"></a>00057 <span class="comment">// Registers.</span>
<a name="l00058"></a>00058 <span class="preprocessor">#define DS1307_SECOND 0x00</span>
<a name="l00059"></a>00059 <span class="preprocessor"></span><span class="preprocessor">#define DS1307_MINUTE 0x01</span>
<a name="l00060"></a>00060 <span class="preprocessor"></span><span class="preprocessor">#define DS1307_HOUR 0x02</span>
<a name="l00061"></a>00061 <span class="preprocessor"></span><span class="preprocessor">#define DS1307_DAY_OF_WEEK 0x03</span>
<a name="l00062"></a>00062 <span class="preprocessor"></span><span class="preprocessor">#define DS1307_DATE 0x04</span>
<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="preprocessor">#define DS1307_MONTH 0x05</span>
<a name="l00064"></a>00064 <span class="preprocessor"></span><span class="preprocessor">#define DS1307_YEAR 0x06</span>
<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="preprocessor">#define DS1307_CONTROL 0x07</span>
<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="preprocessor">#define DS1307_NVRAM 0x08</span>
<a name="l00067"></a>00067 <span class="preprocessor"></span>
<a name="l00068"></a>00068 <span class="comment">// Alarm storage at the end of the RTC&#39;s NVRAM.</span>
<a name="l00069"></a>00069 <span class="preprocessor">#define DS1307_ALARM_SIZE 3</span>
<a name="l00070"></a>00070 <span class="preprocessor"></span><span class="preprocessor">#define DS1307_ALARMS (64 - RTC::ALARM_COUNT * DS1307_ALARM_SIZE - 1)</span>
<a name="l00071"></a>00071 <span class="preprocessor"></span><span class="preprocessor">#define DS1307_ALARM_MAGIC 63</span>
<a name="l00072"></a>00072 <span class="preprocessor"></span>
<a name="l00083"></a><a class="code" href="classDS1307RTC.html#a092805d75bea323dc4be062638bff866">00083</a> <a class="code" href="classDS1307RTC.html#a092805d75bea323dc4be062638bff866" title="Attaches to a realtime clock slave device on bus.">DS1307RTC::DS1307RTC</a>(<a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> &amp;bus, uint8_t oneHzPin)
<a name="l00084"></a>00084 : _bus(&amp;bus)
<a name="l00085"></a>00085 , _oneHzPin(oneHzPin)
<a name="l00086"></a>00086 , prevOneHz(false)
<a name="l00087"></a>00087 , _isRealTime(true)
<a name="l00088"></a>00088 {
<a name="l00089"></a>00089 <span class="comment">// Make sure the CH bit in register 0 is off or the clock won&#39;t update.</span>
<a name="l00090"></a>00090 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);
<a name="l00091"></a>00091 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_SECOND);
<a name="l00092"></a>00092 <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS1307_I2C_ADDRESS, 1)) {
<a name="l00093"></a>00093 uint8_t value = _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();
<a name="l00094"></a>00094 <span class="keywordflow">if</span> ((value &amp; 0x80) != 0)
<a name="l00095"></a>00095 writeRegister(DS1307_SECOND, value &amp; 0x7F);
<a name="l00096"></a>00096 } <span class="keywordflow">else</span> {
<a name="l00097"></a>00097 <span class="comment">// Did not get an acknowledgement from the RTC chip.</span>
<a name="l00098"></a>00098 _isRealTime = <span class="keyword">false</span>;
<a name="l00099"></a>00099 }
<a name="l00100"></a>00100
<a name="l00101"></a>00101 <span class="comment">// Turn on the 1 Hz square wave signal if required.</span>
<a name="l00102"></a>00102 <span class="keywordflow">if</span> (oneHzPin != 255 &amp;&amp; _isRealTime) {
<a name="l00103"></a>00103 pinMode(oneHzPin, INPUT);
<a name="l00104"></a>00104 digitalWrite(oneHzPin, HIGH);
<a name="l00105"></a>00105 writeRegister(DS1307_CONTROL, 0x10);
<a name="l00106"></a>00106 }
<a name="l00107"></a>00107
<a name="l00108"></a>00108 <span class="comment">// Initialize the alarms in the RTC chip&#39;s NVRAM.</span>
<a name="l00109"></a>00109 <span class="keywordflow">if</span> (_isRealTime)
<a name="l00110"></a>00110 initAlarms();
<a name="l00111"></a>00111 }
<a name="l00112"></a>00112
<a name="l00118"></a><a class="code" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0">00118</a> <span class="keywordtype">bool</span> <a class="code" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0" title="Returns true if the realtime clock has updated since the last call to this function.">DS1307RTC::hasUpdates</a>()
<a name="l00119"></a>00119 {
<a name="l00120"></a>00120 <span class="comment">// If not using a 1 Hz pin or there is no RTC chip available,</span>
<a name="l00121"></a>00121 <span class="comment">// then assume that there is an update available.</span>
<a name="l00122"></a>00122 <span class="keywordflow">if</span> (_oneHzPin == 255 || !_isRealTime)
<a name="l00123"></a>00123 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00124"></a>00124
<a name="l00125"></a>00125 <span class="comment">// The DS1307 updates the internal registers on the falling edge of the</span>
<a name="l00126"></a>00126 <span class="comment">// 1 Hz clock. The values should be ready to read on the rising edge.</span>
<a name="l00127"></a>00127 <span class="keywordtype">bool</span> value = digitalRead(_oneHzPin);
<a name="l00128"></a>00128 <span class="keywordflow">if</span> (value &amp;&amp; !prevOneHz) {
<a name="l00129"></a>00129 prevOneHz = value;
<a name="l00130"></a>00130 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00131"></a>00131 } <span class="keywordflow">else</span> {
<a name="l00132"></a>00132 prevOneHz = value;
<a name="l00133"></a>00133 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00134"></a>00134 }
<a name="l00135"></a>00135 }
<a name="l00136"></a>00136
<a name="l00137"></a>00137 <span class="keyword">inline</span> uint8_t fromBCD(uint8_t value)
<a name="l00138"></a>00138 {
<a name="l00139"></a>00139 <span class="keywordflow">return</span> (value &gt;&gt; 4) * 10 + (value &amp; 0x0F);
<a name="l00140"></a>00140 }
<a name="l00141"></a>00141
<a name="l00142"></a>00142 <span class="keyword">inline</span> uint8_t fromHourBCD(uint8_t value)
<a name="l00143"></a>00143 {
<a name="l00144"></a>00144 <span class="keywordflow">if</span> ((value &amp; 0x40) != 0) {
<a name="l00145"></a>00145 <span class="comment">// 12-hour mode.</span>
<a name="l00146"></a>00146 uint8_t result = ((value &gt;&gt; 4) &amp; 0x01) * 10 + (value &amp; 0x0F);
<a name="l00147"></a>00147 <span class="keywordflow">if</span> ((value &amp; 0x20) != 0)
<a name="l00148"></a>00148 <span class="keywordflow">return</span> (result == 12) ? 12 : (result + 12); <span class="comment">// PM</span>
<a name="l00149"></a>00149 <span class="keywordflow">else</span>
<a name="l00150"></a>00150 <span class="keywordflow">return</span> (result == 12) ? 0 : result; <span class="comment">// AM</span>
<a name="l00151"></a>00151 } <span class="keywordflow">else</span> {
<a name="l00152"></a>00152 <span class="comment">// 24-hour mode.</span>
<a name="l00153"></a>00153 <span class="keywordflow">return</span> fromBCD(value);
<a name="l00154"></a>00154 }
<a name="l00155"></a>00155 }
<a name="l00156"></a>00156
<a name="l00157"></a><a class="code" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6">00157</a> <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6" title="Reads the current time from the realtime clock into value.">DS1307RTC::readTime</a>(<a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value)
<a name="l00158"></a>00158 {
<a name="l00159"></a>00159 <span class="keywordflow">if</span> (_isRealTime) {
<a name="l00160"></a>00160 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);
<a name="l00161"></a>00161 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_SECOND);
<a name="l00162"></a>00162 <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS1307_I2C_ADDRESS, 3)) {
<a name="l00163"></a>00163 value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>() &amp; 0x7F);
<a name="l00164"></a>00164 value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());
<a name="l00165"></a>00165 value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a> = fromHourBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());
<a name="l00166"></a>00166 } <span class="keywordflow">else</span> {
<a name="l00167"></a>00167 <span class="comment">// RTC chip is not responding.</span>
<a name="l00168"></a>00168 value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a> = 0;
<a name="l00169"></a>00169 value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a> = 0;
<a name="l00170"></a>00170 value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a> = 0;
<a name="l00171"></a>00171 }
<a name="l00172"></a>00172 } <span class="keywordflow">else</span> {
<a name="l00173"></a>00173 <a class="code" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6" title="Reads the current time from the realtime clock into value.">RTC::readTime</a>(value);
<a name="l00174"></a>00174 }
<a name="l00175"></a>00175 }
<a name="l00176"></a>00176
<a name="l00177"></a><a class="code" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4">00177</a> <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4" title="Reads the current date from the realtime clock into value.">DS1307RTC::readDate</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value)
<a name="l00178"></a>00178 {
<a name="l00179"></a>00179 <span class="keywordflow">if</span> (!_isRealTime) {
<a name="l00180"></a>00180 <a class="code" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4" title="Reads the current date from the realtime clock into value.">RTC::readDate</a>(value);
<a name="l00181"></a>00181 <span class="keywordflow">return</span>;
<a name="l00182"></a>00182 }
<a name="l00183"></a>00183 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);
<a name="l00184"></a>00184 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_DATE);
<a name="l00185"></a>00185 <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS1307_I2C_ADDRESS, 3)) {
<a name="l00186"></a>00186 value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());
<a name="l00187"></a>00187 value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());
<a name="l00188"></a>00188 value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>()) + 2000;
<a name="l00189"></a>00189 } <span class="keywordflow">else</span> {
<a name="l00190"></a>00190 <span class="comment">// RTC chip is not responding.</span>
<a name="l00191"></a>00191 value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = 1;
<a name="l00192"></a>00192 value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = 1;
<a name="l00193"></a>00193 value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> = 2000;
<a name="l00194"></a>00194 }
<a name="l00195"></a>00195 }
<a name="l00196"></a>00196
<a name="l00197"></a>00197 <span class="keyword">inline</span> uint8_t toBCD(uint8_t value)
<a name="l00198"></a>00198 {
<a name="l00199"></a>00199 <span class="keywordflow">return</span> ((value / 10) &lt;&lt; 4) + (value % 10);
<a name="l00200"></a>00200 }
<a name="l00201"></a>00201
<a name="l00202"></a><a class="code" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8">00202</a> <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8" title="Updates the time in the realtime clock to match value.">DS1307RTC::writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value)
<a name="l00203"></a>00203 {
<a name="l00204"></a>00204 <span class="keywordflow">if</span> (_isRealTime) {
<a name="l00205"></a>00205 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);
<a name="l00206"></a>00206 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_SECOND);
<a name="l00207"></a>00207 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a>));
<a name="l00208"></a>00208 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a>));
<a name="l00209"></a>00209 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a>)); <span class="comment">// Changes mode to 24-hour clock.</span>
<a name="l00210"></a>00210 _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();
<a name="l00211"></a>00211 } <span class="keywordflow">else</span> {
<a name="l00212"></a>00212 <a class="code" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8" title="Updates the time in the realtime clock to match value.">RTC::writeTime</a>(value);
<a name="l00213"></a>00213 }
<a name="l00214"></a>00214 }
<a name="l00215"></a>00215
<a name="l00216"></a><a class="code" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230">00216</a> <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230" title="Updates the date in the realtime clock to match value.">DS1307RTC::writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value)
<a name="l00217"></a>00217 {
<a name="l00218"></a>00218 <span class="keywordflow">if</span> (_isRealTime) {
<a name="l00219"></a>00219 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);
<a name="l00220"></a>00220 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_DATE);
<a name="l00221"></a>00221 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a>));
<a name="l00222"></a>00222 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a>));
<a name="l00223"></a>00223 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> % 100));
<a name="l00224"></a>00224 _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();
<a name="l00225"></a>00225 } <span class="keywordflow">else</span> {
<a name="l00226"></a>00226 <a class="code" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230" title="Updates the date in the realtime clock to match value.">RTC::writeDate</a>(value);
<a name="l00227"></a>00227 }
<a name="l00228"></a>00228 }
<a name="l00229"></a>00229
<a name="l00230"></a><a class="code" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a">00230</a> <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a" title="Reads the details of the alarm with index alarmNum into value.">DS1307RTC::readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value)
<a name="l00231"></a>00231 {
<a name="l00232"></a>00232 <span class="keywordflow">if</span> (_isRealTime) {
<a name="l00233"></a>00233 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);
<a name="l00234"></a>00234 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_ALARMS + alarmNum * DS1307_ALARM_SIZE);
<a name="l00235"></a>00235 <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS1307_I2C_ADDRESS, 3)) {
<a name="l00236"></a>00236 value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());
<a name="l00237"></a>00237 value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());
<a name="l00238"></a>00238 value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a> = _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();
<a name="l00239"></a>00239 } <span class="keywordflow">else</span> {
<a name="l00240"></a>00240 <span class="comment">// RTC chip is not responding.</span>
<a name="l00241"></a>00241 value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a> = 0;
<a name="l00242"></a>00242 value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a> = 0;
<a name="l00243"></a>00243 value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a> = 0;
<a name="l00244"></a>00244 }
<a name="l00245"></a>00245 } <span class="keywordflow">else</span> {
<a name="l00246"></a>00246 <a class="code" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a" title="Reads the details of the alarm with index alarmNum into value.">RTC::readAlarm</a>(alarmNum, value);
<a name="l00247"></a>00247 }
<a name="l00248"></a>00248 }
<a name="l00249"></a>00249
<a name="l00250"></a><a class="code" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75">00250</a> <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75" title="Updates the details of the alarm with index alarmNum from value.">DS1307RTC::writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value)
<a name="l00251"></a>00251 {
<a name="l00252"></a>00252 <span class="keywordflow">if</span> (_isRealTime) {
<a name="l00253"></a>00253 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);
<a name="l00254"></a>00254 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_ALARMS + alarmNum * DS1307_ALARM_SIZE);
<a name="l00255"></a>00255 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a>));
<a name="l00256"></a>00256 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a>));
<a name="l00257"></a>00257 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a>);
<a name="l00258"></a>00258 _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();
<a name="l00259"></a>00259 } <span class="keywordflow">else</span> {
<a name="l00260"></a>00260 <a class="code" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75" title="Updates the details of the alarm with index alarmNum from value.">RTC::writeAlarm</a>(alarmNum, value);
<a name="l00261"></a>00261 }
<a name="l00262"></a>00262 }
<a name="l00263"></a>00263
<a name="l00264"></a><a class="code" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248">00264</a> <span class="keywordtype">int</span> <a class="code" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">DS1307RTC::byteCount</a>()<span class="keyword"> const</span>
<a name="l00265"></a>00265 <span class="keyword"></span>{
<a name="l00266"></a>00266 <span class="keywordflow">return</span> DS1307_ALARMS - DS1307_NVRAM;
<a name="l00267"></a>00267 }
<a name="l00268"></a>00268
<a name="l00269"></a><a class="code" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a">00269</a> uint8_t <a class="code" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">DS1307RTC::readByte</a>(uint8_t offset)
<a name="l00270"></a>00270 {
<a name="l00271"></a>00271 <span class="keywordflow">if</span> (_isRealTime)
<a name="l00272"></a>00272 <span class="keywordflow">return</span> readRegister(DS1307_NVRAM + offset);
<a name="l00273"></a>00273 <span class="keywordflow">else</span>
<a name="l00274"></a>00274 <span class="keywordflow">return</span> <a class="code" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">RTC::readByte</a>(offset);
<a name="l00275"></a>00275 }
<a name="l00276"></a>00276
<a name="l00277"></a><a class="code" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6">00277</a> <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">DS1307RTC::writeByte</a>(uint8_t offset, uint8_t value)
<a name="l00278"></a>00278 {
<a name="l00279"></a>00279 <span class="keywordflow">if</span> (_isRealTime)
<a name="l00280"></a>00280 writeRegister(DS1307_NVRAM + offset, value);
<a name="l00281"></a>00281 <span class="keywordflow">else</span>
<a name="l00282"></a>00282 <a class="code" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">RTC::writeByte</a>(offset, value);
<a name="l00283"></a>00283 }
<a name="l00284"></a>00284
<a name="l00285"></a>00285 <span class="keywordtype">void</span> DS1307RTC::initAlarms()
<a name="l00286"></a>00286 {
<a name="l00287"></a>00287 uint8_t value = readRegister(DS1307_ALARM_MAGIC);
<a name="l00288"></a>00288 <span class="keywordflow">if</span> (value != (0xB0 + <a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3" title="Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm().">ALARM_COUNT</a>)) {
<a name="l00289"></a>00289 <span class="comment">// This is the first time we have used this clock chip,</span>
<a name="l00290"></a>00290 <span class="comment">// so initialize all alarms to their default state.</span>
<a name="l00291"></a>00291 <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> alarm;
<a name="l00292"></a>00292 alarm.<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a> = 6; <span class="comment">// Default to 6am for alarms.</span>
<a name="l00293"></a>00293 alarm.<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a> = 0;
<a name="l00294"></a>00294 alarm.<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a> = 0;
<a name="l00295"></a>00295 <span class="keywordflow">for</span> (uint8_t index = 0; index &lt; <a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3" title="Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm().">ALARM_COUNT</a>; ++index)
<a name="l00296"></a>00296 <a class="code" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75" title="Updates the details of the alarm with index alarmNum from value.">writeAlarm</a>(index, &amp;alarm);
<a name="l00297"></a>00297 writeRegister(DS1307_ALARM_MAGIC, 0xB0 + ALARM_COUNT);
<a name="l00298"></a>00298
<a name="l00299"></a>00299 <span class="comment">// Also clear the rest of NVRAM so that it is in a known state.</span>
<a name="l00300"></a>00300 <span class="comment">// Otherwise we&#39;ll have whatever garbage was present at power-on.</span>
<a name="l00301"></a>00301 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);
<a name="l00302"></a>00302 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_NVRAM);
<a name="l00303"></a>00303 <span class="keywordflow">for</span> (uint8_t index = DS1307_NVRAM; index &lt; DS1307_ALARMS; ++index)
<a name="l00304"></a>00304 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(0);
<a name="l00305"></a>00305 _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();
<a name="l00306"></a>00306 }
<a name="l00307"></a>00307 }
<a name="l00308"></a>00308
<a name="l00309"></a>00309 uint8_t DS1307RTC::readRegister(uint8_t reg)
<a name="l00310"></a>00310 {
<a name="l00311"></a>00311 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);
<a name="l00312"></a>00312 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(reg);
<a name="l00313"></a>00313 <span class="keywordflow">if</span> (!_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS1307_I2C_ADDRESS, 1))
<a name="l00314"></a>00314 <span class="keywordflow">return</span> 0; <span class="comment">// RTC chip is not responding.</span>
<a name="l00315"></a>00315 <span class="keywordflow">return</span> _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();
<a name="l00316"></a>00316 }
<a name="l00317"></a>00317
<a name="l00318"></a>00318 <span class="keywordtype">bool</span> DS1307RTC::writeRegister(uint8_t reg, uint8_t value)
<a name="l00319"></a>00319 {
<a name="l00320"></a>00320 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);
<a name="l00321"></a>00321 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(reg);
<a name="l00322"></a>00322 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(value);
<a name="l00323"></a>00323 <span class="keywordflow">return</span> _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();
<a name="l00324"></a>00324 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -362,8 +77,308 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_f34881fcf60f680b800190d5274dfaea.html">RTC</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">DS1307RTC.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;DS1307RTC.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;../I2C/I2CMaster.h&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">// I2C address of the RTC chip (7-bit).</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#define DS1307_I2C_ADDRESS 0x68</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">// Registers.</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#define DS1307_SECOND 0x00</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS1307_MINUTE 0x01</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS1307_HOUR 0x02</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS1307_DAY_OF_WEEK 0x03</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS1307_DATE 0x04</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS1307_MONTH 0x05</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS1307_YEAR 0x06</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS1307_CONTROL 0x07</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS1307_NVRAM 0x08</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"> 68</span>&#160;<span class="comment">// Alarm storage at the end of the RTC&#39;s NVRAM.</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#define DS1307_ALARM_SIZE 3</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS1307_ALARMS (64 - RTC::ALARM_COUNT * DS1307_ALARM_SIZE - 1)</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS1307_ALARM_MAGIC 63</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="classDS1307RTC.html#a092805d75bea323dc4be062638bff866"> 83</a></span>&#160;<a class="code" href="classDS1307RTC.html#a092805d75bea323dc4be062638bff866" title="Attaches to a realtime clock slave device on bus.">DS1307RTC::DS1307RTC</a>(<a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> &amp;bus, uint8_t oneHzPin)</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; : _bus(&amp;bus)</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; , _oneHzPin(oneHzPin)</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; , prevOneHz(false)</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; , _isRealTime(true)</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; <span class="comment">// Make sure the CH bit in register 0 is off or the clock won&#39;t update.</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_SECOND);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS1307_I2C_ADDRESS, 1)) {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; uint8_t value = _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> ((value &amp; 0x80) != 0)</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; writeRegister(DS1307_SECOND, value &amp; 0x7F);</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// Did not get an acknowledgement from the RTC chip.</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; _isRealTime = <span class="keyword">false</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"> 100</span>&#160;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="comment">// Turn on the 1 Hz square wave signal if required.</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span> (oneHzPin != 255 &amp;&amp; _isRealTime) {</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; pinMode(oneHzPin, INPUT);</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; digitalWrite(oneHzPin, HIGH);</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; writeRegister(DS1307_CONTROL, 0x10);</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;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">// Initialize the alarms in the RTC chip&#39;s NVRAM.</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span> (_isRealTime)</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; initAlarms();</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
<div class="line"><a name="l00118"></a><span class="lineno"><a class="code" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0"> 118</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0" title="Returns true if the realtime clock has updated since the last call to this function.">DS1307RTC::hasUpdates</a>()</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">// If not using a 1 Hz pin or there is no RTC chip available,</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="comment">// then assume that there is an update available.</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (_oneHzPin == 255 || !_isRealTime)</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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="comment">// The DS1307 updates the internal registers on the falling edge of the</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="comment">// 1 Hz clock. The values should be ready to read on the rising edge.</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">bool</span> value = digitalRead(_oneHzPin);</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (value &amp;&amp; !prevOneHz) {</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; prevOneHz = value;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; prevOneHz = value;</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; }</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;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keyword">inline</span> uint8_t fromBCD(uint8_t value)</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">return</span> (value &gt;&gt; 4) * 10 + (value &amp; 0x0F);</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;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="keyword">inline</span> uint8_t fromHourBCD(uint8_t value)</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span> ((value &amp; 0x40) != 0) {</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// 12-hour mode.</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; uint8_t result = ((value &gt;&gt; 4) &amp; 0x01) * 10 + (value &amp; 0x0F);</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span> ((value &amp; 0x20) != 0)</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> (result == 12) ? 12 : (result + 12); <span class="comment">// PM</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> (result == 12) ? 0 : result; <span class="comment">// AM</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="comment">// 24-hour mode.</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> fromBCD(value);</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;}</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
<div class="line"><a name="l00157"></a><span class="lineno"><a class="code" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6"> 157</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6" title="Reads the current time from the realtime clock into value.">DS1307RTC::readTime</a>(<a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value)</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;{</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (_isRealTime) {</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_SECOND);</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS1307_I2C_ADDRESS, 3)) {</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>() &amp; 0x7F);</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a> = fromHourBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="comment">// RTC chip is not responding.</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a> = 0;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a> = 0;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a> = 0;</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6" title="Reads the current time from the realtime clock into value.">RTC::readTime</a>(value);</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;}</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"><a class="code" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4"> 177</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4" title="Reads the current date from the realtime clock into value.">DS1307RTC::readDate</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value)</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">if</span> (!_isRealTime) {</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4" title="Reads the current date from the realtime clock into value.">RTC::readDate</a>(value);</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_DATE);</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS1307_I2C_ADDRESS, 3)) {</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>()) + 2000;</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="comment">// RTC chip is not responding.</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = 1;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = 1;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> = 2000;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</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;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keyword">inline</span> uint8_t toBCD(uint8_t value)</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;{</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">return</span> ((value / 10) &lt;&lt; 4) + (value % 10);</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="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8"> 202</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8" title="Updates the time in the realtime clock to match value.">DS1307RTC::writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value)</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; <span class="keywordflow">if</span> (_isRealTime) {</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_SECOND);</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a>));</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a>));</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a>)); <span class="comment">// Changes mode to 24-hour clock.</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();</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; <a class="code" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8" title="Updates the time in the realtime clock to match value.">RTC::writeTime</a>(value);</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;}</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"><a class="code" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230"> 216</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230" title="Updates the date in the realtime clock to match value.">DS1307RTC::writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value)</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; <span class="keywordflow">if</span> (_isRealTime) {</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_DATE);</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a>));</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a>));</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> % 100));</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230" title="Updates the date in the realtime clock to match value.">RTC::writeDate</a>(value);</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;}</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div>
<div class="line"><a name="l00230"></a><span class="lineno"><a class="code" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a"> 230</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a" title="Reads the details of the alarm with index alarmNum into value.">DS1307RTC::readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value)</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; <span class="keywordflow">if</span> (_isRealTime) {</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_ALARMS + alarmNum * DS1307_ALARM_SIZE);</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS1307_I2C_ADDRESS, 3)) {</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a> = _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();</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; <span class="comment">// RTC chip is not responding.</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a> = 0;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a> = 0;</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a> = 0;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a" title="Reads the details of the alarm with index alarmNum into value.">RTC::readAlarm</a>(alarmNum, value);</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</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"><a class="code" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75"> 250</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75" title="Updates the details of the alarm with index alarmNum from value.">DS1307RTC::writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value)</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; <span class="keywordflow">if</span> (_isRealTime) {</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_ALARMS + alarmNum * DS1307_ALARM_SIZE);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a>));</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a>));</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a>);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75" title="Updates the details of the alarm with index alarmNum from value.">RTC::writeAlarm</a>(alarmNum, value);</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</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;</div>
<div class="line"><a name="l00264"></a><span class="lineno"><a class="code" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248"> 264</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">DS1307RTC::byteCount</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> DS1307_ALARMS - DS1307_NVRAM;</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"> 268</span>&#160;</div>
<div class="line"><a name="l00269"></a><span class="lineno"><a class="code" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a"> 269</a></span>&#160;uint8_t <a class="code" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">DS1307RTC::readByte</a>(uint8_t offset)</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; <span class="keywordflow">if</span> (_isRealTime)</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> readRegister(DS1307_NVRAM + offset);</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">RTC::readByte</a>(offset);</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;}</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"><a class="code" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6"> 277</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">DS1307RTC::writeByte</a>(uint8_t offset, uint8_t value)</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;{</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (_isRealTime)</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; writeRegister(DS1307_NVRAM + offset, value);</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">RTC::writeByte</a>(offset, value);</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;}</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="keywordtype">void</span> DS1307RTC::initAlarms()</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; uint8_t value = readRegister(DS1307_ALARM_MAGIC);</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span> (value != (0xB0 + <a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3" title="Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm().">ALARM_COUNT</a>)) {</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="comment">// This is the first time we have used this clock chip,</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="comment">// so initialize all alarms to their default state.</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> alarm;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; alarm.<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a> = 6; <span class="comment">// Default to 6am for alarms.</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; alarm.<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a> = 0;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; alarm.<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a> = 0;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">for</span> (uint8_t index = 0; index &lt; <a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3" title="Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm().">ALARM_COUNT</a>; ++index)</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75" title="Updates the details of the alarm with index alarmNum from value.">writeAlarm</a>(index, &amp;alarm);</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; writeRegister(DS1307_ALARM_MAGIC, 0xB0 + ALARM_COUNT);</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="comment">// Also clear the rest of NVRAM so that it is in a known state.</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="comment">// Otherwise we&#39;ll have whatever garbage was present at power-on.</span></div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS1307_NVRAM);</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">for</span> (uint8_t index = DS1307_NVRAM; index &lt; DS1307_ALARMS; ++index)</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(0);</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</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;uint8_t DS1307RTC::readRegister(uint8_t reg)</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; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(reg);</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">if</span> (!_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS1307_I2C_ADDRESS, 1))</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">return</span> 0; <span class="comment">// RTC chip is not responding.</span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();</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="keywordtype">bool</span> DS1307RTC::writeRegister(uint8_t reg, uint8_t value)</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;{</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS1307_I2C_ADDRESS);</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(reg);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(value);</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: DS1307RTC.h Source File</title> <title>ArduinoLibs: DS1307RTC.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,82 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">DS1307RTC.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef DS1307RTC_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define DS1307RTC_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;RTC.h&quot;</span>
<a name="l00027"></a>00027
<a name="l00028"></a>00028 <span class="keyword">class </span><a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a>;
<a name="l00029"></a>00029
<a name="l00030"></a><a class="code" href="classDS1307RTC.html">00030</a> <span class="keyword">class </span><a class="code" href="classDS1307RTC.html" title="Communicates with a DS1307 realtime clock chip via I2C.">DS1307RTC</a> : <span class="keyword">public</span> <a class="code" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a> {
<a name="l00031"></a>00031 <span class="keyword">public</span>:
<a name="l00032"></a>00032 <a class="code" href="classDS1307RTC.html#a092805d75bea323dc4be062638bff866" title="Attaches to a realtime clock slave device on bus.">DS1307RTC</a>(<a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> &amp;bus, uint8_t oneHzPin = 255);
<a name="l00033"></a>00033
<a name="l00034"></a><a class="code" href="classDS1307RTC.html#aba01ca4c2f7863b610e5dfe9146886bd">00034</a> <span class="keywordtype">bool</span> <a class="code" href="classDS1307RTC.html#aba01ca4c2f7863b610e5dfe9146886bd" title="Returns true if the realtime clock is on the I2C bus; false if the time and date are simulated...">isRealTime</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _isRealTime; }
<a name="l00035"></a>00035
<a name="l00036"></a>00036 <span class="keywordtype">bool</span> <a class="code" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates</a>();
<a name="l00037"></a>00037
<a name="l00038"></a>00038 <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6" title="Reads the current time from the realtime clock into value.">readTime</a>(<a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value);
<a name="l00039"></a>00039 <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4" title="Reads the current date from the realtime clock into value.">readDate</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value);
<a name="l00040"></a>00040
<a name="l00041"></a>00041 <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8" title="Updates the time in the realtime clock to match value.">writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value);
<a name="l00042"></a>00042 <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230" title="Updates the date in the realtime clock to match value.">writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value);
<a name="l00043"></a>00043
<a name="l00044"></a>00044 <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a" title="Reads the details of the alarm with index alarmNum into value.">readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value);
<a name="l00045"></a>00045 <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75" title="Updates the details of the alarm with index alarmNum from value.">writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value);
<a name="l00046"></a>00046
<a name="l00047"></a>00047 <span class="keywordtype">int</span> <a class="code" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount</a>() <span class="keyword">const</span>;
<a name="l00048"></a>00048 uint8_t <a class="code" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">readByte</a>(uint8_t offset);
<a name="l00049"></a>00049 <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">writeByte</a>(uint8_t offset, uint8_t value);
<a name="l00050"></a>00050
<a name="l00051"></a>00051 <span class="keyword">private</span>:
<a name="l00052"></a>00052 <a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> *_bus;
<a name="l00053"></a>00053 uint8_t _oneHzPin;
<a name="l00054"></a>00054 <span class="keywordtype">bool</span> prevOneHz;
<a name="l00055"></a>00055 <span class="keywordtype">bool</span> _isRealTime;
<a name="l00056"></a>00056
<a name="l00057"></a>00057 <span class="keywordtype">void</span> initAlarms();
<a name="l00058"></a>00058
<a name="l00059"></a>00059 uint8_t readRegister(uint8_t reg);
<a name="l00060"></a>00060 <span class="keywordtype">bool</span> writeRegister(uint8_t reg, uint8_t value);
<a name="l00061"></a>00061 };
<a name="l00062"></a>00062
<a name="l00063"></a>00063 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -139,8 +77,85 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_f34881fcf60f680b800190d5274dfaea.html">RTC</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">DS1307RTC.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef DS1307RTC_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS1307RTC_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;RTC.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">class </span><a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a>;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"><a class="code" href="classDS1307RTC.html"> 30</a></span>&#160;<span class="keyword">class </span><a class="code" href="classDS1307RTC.html" title="Communicates with a DS1307 realtime clock chip via I2C.">DS1307RTC</a> : <span class="keyword">public</span> <a class="code" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a> {</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="classDS1307RTC.html#a092805d75bea323dc4be062638bff866" title="Attaches to a realtime clock slave device on bus.">DS1307RTC</a>(<a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> &amp;bus, uint8_t oneHzPin = 255);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="classDS1307RTC.html#aba01ca4c2f7863b610e5dfe9146886bd"> 34</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classDS1307RTC.html#aba01ca4c2f7863b610e5dfe9146886bd" title="Returns true if the realtime clock is on the I2C bus; false if the time and date are simulated...">isRealTime</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _isRealTime; }</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates</a>();</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6" title="Reads the current time from the realtime clock into value.">readTime</a>(<a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4" title="Reads the current date from the realtime clock into value.">readDate</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value);</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; <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8" title="Updates the time in the realtime clock to match value.">writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230" title="Updates the date in the realtime clock to match value.">writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a" title="Reads the details of the alarm with index alarmNum into value.">readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75" title="Updates the details of the alarm with index alarmNum from value.">writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; uint8_t <a class="code" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">readByte</a>(uint8_t offset);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">writeByte</a>(uint8_t offset, uint8_t value);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> *_bus;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; uint8_t _oneHzPin;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">bool</span> prevOneHz;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">bool</span> _isRealTime;</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="keywordtype">void</span> initAlarms();</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; uint8_t readRegister(uint8_t reg);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">bool</span> writeRegister(uint8_t reg, uint8_t value);</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;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: DS3232RTC.cpp Source File</title> <title>ArduinoLibs: DS3232RTC.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,458 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">DS3232RTC.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;DS3232RTC.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &quot;../I2C/I2CMaster.h&quot;</span>
<a name="l00025"></a>00025 <span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#else</span>
<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
<a name="l00029"></a>00029 <span class="preprocessor">#endif</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span>
<a name="l00059"></a>00059 <span class="comment">// I2C address of the RTC chip (7-bit).</span>
<a name="l00060"></a>00060 <span class="preprocessor">#define DS3232_I2C_ADDRESS 0x68</span>
<a name="l00061"></a>00061 <span class="preprocessor"></span>
<a name="l00062"></a>00062 <span class="comment">// Registers.</span>
<a name="l00063"></a>00063 <span class="preprocessor">#define DS3232_SECOND 0x00</span>
<a name="l00064"></a>00064 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_MINUTE 0x01</span>
<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_HOUR 0x02</span>
<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_DAY_OF_WEEK 0x03</span>
<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_DATE 0x04</span>
<a name="l00068"></a>00068 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_MONTH 0x05</span>
<a name="l00069"></a>00069 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_YEAR 0x06</span>
<a name="l00070"></a>00070 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM1_SEC 0x07</span>
<a name="l00071"></a>00071 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM1_MIN 0x08</span>
<a name="l00072"></a>00072 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM1_HOUR 0x09</span>
<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM1_DAY 0x0A</span>
<a name="l00074"></a>00074 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM2_MIN 0x0B</span>
<a name="l00075"></a>00075 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM2_HOUR 0x0C</span>
<a name="l00076"></a>00076 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM2_DAY 0x0D</span>
<a name="l00077"></a>00077 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_CONTROL 0x0E</span>
<a name="l00078"></a>00078 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_STATUS 0x0F</span>
<a name="l00079"></a>00079 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_AGING_OFFSET 0x10</span>
<a name="l00080"></a>00080 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_TEMP_MSB 0x11</span>
<a name="l00081"></a>00081 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_TEMP_LSB 0x12</span>
<a name="l00082"></a>00082 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_RESERVED 0x13</span>
<a name="l00083"></a>00083 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_NVRAM 0x14</span>
<a name="l00084"></a>00084 <span class="preprocessor"></span>
<a name="l00085"></a>00085 <span class="comment">// Bits in the DS3232_CONTROL register.</span>
<a name="l00086"></a>00086 <span class="preprocessor">#define DS3232_EOSC 0x80</span>
<a name="l00087"></a>00087 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_BBSQW 0x40</span>
<a name="l00088"></a>00088 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_CONV 0x20</span>
<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_RS_1HZ 0x00</span>
<a name="l00090"></a>00090 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_RS_1024HZ 0x08</span>
<a name="l00091"></a>00091 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_RS_4096HZ 0x10</span>
<a name="l00092"></a>00092 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_RS_8192HZ 0x18</span>
<a name="l00093"></a>00093 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_INTCN 0x04</span>
<a name="l00094"></a>00094 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_A2IE 0x02</span>
<a name="l00095"></a>00095 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_A1IE 0x01</span>
<a name="l00096"></a>00096 <span class="preprocessor"></span>
<a name="l00097"></a>00097 <span class="comment">// Bits in the DS3232_STATUS register.</span>
<a name="l00098"></a>00098 <span class="preprocessor">#define DS3232_OSF 0x80</span>
<a name="l00099"></a>00099 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_BB32KHZ 0x40</span>
<a name="l00100"></a>00100 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_CRATE_64 0x00</span>
<a name="l00101"></a>00101 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_CRATE_128 0x10</span>
<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_CRATE_256 0x20</span>
<a name="l00103"></a>00103 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_CRATE_512 0x30</span>
<a name="l00104"></a>00104 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_EN32KHZ 0x08</span>
<a name="l00105"></a>00105 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_BSY 0x04</span>
<a name="l00106"></a>00106 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_A2F 0x02</span>
<a name="l00107"></a>00107 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_A1F 0x01</span>
<a name="l00108"></a>00108 <span class="preprocessor"></span>
<a name="l00109"></a>00109 <span class="comment">// Alarm storage at the end of the RTC&#39;s NVRAM.</span>
<a name="l00110"></a>00110 <span class="preprocessor">#define DS3232_ALARM_SIZE 3</span>
<a name="l00111"></a>00111 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARMS (256 - RTC::ALARM_COUNT * DS3232_ALARM_SIZE - 1)</span>
<a name="l00112"></a>00112 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM_MAGIC 255</span>
<a name="l00113"></a>00113 <span class="preprocessor"></span>
<a name="l00126"></a><a class="code" href="classDS3232RTC.html#aa959454ae01b11c48d6ec7ec192b4ccb">00126</a> <a class="code" href="classDS3232RTC.html#aa959454ae01b11c48d6ec7ec192b4ccb" title="Attaches to a realtime clock slave device on bus.">DS3232RTC::DS3232RTC</a>(<a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> &amp;bus, uint8_t oneHzPin)
<a name="l00127"></a>00127 : _bus(&amp;bus)
<a name="l00128"></a>00128 , _oneHzPin(oneHzPin)
<a name="l00129"></a>00129 , prevOneHz(false)
<a name="l00130"></a>00130 , _isRealTime(true)
<a name="l00131"></a>00131 , alarmInterrupts(false)
<a name="l00132"></a>00132 {
<a name="l00133"></a>00133 <span class="comment">// Probe the device and configure it for our use.</span>
<a name="l00134"></a>00134 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);
<a name="l00135"></a>00135 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_CONTROL);
<a name="l00136"></a>00136 <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS3232_I2C_ADDRESS, 1)) {
<a name="l00137"></a>00137 uint8_t value = _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>() &amp; DS3232_CONV;
<a name="l00138"></a>00138 <span class="keywordflow">if</span> (oneHzPin != 255)
<a name="l00139"></a>00139 value |= DS3232_BBSQW | DS3232_RS_1HZ;
<a name="l00140"></a>00140 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);
<a name="l00141"></a>00141 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_CONTROL);
<a name="l00142"></a>00142 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(value);
<a name="l00143"></a>00143 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_CRATE_64);
<a name="l00144"></a>00144 _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();
<a name="l00145"></a>00145 } <span class="keywordflow">else</span> {
<a name="l00146"></a>00146 <span class="comment">// Did not get an acknowledgement from the RTC chip.</span>
<a name="l00147"></a>00147 _isRealTime = <span class="keyword">false</span>;
<a name="l00148"></a>00148 }
<a name="l00149"></a>00149
<a name="l00150"></a>00150 <span class="comment">// Configure the 1 Hz square wave pin if required.</span>
<a name="l00151"></a>00151 <span class="keywordflow">if</span> (oneHzPin != 255 &amp;&amp; _isRealTime) {
<a name="l00152"></a>00152 pinMode(oneHzPin, INPUT);
<a name="l00153"></a>00153 digitalWrite(oneHzPin, HIGH);
<a name="l00154"></a>00154 }
<a name="l00155"></a>00155
<a name="l00156"></a>00156 <span class="comment">// Initialize the alarms in the RTC chip&#39;s NVRAM.</span>
<a name="l00157"></a>00157 <span class="keywordflow">if</span> (_isRealTime)
<a name="l00158"></a>00158 initAlarms();
<a name="l00159"></a>00159 }
<a name="l00160"></a>00160
<a name="l00166"></a><a class="code" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc">00166</a> <span class="keywordtype">bool</span> <a class="code" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc" title="Returns true if the realtime clock has updated since the last call to this function.">DS3232RTC::hasUpdates</a>()
<a name="l00167"></a>00167 {
<a name="l00168"></a>00168 <span class="comment">// If not using a 1 Hz pin or there is no RTC chip available,</span>
<a name="l00169"></a>00169 <span class="comment">// then assume that there is an update available.</span>
<a name="l00170"></a>00170 <span class="keywordflow">if</span> (_oneHzPin == 255 || !_isRealTime)
<a name="l00171"></a>00171 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00172"></a>00172
<a name="l00173"></a>00173 <span class="comment">// The DS3232 updates the internal registers on the falling edge of the</span>
<a name="l00174"></a>00174 <span class="comment">// 1 Hz clock. The values should be ready to read on the rising edge.</span>
<a name="l00175"></a>00175 <span class="keywordtype">bool</span> value = digitalRead(_oneHzPin);
<a name="l00176"></a>00176 <span class="keywordflow">if</span> (value &amp;&amp; !prevOneHz) {
<a name="l00177"></a>00177 prevOneHz = value;
<a name="l00178"></a>00178 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00179"></a>00179 } <span class="keywordflow">else</span> {
<a name="l00180"></a>00180 prevOneHz = value;
<a name="l00181"></a>00181 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00182"></a>00182 }
<a name="l00183"></a>00183 }
<a name="l00184"></a>00184
<a name="l00185"></a>00185 <span class="keyword">inline</span> uint8_t fromBCD(uint8_t value)
<a name="l00186"></a>00186 {
<a name="l00187"></a>00187 <span class="keywordflow">return</span> (value &gt;&gt; 4) * 10 + (value &amp; 0x0F);
<a name="l00188"></a>00188 }
<a name="l00189"></a>00189
<a name="l00190"></a>00190 <span class="keyword">inline</span> uint8_t fromHourBCD(uint8_t value)
<a name="l00191"></a>00191 {
<a name="l00192"></a>00192 <span class="keywordflow">if</span> ((value &amp; 0x40) != 0) {
<a name="l00193"></a>00193 <span class="comment">// 12-hour mode.</span>
<a name="l00194"></a>00194 uint8_t result = ((value &gt;&gt; 4) &amp; 0x01) * 10 + (value &amp; 0x0F);
<a name="l00195"></a>00195 <span class="keywordflow">if</span> ((value &amp; 0x20) != 0)
<a name="l00196"></a>00196 <span class="keywordflow">return</span> (result == 12) ? 12 : (result + 12); <span class="comment">// PM</span>
<a name="l00197"></a>00197 <span class="keywordflow">else</span>
<a name="l00198"></a>00198 <span class="keywordflow">return</span> (result == 12) ? 0 : result; <span class="comment">// AM</span>
<a name="l00199"></a>00199 } <span class="keywordflow">else</span> {
<a name="l00200"></a>00200 <span class="comment">// 24-hour mode.</span>
<a name="l00201"></a>00201 <span class="keywordflow">return</span> fromBCD(value);
<a name="l00202"></a>00202 }
<a name="l00203"></a>00203 }
<a name="l00204"></a>00204
<a name="l00205"></a><a class="code" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747">00205</a> <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747" title="Reads the current time from the realtime clock into value.">DS3232RTC::readTime</a>(<a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value)
<a name="l00206"></a>00206 {
<a name="l00207"></a>00207 <span class="keywordflow">if</span> (_isRealTime) {
<a name="l00208"></a>00208 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);
<a name="l00209"></a>00209 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_SECOND);
<a name="l00210"></a>00210 <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS3232_I2C_ADDRESS, 3)) {
<a name="l00211"></a>00211 value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());
<a name="l00212"></a>00212 value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());
<a name="l00213"></a>00213 value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a> = fromHourBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());
<a name="l00214"></a>00214 } <span class="keywordflow">else</span> {
<a name="l00215"></a>00215 <span class="comment">// RTC chip is not responding.</span>
<a name="l00216"></a>00216 value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a> = 0;
<a name="l00217"></a>00217 value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a> = 0;
<a name="l00218"></a>00218 value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a> = 0;
<a name="l00219"></a>00219 }
<a name="l00220"></a>00220 } <span class="keywordflow">else</span> {
<a name="l00221"></a>00221 <a class="code" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747" title="Reads the current time from the realtime clock into value.">RTC::readTime</a>(value);
<a name="l00222"></a>00222 }
<a name="l00223"></a>00223 }
<a name="l00224"></a>00224
<a name="l00225"></a><a class="code" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca">00225</a> <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca" title="Reads the current date from the realtime clock into value.">DS3232RTC::readDate</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value)
<a name="l00226"></a>00226 {
<a name="l00227"></a>00227 <span class="keywordflow">if</span> (!_isRealTime) {
<a name="l00228"></a>00228 <a class="code" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca" title="Reads the current date from the realtime clock into value.">RTC::readDate</a>(value);
<a name="l00229"></a>00229 <span class="keywordflow">return</span>;
<a name="l00230"></a>00230 }
<a name="l00231"></a>00231 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);
<a name="l00232"></a>00232 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_DATE);
<a name="l00233"></a>00233 <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS3232_I2C_ADDRESS, 3)) {
<a name="l00234"></a>00234 value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());
<a name="l00235"></a>00235 value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>() &amp; 0x7F); <span class="comment">// Strip century bit.</span>
<a name="l00236"></a>00236 value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>()) + 2000;
<a name="l00237"></a>00237 } <span class="keywordflow">else</span> {
<a name="l00238"></a>00238 <span class="comment">// RTC chip is not responding.</span>
<a name="l00239"></a>00239 value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = 1;
<a name="l00240"></a>00240 value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = 1;
<a name="l00241"></a>00241 value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> = 2000;
<a name="l00242"></a>00242 }
<a name="l00243"></a>00243 }
<a name="l00244"></a>00244
<a name="l00245"></a>00245 <span class="keyword">inline</span> uint8_t toBCD(uint8_t value)
<a name="l00246"></a>00246 {
<a name="l00247"></a>00247 <span class="keywordflow">return</span> ((value / 10) &lt;&lt; 4) + (value % 10);
<a name="l00248"></a>00248 }
<a name="l00249"></a>00249
<a name="l00250"></a><a class="code" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78">00250</a> <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78" title="Updates the time in the realtime clock to match value.">DS3232RTC::writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value)
<a name="l00251"></a>00251 {
<a name="l00252"></a>00252 <span class="keywordflow">if</span> (_isRealTime) {
<a name="l00253"></a>00253 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);
<a name="l00254"></a>00254 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_SECOND);
<a name="l00255"></a>00255 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a>));
<a name="l00256"></a>00256 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a>));
<a name="l00257"></a>00257 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a>)); <span class="comment">// Changes mode to 24-hour clock.</span>
<a name="l00258"></a>00258 _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();
<a name="l00259"></a>00259 } <span class="keywordflow">else</span> {
<a name="l00260"></a>00260 <a class="code" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78" title="Updates the time in the realtime clock to match value.">RTC::writeTime</a>(value);
<a name="l00261"></a>00261 }
<a name="l00262"></a>00262 }
<a name="l00263"></a>00263
<a name="l00264"></a><a class="code" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed">00264</a> <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed" title="Updates the date in the realtime clock to match value.">DS3232RTC::writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value)
<a name="l00265"></a>00265 {
<a name="l00266"></a>00266 <span class="keywordflow">if</span> (_isRealTime) {
<a name="l00267"></a>00267 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);
<a name="l00268"></a>00268 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_DATE);
<a name="l00269"></a>00269 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a>));
<a name="l00270"></a>00270 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a>));
<a name="l00271"></a>00271 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> % 100));
<a name="l00272"></a>00272 _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();
<a name="l00273"></a>00273 } <span class="keywordflow">else</span> {
<a name="l00274"></a>00274 <a class="code" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed" title="Updates the date in the realtime clock to match value.">RTC::writeDate</a>(value);
<a name="l00275"></a>00275 }
<a name="l00276"></a>00276 }
<a name="l00277"></a>00277
<a name="l00278"></a><a class="code" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873">00278</a> <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873" title="Reads the details of the alarm with index alarmNum into value.">DS3232RTC::readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value)
<a name="l00279"></a>00279 {
<a name="l00280"></a>00280 <span class="keywordflow">if</span> (_isRealTime) {
<a name="l00281"></a>00281 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);
<a name="l00282"></a>00282 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_ALARMS + alarmNum * DS3232_ALARM_SIZE);
<a name="l00283"></a>00283 <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS3232_I2C_ADDRESS, 3)) {
<a name="l00284"></a>00284 value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());
<a name="l00285"></a>00285 value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());
<a name="l00286"></a>00286 value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a> = _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();
<a name="l00287"></a>00287 } <span class="keywordflow">else</span> {
<a name="l00288"></a>00288 <span class="comment">// RTC chip is not responding.</span>
<a name="l00289"></a>00289 value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a> = 0;
<a name="l00290"></a>00290 value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a> = 0;
<a name="l00291"></a>00291 value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a> = 0;
<a name="l00292"></a>00292 }
<a name="l00293"></a>00293 } <span class="keywordflow">else</span> {
<a name="l00294"></a>00294 <a class="code" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873" title="Reads the details of the alarm with index alarmNum into value.">RTC::readAlarm</a>(alarmNum, value);
<a name="l00295"></a>00295 }
<a name="l00296"></a>00296 }
<a name="l00297"></a>00297
<a name="l00298"></a><a class="code" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75">00298</a> <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75" title="Updates the details of the alarm with index alarmNum from value.">DS3232RTC::writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value)
<a name="l00299"></a>00299 {
<a name="l00300"></a>00300 <span class="keywordflow">if</span> (_isRealTime) {
<a name="l00301"></a>00301 <span class="comment">// Write the alarm details to NVRAM.</span>
<a name="l00302"></a>00302 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);
<a name="l00303"></a>00303 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_ALARMS + alarmNum * DS3232_ALARM_SIZE);
<a name="l00304"></a>00304 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a>));
<a name="l00305"></a>00305 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a>));
<a name="l00306"></a>00306 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a>);
<a name="l00307"></a>00307 _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();
<a name="l00308"></a>00308
<a name="l00309"></a>00309 <span class="comment">// Keep the DS3232&#39;s built-in alarms in sync with the first two alarms.</span>
<a name="l00310"></a>00310 <span class="keywordflow">if</span> (alarmNum == 0) {
<a name="l00311"></a>00311 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);
<a name="l00312"></a>00312 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_ALARM1_SEC);
<a name="l00313"></a>00313 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(0);
<a name="l00314"></a>00314 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a>));
<a name="l00315"></a>00315 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a>));
<a name="l00316"></a>00316 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(0x81); <span class="comment">// Match hours, mins, secs; day = 1</span>
<a name="l00317"></a>00317 _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();
<a name="l00318"></a>00318 <span class="keywordflow">if</span> (alarmInterrupts)
<a name="l00319"></a>00319 updateAlarmInterrupts();
<a name="l00320"></a>00320 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (alarmNum == 1) {
<a name="l00321"></a>00321 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);
<a name="l00322"></a>00322 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_ALARM2_MIN);
<a name="l00323"></a>00323 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a>));
<a name="l00324"></a>00324 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a>));
<a name="l00325"></a>00325 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(0x81); <span class="comment">// Match hours, mins; day = 1</span>
<a name="l00326"></a>00326 _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();
<a name="l00327"></a>00327 <span class="keywordflow">if</span> (alarmInterrupts)
<a name="l00328"></a>00328 updateAlarmInterrupts();
<a name="l00329"></a>00329 }
<a name="l00330"></a>00330 } <span class="keywordflow">else</span> {
<a name="l00331"></a>00331 <a class="code" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75" title="Updates the details of the alarm with index alarmNum from value.">RTC::writeAlarm</a>(alarmNum, value);
<a name="l00332"></a>00332 }
<a name="l00333"></a>00333 }
<a name="l00334"></a>00334
<a name="l00335"></a><a class="code" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e">00335</a> <span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">DS3232RTC::byteCount</a>()<span class="keyword"> const</span>
<a name="l00336"></a>00336 <span class="keyword"></span>{
<a name="l00337"></a>00337 <span class="keywordflow">return</span> DS3232_ALARMS - DS3232_NVRAM;
<a name="l00338"></a>00338 }
<a name="l00339"></a>00339
<a name="l00340"></a><a class="code" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7">00340</a> uint8_t <a class="code" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">DS3232RTC::readByte</a>(uint8_t offset)
<a name="l00341"></a>00341 {
<a name="l00342"></a>00342 <span class="keywordflow">if</span> (_isRealTime)
<a name="l00343"></a>00343 <span class="keywordflow">return</span> readRegister(DS3232_NVRAM + offset);
<a name="l00344"></a>00344 <span class="keywordflow">else</span>
<a name="l00345"></a>00345 <span class="keywordflow">return</span> <a class="code" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">RTC::readByte</a>(offset);
<a name="l00346"></a>00346 }
<a name="l00347"></a>00347
<a name="l00348"></a><a class="code" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a">00348</a> <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">DS3232RTC::writeByte</a>(uint8_t offset, uint8_t value)
<a name="l00349"></a>00349 {
<a name="l00350"></a>00350 <span class="keywordflow">if</span> (_isRealTime)
<a name="l00351"></a>00351 writeRegister(DS3232_NVRAM + offset, value);
<a name="l00352"></a>00352 <span class="keywordflow">else</span>
<a name="l00353"></a>00353 <a class="code" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">RTC::writeByte</a>(offset, value);
<a name="l00354"></a>00354 }
<a name="l00355"></a>00355
<a name="l00356"></a><a class="code" href="classDS3232RTC.html#a0faf40c25ab019a326a60f301c2bb41b">00356</a> <span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a0faf40c25ab019a326a60f301c2bb41b" title="Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius...">DS3232RTC::readTemperature</a>()
<a name="l00357"></a>00357 {
<a name="l00358"></a>00358 <span class="keywordflow">if</span> (_isRealTime) {
<a name="l00359"></a>00359 <span class="keywordflow">return</span> (((<span class="keywordtype">int</span>)(<span class="keywordtype">signed</span> <span class="keywordtype">char</span>)readRegister(DS3232_TEMP_MSB)) &lt;&lt; 2) |
<a name="l00360"></a>00360 (readRegister(DS3232_TEMP_LSB) &gt;&gt; 6);
<a name="l00361"></a>00361 } <span class="keywordflow">else</span> {
<a name="l00362"></a>00362 <span class="keywordflow">return</span> <a class="code" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8" title="Value that is returned from readTemperature() if the realtime clock chip cannot determine the tempera...">NO_TEMPERATURE</a>;
<a name="l00363"></a>00363 }
<a name="l00364"></a>00364 }
<a name="l00365"></a>00365
<a name="l00380"></a><a class="code" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9">00380</a> <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9" title="Enables the generation of interrupts for alarms 0 and 1.">DS3232RTC::enableAlarmInterrupts</a>()
<a name="l00381"></a>00381 {
<a name="l00382"></a>00382 <span class="keywordflow">if</span> (_oneHzPin == 255 &amp;&amp; _isRealTime) {
<a name="l00383"></a>00383 updateAlarmInterrupts();
<a name="l00384"></a>00384 alarmInterrupts = <span class="keyword">true</span>;
<a name="l00385"></a>00385 }
<a name="l00386"></a>00386 }
<a name="l00387"></a>00387
<a name="l00393"></a><a class="code" href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9">00393</a> <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9" title="Disables the generation of interrupts for alarms 0 and 1.">DS3232RTC::disableAlarmInterrupts</a>()
<a name="l00394"></a>00394 {
<a name="l00395"></a>00395 <span class="keywordflow">if</span> (alarmInterrupts) {
<a name="l00396"></a>00396 uint8_t value = readRegister(DS3232_CONTROL);
<a name="l00397"></a>00397 value &amp;= ~(DS3232_INTCN | DS3232_A2IE | DS3232_A1IE);
<a name="l00398"></a>00398 writeRegister(DS3232_CONTROL, value);
<a name="l00399"></a>00399 alarmInterrupts = <span class="keyword">false</span>;
<a name="l00400"></a>00400 }
<a name="l00401"></a>00401 }
<a name="l00402"></a>00402
<a name="l00416"></a><a class="code" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3">00416</a> <span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3" title="Determines which of alarms 0 or 1 have fired since the last call.">DS3232RTC::firedAlarm</a>()
<a name="l00417"></a>00417 {
<a name="l00418"></a>00418 <span class="keywordflow">if</span> (!_isRealTime)
<a name="l00419"></a>00419 <span class="keywordflow">return</span> -1;
<a name="l00420"></a>00420 uint8_t value = readRegister(DS3232_STATUS);
<a name="l00421"></a>00421 <span class="keywordtype">int</span> alarm;
<a name="l00422"></a>00422 <span class="keywordflow">if</span> (value &amp; DS3232_A1F) {
<a name="l00423"></a>00423 <span class="keywordflow">if</span> (value &amp; DS3232_A2F)
<a name="l00424"></a>00424 alarm = 2;
<a name="l00425"></a>00425 <span class="keywordflow">else</span>
<a name="l00426"></a>00426 alarm = 0;
<a name="l00427"></a>00427 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value &amp; DS3232_A2F) {
<a name="l00428"></a>00428 alarm = 1;
<a name="l00429"></a>00429 } <span class="keywordflow">else</span> {
<a name="l00430"></a>00430 alarm = -1;
<a name="l00431"></a>00431 }
<a name="l00432"></a>00432 <span class="keywordflow">if</span> (alarm != -1) {
<a name="l00433"></a>00433 value &amp;= ~(DS3232_A1F | DS3232_A2F);
<a name="l00434"></a>00434 writeRegister(DS3232_STATUS, value);
<a name="l00435"></a>00435 }
<a name="l00436"></a>00436 <span class="keywordflow">return</span> alarm;
<a name="l00437"></a>00437 }
<a name="l00438"></a>00438
<a name="l00444"></a><a class="code" href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a">00444</a> <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a" title="Enables the 32 kHz output on the DS3232 chip.">DS3232RTC::enable32kHzOutput</a>()
<a name="l00445"></a>00445 {
<a name="l00446"></a>00446 <span class="keywordflow">if</span> (_isRealTime) {
<a name="l00447"></a>00447 uint8_t value = readRegister(DS3232_STATUS);
<a name="l00448"></a>00448 value |= DS3232_BB32KHZ | DS3232_EN32KHZ;
<a name="l00449"></a>00449 writeRegister(DS3232_STATUS, value);
<a name="l00450"></a>00450 }
<a name="l00451"></a>00451 }
<a name="l00452"></a>00452
<a name="l00458"></a><a class="code" href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb">00458</a> <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb" title="Disables the 32 kHz output on the DS3232 chip.">DS3232RTC::disable32kHzOutput</a>()
<a name="l00459"></a>00459 {
<a name="l00460"></a>00460 <span class="keywordflow">if</span> (_isRealTime) {
<a name="l00461"></a>00461 uint8_t value = readRegister(DS3232_STATUS);
<a name="l00462"></a>00462 value &amp;= ~(DS3232_BB32KHZ | DS3232_EN32KHZ);
<a name="l00463"></a>00463 writeRegister(DS3232_STATUS, value);
<a name="l00464"></a>00464 }
<a name="l00465"></a>00465 }
<a name="l00466"></a>00466
<a name="l00467"></a>00467 <span class="keywordtype">void</span> DS3232RTC::initAlarms()
<a name="l00468"></a>00468 {
<a name="l00469"></a>00469 uint8_t value = readRegister(DS3232_ALARM_MAGIC);
<a name="l00470"></a>00470 <span class="keywordflow">if</span> (value != (0xB0 + <a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3" title="Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm().">ALARM_COUNT</a>)) {
<a name="l00471"></a>00471 <span class="comment">// This is the first time we have used this clock chip,</span>
<a name="l00472"></a>00472 <span class="comment">// so initialize all alarms to their default state.</span>
<a name="l00473"></a>00473 <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> alarm;
<a name="l00474"></a>00474 alarm.<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a> = 6; <span class="comment">// Default to 6am for alarms.</span>
<a name="l00475"></a>00475 alarm.<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a> = 0;
<a name="l00476"></a>00476 alarm.<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a> = 0;
<a name="l00477"></a>00477 <span class="keywordflow">for</span> (uint8_t index = 0; index &lt; <a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3" title="Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm().">ALARM_COUNT</a>; ++index)
<a name="l00478"></a>00478 <a class="code" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75" title="Updates the details of the alarm with index alarmNum from value.">writeAlarm</a>(index, &amp;alarm);
<a name="l00479"></a>00479 writeRegister(DS3232_ALARM_MAGIC, 0xB0 + ALARM_COUNT);
<a name="l00480"></a>00480
<a name="l00481"></a>00481 <span class="comment">// Also clear the rest of NVRAM so that it is in a known state.</span>
<a name="l00482"></a>00482 <span class="comment">// Otherwise we&#39;ll have whatever garbage was present at power-on.</span>
<a name="l00483"></a>00483 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);
<a name="l00484"></a>00484 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_NVRAM);
<a name="l00485"></a>00485 <span class="keywordflow">for</span> (uint8_t index = DS3232_NVRAM; index &lt; DS3232_ALARMS; ++index)
<a name="l00486"></a>00486 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(0);
<a name="l00487"></a>00487 _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();
<a name="l00488"></a>00488 }
<a name="l00489"></a>00489 }
<a name="l00490"></a>00490
<a name="l00491"></a>00491 uint8_t DS3232RTC::readRegister(uint8_t reg)
<a name="l00492"></a>00492 {
<a name="l00493"></a>00493 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);
<a name="l00494"></a>00494 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(reg);
<a name="l00495"></a>00495 <span class="keywordflow">if</span> (!_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS3232_I2C_ADDRESS, 1))
<a name="l00496"></a>00496 <span class="keywordflow">return</span> 0; <span class="comment">// RTC chip is not responding.</span>
<a name="l00497"></a>00497 <span class="keywordflow">return</span> _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();
<a name="l00498"></a>00498 }
<a name="l00499"></a>00499
<a name="l00500"></a>00500 <span class="keywordtype">bool</span> DS3232RTC::writeRegister(uint8_t reg, uint8_t value)
<a name="l00501"></a>00501 {
<a name="l00502"></a>00502 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);
<a name="l00503"></a>00503 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(reg);
<a name="l00504"></a>00504 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(value);
<a name="l00505"></a>00505 <span class="keywordflow">return</span> _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();
<a name="l00506"></a>00506 }
<a name="l00507"></a>00507
<a name="l00508"></a>00508 <span class="preprocessor">#define DS3232_ALARM1_FLAGS (DS3232_ALARMS + 2)</span>
<a name="l00509"></a>00509 <span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM2_FLAGS (DS3232_ALARMS + DS3232_ALARM_SIZE + 2)</span>
<a name="l00510"></a>00510 <span class="preprocessor"></span>
<a name="l00511"></a>00511 <span class="keywordtype">void</span> DS3232RTC::updateAlarmInterrupts()
<a name="l00512"></a>00512 {
<a name="l00513"></a>00513 <span class="keywordtype">bool</span> alarm1Enabled = ((readRegister(DS3232_ALARM1_FLAGS) &amp; 0x01) != 0);
<a name="l00514"></a>00514 <span class="keywordtype">bool</span> alarm2Enabled = ((readRegister(DS3232_ALARM2_FLAGS) &amp; 0x01) != 0);
<a name="l00515"></a>00515 uint8_t value = readRegister(DS3232_CONTROL);
<a name="l00516"></a>00516 value |= DS3232_INTCN;
<a name="l00517"></a>00517 <span class="keywordflow">if</span> (alarm1Enabled)
<a name="l00518"></a>00518 value |= DS3232_A1IE;
<a name="l00519"></a>00519 <span class="keywordflow">else</span>
<a name="l00520"></a>00520 value &amp;= ~DS3232_A1IE;
<a name="l00521"></a>00521 <span class="keywordflow">if</span> (alarm2Enabled)
<a name="l00522"></a>00522 value |= DS3232_A2IE;
<a name="l00523"></a>00523 <span class="keywordflow">else</span>
<a name="l00524"></a>00524 value &amp;= ~DS3232_A2IE;
<a name="l00525"></a>00525 writeRegister(DS3232_CONTROL, value);
<a name="l00526"></a>00526 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -515,8 +77,461 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_f34881fcf60f680b800190d5274dfaea.html">RTC</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">DS3232RTC.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;DS3232RTC.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;../I2C/I2CMaster.h&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment">// I2C address of the RTC chip (7-bit).</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#define DS3232_I2C_ADDRESS 0x68</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="comment">// Registers.</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#define DS3232_SECOND 0x00</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_MINUTE 0x01</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_HOUR 0x02</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_DAY_OF_WEEK 0x03</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_DATE 0x04</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_MONTH 0x05</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_YEAR 0x06</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM1_SEC 0x07</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM1_MIN 0x08</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM1_HOUR 0x09</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM1_DAY 0x0A</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM2_MIN 0x0B</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM2_HOUR 0x0C</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM2_DAY 0x0D</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_CONTROL 0x0E</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_STATUS 0x0F</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_AGING_OFFSET 0x10</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_TEMP_MSB 0x11</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_TEMP_LSB 0x12</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_RESERVED 0x13</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_NVRAM 0x14</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment">// Bits in the DS3232_CONTROL register.</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="preprocessor">#define DS3232_EOSC 0x80</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_BBSQW 0x40</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_CONV 0x20</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_RS_1HZ 0x00</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_RS_1024HZ 0x08</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_RS_4096HZ 0x10</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_RS_8192HZ 0x18</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_INTCN 0x04</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_A2IE 0x02</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_A1IE 0x01</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">// Bits in the DS3232_STATUS register.</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor">#define DS3232_OSF 0x80</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_BB32KHZ 0x40</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_CRATE_64 0x00</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_CRATE_128 0x10</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_CRATE_256 0x20</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_CRATE_512 0x30</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_EN32KHZ 0x08</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_BSY 0x04</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_A2F 0x02</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_A1F 0x01</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment">// Alarm storage at the end of the RTC&#39;s NVRAM.</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor">#define DS3232_ALARM_SIZE 3</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARMS (256 - RTC::ALARM_COUNT * DS3232_ALARM_SIZE - 1)</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM_MAGIC 255</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="l00126"></a><span class="lineno"><a class="code" href="classDS3232RTC.html#aa959454ae01b11c48d6ec7ec192b4ccb"> 126</a></span>&#160;<a class="code" href="classDS3232RTC.html#aa959454ae01b11c48d6ec7ec192b4ccb" title="Attaches to a realtime clock slave device on bus.">DS3232RTC::DS3232RTC</a>(<a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> &amp;bus, uint8_t oneHzPin)</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; : _bus(&amp;bus)</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; , _oneHzPin(oneHzPin)</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; , prevOneHz(false)</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; , _isRealTime(true)</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; , alarmInterrupts(false)</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;{</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">// Probe the device and configure it for our use.</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_CONTROL);</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS3232_I2C_ADDRESS, 1)) {</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; uint8_t value = _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>() &amp; DS3232_CONV;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">if</span> (oneHzPin != 255)</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; value |= DS3232_BBSQW | DS3232_RS_1HZ;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_CONTROL);</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(value);</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_CRATE_64);</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// Did not get an acknowledgement from the RTC chip.</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; _isRealTime = <span class="keyword">false</span>;</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;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="comment">// Configure the 1 Hz square wave pin if required.</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> (oneHzPin != 255 &amp;&amp; _isRealTime) {</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; pinMode(oneHzPin, INPUT);</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; digitalWrite(oneHzPin, HIGH);</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;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="comment">// Initialize the alarms in the RTC chip&#39;s NVRAM.</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (_isRealTime)</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; initAlarms();</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;}</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div>
<div class="line"><a name="l00166"></a><span class="lineno"><a class="code" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc"> 166</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc" title="Returns true if the realtime clock has updated since the last call to this function.">DS3232RTC::hasUpdates</a>()</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; <span class="comment">// If not using a 1 Hz pin or there is no RTC chip available,</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="comment">// then assume that there is an update available.</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">if</span> (_oneHzPin == 255 || !_isRealTime)</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</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">// The DS3232 updates the internal registers on the falling edge of the</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="comment">// 1 Hz clock. The values should be ready to read on the rising edge.</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordtype">bool</span> value = digitalRead(_oneHzPin);</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span> (value &amp;&amp; !prevOneHz) {</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; prevOneHz = value;</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; prevOneHz = value;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</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;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="keyword">inline</span> uint8_t fromBCD(uint8_t value)</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="keywordflow">return</span> (value &gt;&gt; 4) * 10 + (value &amp; 0x0F);</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</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;<span class="keyword">inline</span> uint8_t fromHourBCD(uint8_t value)</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="keywordflow">if</span> ((value &amp; 0x40) != 0) {</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment">// 12-hour mode.</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; uint8_t result = ((value &gt;&gt; 4) &amp; 0x01) * 10 + (value &amp; 0x0F);</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> ((value &amp; 0x20) != 0)</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> (result == 12) ? 12 : (result + 12); <span class="comment">// PM</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> (result == 12) ? 0 : result; <span class="comment">// AM</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// 24-hour mode.</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> fromBCD(value);</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;}</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="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747"> 205</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747" title="Reads the current time from the realtime clock into value.">DS3232RTC::readTime</a>(<a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value)</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"> 207</span>&#160; <span class="keywordflow">if</span> (_isRealTime) {</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_SECOND);</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS3232_I2C_ADDRESS, 3)) {</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a> = fromHourBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());</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; <span class="comment">// RTC chip is not responding.</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a> = 0;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a> = 0;</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a> = 0;</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; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747" title="Reads the current time from the realtime clock into value.">RTC::readTime</a>(value);</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;}</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="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca"> 225</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca" title="Reads the current date from the realtime clock into value.">DS3232RTC::readDate</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value)</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="keywordflow">if</span> (!_isRealTime) {</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca" title="Reads the current date from the realtime clock into value.">RTC::readDate</a>(value);</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span>;</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; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_DATE);</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS3232_I2C_ADDRESS, 3)) {</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>() &amp; 0x7F); <span class="comment">// Strip century bit.</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>()) + 2000;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// RTC chip is not responding.</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = 1;</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = 1;</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> = 2000;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</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;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="keyword">inline</span> uint8_t toBCD(uint8_t value)</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">return</span> ((value / 10) &lt;&lt; 4) + (value % 10);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</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"><a class="code" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78"> 250</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78" title="Updates the time in the realtime clock to match value.">DS3232RTC::writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value)</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; <span class="keywordflow">if</span> (_isRealTime) {</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_SECOND);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a>));</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a>));</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a>)); <span class="comment">// Changes mode to 24-hour clock.</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78" title="Updates the time in the realtime clock to match value.">RTC::writeTime</a>(value);</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</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;</div>
<div class="line"><a name="l00264"></a><span class="lineno"><a class="code" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed"> 264</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed" title="Updates the date in the realtime clock to match value.">DS3232RTC::writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value)</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;{</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (_isRealTime) {</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_DATE);</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a>));</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a>));</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> % 100));</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed" title="Updates the date in the realtime clock to match value.">RTC::writeDate</a>(value);</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</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;</div>
<div class="line"><a name="l00278"></a><span class="lineno"><a class="code" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873"> 278</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873" title="Reads the details of the alarm with index alarmNum into value.">DS3232RTC::readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value)</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">if</span> (_isRealTime) {</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_ALARMS + alarmNum * DS3232_ALARM_SIZE);</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS3232_I2C_ADDRESS, 3)) {</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>());</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a> = _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// RTC chip is not responding.</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a> = 0;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a> = 0;</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a> = 0;</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; <a class="code" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873" title="Reads the details of the alarm with index alarmNum into value.">RTC::readAlarm</a>(alarmNum, value);</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"><a class="code" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75"> 298</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75" title="Updates the details of the alarm with index alarmNum from value.">DS3232RTC::writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value)</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;{</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span> (_isRealTime) {</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="comment">// Write the alarm details to NVRAM.</span></div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_ALARMS + alarmNum * DS3232_ALARM_SIZE);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a>));</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a>));</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a>);</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();</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; <span class="comment">// Keep the DS3232&#39;s built-in alarms in sync with the first two alarms.</span></div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> (alarmNum == 0) {</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_ALARM1_SEC);</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(0);</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a>));</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a>));</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(0x81); <span class="comment">// Match hours, mins, secs; day = 1</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">if</span> (alarmInterrupts)</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; updateAlarmInterrupts();</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (alarmNum == 1) {</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_ALARM2_MIN);</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a>));</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a>));</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(0x81); <span class="comment">// Match hours, mins; day = 1</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span> (alarmInterrupts)</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; updateAlarmInterrupts();</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75" title="Updates the details of the alarm with index alarmNum from value.">RTC::writeAlarm</a>(alarmNum, value);</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;}</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div>
<div class="line"><a name="l00335"></a><span class="lineno"><a class="code" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e"> 335</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">DS3232RTC::byteCount</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">return</span> DS3232_ALARMS - DS3232_NVRAM;</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;}</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"><a class="code" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7"> 340</a></span>&#160;uint8_t <a class="code" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">DS3232RTC::readByte</a>(uint8_t offset)</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="keywordflow">if</span> (_isRealTime)</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> readRegister(DS3232_NVRAM + offset);</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">RTC::readByte</a>(offset);</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;}</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;</div>
<div class="line"><a name="l00348"></a><span class="lineno"><a class="code" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a"> 348</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">DS3232RTC::writeByte</a>(uint8_t offset, uint8_t value)</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;{</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span> (_isRealTime)</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; writeRegister(DS3232_NVRAM + offset, value);</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">RTC::writeByte</a>(offset, value);</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;</div>
<div class="line"><a name="l00356"></a><span class="lineno"><a class="code" href="classDS3232RTC.html#a0faf40c25ab019a326a60f301c2bb41b"> 356</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a0faf40c25ab019a326a60f301c2bb41b" title="Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius...">DS3232RTC::readTemperature</a>()</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;{</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">if</span> (_isRealTime) {</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">return</span> (((<span class="keywordtype">int</span>)(<span class="keywordtype">signed</span> <span class="keywordtype">char</span>)readRegister(DS3232_TEMP_MSB)) &lt;&lt; 2) |</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; (readRegister(DS3232_TEMP_LSB) &gt;&gt; 6);</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8" title="Value that is returned from readTemperature() if the realtime clock chip cannot determine the tempera...">NO_TEMPERATURE</a>;</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"> 365</span>&#160;</div>
<div class="line"><a name="l00380"></a><span class="lineno"><a class="code" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9"> 380</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9" title="Enables the generation of interrupts for alarms 0 and 1.">DS3232RTC::enableAlarmInterrupts</a>()</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="keywordflow">if</span> (_oneHzPin == 255 &amp;&amp; _isRealTime) {</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; updateAlarmInterrupts();</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; alarmInterrupts = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</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;</div>
<div class="line"><a name="l00393"></a><span class="lineno"><a class="code" href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9"> 393</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9" title="Disables the generation of interrupts for alarms 0 and 1.">DS3232RTC::disableAlarmInterrupts</a>()</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;{</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">if</span> (alarmInterrupts) {</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; uint8_t value = readRegister(DS3232_CONTROL);</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; value &amp;= ~(DS3232_INTCN | DS3232_A2IE | DS3232_A1IE);</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; writeRegister(DS3232_CONTROL, value);</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; alarmInterrupts = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;}</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;</div>
<div class="line"><a name="l00416"></a><span class="lineno"><a class="code" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3"> 416</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3" title="Determines which of alarms 0 or 1 have fired since the last call.">DS3232RTC::firedAlarm</a>()</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;{</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">if</span> (!_isRealTime)</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; uint8_t value = readRegister(DS3232_STATUS);</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordtype">int</span> alarm;</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (value &amp; DS3232_A1F) {</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">if</span> (value &amp; DS3232_A2F)</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; alarm = 2;</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; alarm = 0;</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value &amp; DS3232_A2F) {</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; alarm = 1;</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; alarm = -1;</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span> (alarm != -1) {</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; value &amp;= ~(DS3232_A1F | DS3232_A2F);</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; writeRegister(DS3232_STATUS, value);</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="keywordflow">return</span> alarm;</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;</div>
<div class="line"><a name="l00444"></a><span class="lineno"><a class="code" href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a"> 444</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a" title="Enables the 32 kHz output on the DS3232 chip.">DS3232RTC::enable32kHzOutput</a>()</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;{</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">if</span> (_isRealTime) {</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; uint8_t value = readRegister(DS3232_STATUS);</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; value |= DS3232_BB32KHZ | DS3232_EN32KHZ;</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; writeRegister(DS3232_STATUS, value);</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;}</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div>
<div class="line"><a name="l00458"></a><span class="lineno"><a class="code" href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb"> 458</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb" title="Disables the 32 kHz output on the DS3232 chip.">DS3232RTC::disable32kHzOutput</a>()</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;{</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">if</span> (_isRealTime) {</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; uint8_t value = readRegister(DS3232_STATUS);</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; value &amp;= ~(DS3232_BB32KHZ | DS3232_EN32KHZ);</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; writeRegister(DS3232_STATUS, value);</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</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;</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="keywordtype">void</span> DS3232RTC::initAlarms()</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;{</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; uint8_t value = readRegister(DS3232_ALARM_MAGIC);</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">if</span> (value != (0xB0 + <a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3" title="Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm().">ALARM_COUNT</a>)) {</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="comment">// This is the first time we have used this clock chip,</span></div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="comment">// so initialize all alarms to their default state.</span></div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> alarm;</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; alarm.<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a> = 6; <span class="comment">// Default to 6am for alarms.</span></div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; alarm.<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a> = 0;</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; alarm.<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a> = 0;</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">for</span> (uint8_t index = 0; index &lt; <a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3" title="Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm().">ALARM_COUNT</a>; ++index)</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <a class="code" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75" title="Updates the details of the alarm with index alarmNum from value.">writeAlarm</a>(index, &amp;alarm);</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; writeRegister(DS3232_ALARM_MAGIC, 0xB0 + ALARM_COUNT);</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="comment">// Also clear the rest of NVRAM so that it is in a known state.</span></div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="comment">// Otherwise we&#39;ll have whatever garbage was present at power-on.</span></div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(DS3232_NVRAM);</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">for</span> (uint8_t index = DS3232_NVRAM; index &lt; DS3232_ALARMS; ++index)</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(0);</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;}</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;uint8_t DS3232RTC::readRegister(uint8_t reg)</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;{</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(reg);</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">if</span> (!_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(DS3232_I2C_ADDRESS, 1))</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">return</span> 0; <span class="comment">// RTC chip is not responding.</span></div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">return</span> _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;}</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="keywordtype">bool</span> DS3232RTC::writeRegister(uint8_t reg, uint8_t value)</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;{</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(DS3232_I2C_ADDRESS);</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(reg);</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(value);</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">return</span> _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>();</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;}</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="preprocessor">#define DS3232_ALARM1_FLAGS (DS3232_ALARMS + 2)</span></div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232_ALARM2_FLAGS (DS3232_ALARMS + DS3232_ALARM_SIZE + 2)</span></div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="keywordtype">void</span> DS3232RTC::updateAlarmInterrupts()</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;{</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordtype">bool</span> alarm1Enabled = ((readRegister(DS3232_ALARM1_FLAGS) &amp; 0x01) != 0);</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordtype">bool</span> alarm2Enabled = ((readRegister(DS3232_ALARM2_FLAGS) &amp; 0x01) != 0);</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; uint8_t value = readRegister(DS3232_CONTROL);</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; value |= DS3232_INTCN;</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">if</span> (alarm1Enabled)</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; value |= DS3232_A1IE;</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; value &amp;= ~DS3232_A1IE;</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">if</span> (alarm2Enabled)</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; value |= DS3232_A2IE;</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; value &amp;= ~DS3232_A2IE;</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; writeRegister(DS3232_CONTROL, value);</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: DS3232RTC.h Source File</title> <title>ArduinoLibs: DS3232RTC.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,94 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">DS3232RTC.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef DS3232RTC_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define DS3232RTC_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;RTC.h&quot;</span>
<a name="l00027"></a>00027
<a name="l00028"></a>00028 <span class="keyword">class </span><a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a>;
<a name="l00029"></a>00029
<a name="l00030"></a><a class="code" href="classDS3232RTC.html">00030</a> <span class="keyword">class </span><a class="code" href="classDS3232RTC.html" title="Communicates with a DS3232 realtime clock chip via I2C.">DS3232RTC</a> : <span class="keyword">public</span> <a class="code" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a> {
<a name="l00031"></a>00031 <span class="keyword">public</span>:
<a name="l00032"></a>00032 <a class="code" href="classDS3232RTC.html#aa959454ae01b11c48d6ec7ec192b4ccb" title="Attaches to a realtime clock slave device on bus.">DS3232RTC</a>(<a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> &amp;bus, uint8_t oneHzPin = 255);
<a name="l00033"></a>00033
<a name="l00034"></a><a class="code" href="classDS3232RTC.html#acc5908a3743afb4c26bd75e22cad87a4">00034</a> <span class="keywordtype">bool</span> <a class="code" href="classDS3232RTC.html#acc5908a3743afb4c26bd75e22cad87a4" title="Returns true if the realtime clock is on the I2C bus; false if the time and date are simulated...">isRealTime</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _isRealTime; }
<a name="l00035"></a>00035
<a name="l00036"></a>00036 <span class="keywordtype">bool</span> <a class="code" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates</a>();
<a name="l00037"></a>00037
<a name="l00038"></a>00038 <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747" title="Reads the current time from the realtime clock into value.">readTime</a>(<a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value);
<a name="l00039"></a>00039 <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca" title="Reads the current date from the realtime clock into value.">readDate</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value);
<a name="l00040"></a>00040
<a name="l00041"></a>00041 <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78" title="Updates the time in the realtime clock to match value.">writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value);
<a name="l00042"></a>00042 <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed" title="Updates the date in the realtime clock to match value.">writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value);
<a name="l00043"></a>00043
<a name="l00044"></a>00044 <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873" title="Reads the details of the alarm with index alarmNum into value.">readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value);
<a name="l00045"></a>00045 <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75" title="Updates the details of the alarm with index alarmNum from value.">writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value);
<a name="l00046"></a>00046
<a name="l00047"></a>00047 <span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount</a>() <span class="keyword">const</span>;
<a name="l00048"></a>00048 uint8_t <a class="code" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">readByte</a>(uint8_t offset);
<a name="l00049"></a>00049 <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">writeByte</a>(uint8_t offset, uint8_t value);
<a name="l00050"></a>00050
<a name="l00051"></a>00051 <span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a0faf40c25ab019a326a60f301c2bb41b" title="Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius...">readTemperature</a>();
<a name="l00052"></a>00052
<a name="l00053"></a>00053 <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9" title="Enables the generation of interrupts for alarms 0 and 1.">enableAlarmInterrupts</a>();
<a name="l00054"></a>00054 <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9" title="Disables the generation of interrupts for alarms 0 and 1.">disableAlarmInterrupts</a>();
<a name="l00055"></a>00055 <span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3" title="Determines which of alarms 0 or 1 have fired since the last call.">firedAlarm</a>();
<a name="l00056"></a>00056
<a name="l00057"></a>00057 <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a" title="Enables the 32 kHz output on the DS3232 chip.">enable32kHzOutput</a>();
<a name="l00058"></a>00058 <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb" title="Disables the 32 kHz output on the DS3232 chip.">disable32kHzOutput</a>();
<a name="l00059"></a>00059
<a name="l00060"></a>00060 <span class="keyword">private</span>:
<a name="l00061"></a>00061 <a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> *_bus;
<a name="l00062"></a>00062 uint8_t _oneHzPin;
<a name="l00063"></a>00063 <span class="keywordtype">bool</span> prevOneHz;
<a name="l00064"></a>00064 <span class="keywordtype">bool</span> _isRealTime;
<a name="l00065"></a>00065 <span class="keywordtype">bool</span> alarmInterrupts;
<a name="l00066"></a>00066
<a name="l00067"></a>00067 <span class="keywordtype">void</span> initAlarms();
<a name="l00068"></a>00068
<a name="l00069"></a>00069 uint8_t readRegister(uint8_t reg);
<a name="l00070"></a>00070 <span class="keywordtype">bool</span> writeRegister(uint8_t reg, uint8_t value);
<a name="l00071"></a>00071
<a name="l00072"></a>00072 <span class="keywordtype">void</span> updateAlarmInterrupts();
<a name="l00073"></a>00073 };
<a name="l00074"></a>00074
<a name="l00075"></a>00075 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -151,8 +77,97 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_f34881fcf60f680b800190d5274dfaea.html">RTC</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">DS3232RTC.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef DS3232RTC_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3232RTC_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;RTC.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">class </span><a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a>;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"><a class="code" href="classDS3232RTC.html"> 30</a></span>&#160;<span class="keyword">class </span><a class="code" href="classDS3232RTC.html" title="Communicates with a DS3232 realtime clock chip via I2C.">DS3232RTC</a> : <span class="keyword">public</span> <a class="code" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a> {</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="classDS3232RTC.html#aa959454ae01b11c48d6ec7ec192b4ccb" title="Attaches to a realtime clock slave device on bus.">DS3232RTC</a>(<a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> &amp;bus, uint8_t oneHzPin = 255);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="classDS3232RTC.html#acc5908a3743afb4c26bd75e22cad87a4"> 34</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classDS3232RTC.html#acc5908a3743afb4c26bd75e22cad87a4" title="Returns true if the realtime clock is on the I2C bus; false if the time and date are simulated...">isRealTime</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _isRealTime; }</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates</a>();</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747" title="Reads the current time from the realtime clock into value.">readTime</a>(<a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca" title="Reads the current date from the realtime clock into value.">readDate</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value);</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; <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78" title="Updates the time in the realtime clock to match value.">writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed" title="Updates the date in the realtime clock to match value.">writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873" title="Reads the details of the alarm with index alarmNum into value.">readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75" title="Updates the details of the alarm with index alarmNum from value.">writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; uint8_t <a class="code" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">readByte</a>(uint8_t offset);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">writeByte</a>(uint8_t offset, uint8_t value);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a0faf40c25ab019a326a60f301c2bb41b" title="Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius...">readTemperature</a>();</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9" title="Enables the generation of interrupts for alarms 0 and 1.">enableAlarmInterrupts</a>();</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9" title="Disables the generation of interrupts for alarms 0 and 1.">disableAlarmInterrupts</a>();</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3" title="Determines which of alarms 0 or 1 have fired since the last call.">firedAlarm</a>();</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="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a" title="Enables the 32 kHz output on the DS3232 chip.">enable32kHzOutput</a>();</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb" title="Disables the 32 kHz output on the DS3232 chip.">disable32kHzOutput</a>();</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"> 60</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> *_bus;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; uint8_t _oneHzPin;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">bool</span> prevOneHz;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">bool</span> _isRealTime;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">bool</span> alarmInterrupts;</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"> 67</span>&#160; <span class="keywordtype">void</span> initAlarms();</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; uint8_t readRegister(uint8_t reg);</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">bool</span> writeRegister(uint8_t reg, uint8_t value);</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; <span class="keywordtype">void</span> updateAlarmInterrupts();</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;};</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: DejaVuSans9.h Source File</title> <title>ArduinoLibs: DejaVuSans9.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,185 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">DejaVuSans9.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002
<a name="l00003"></a>00003 <span class="comment">/*</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
<a name="l00005"></a>00005 <span class="comment"> * DejaVuSans9</span>
<a name="l00006"></a>00006 <span class="comment"> *</span>
<a name="l00007"></a>00007 <span class="comment"> * created with FontCreator</span>
<a name="l00008"></a>00008 <span class="comment"> * written by F. Maximilian Thiele</span>
<a name="l00009"></a>00009 <span class="comment"> *</span>
<a name="l00010"></a>00010 <span class="comment"> * http://www.apetech.de/fontCreator</span>
<a name="l00011"></a>00011 <span class="comment"> * me@apetech.de</span>
<a name="l00012"></a>00012 <span class="comment"> *</span>
<a name="l00013"></a>00013 <span class="comment"> * File Name : DejaVuSans9.h</span>
<a name="l00014"></a>00014 <span class="comment"> * Date : 28.05.2012</span>
<a name="l00015"></a>00015 <span class="comment"> * Font size in bytes : 3962</span>
<a name="l00016"></a>00016 <span class="comment"> * Font width : 10</span>
<a name="l00017"></a>00017 <span class="comment"> * Font height : 10</span>
<a name="l00018"></a>00018 <span class="comment"> * Font first char : 32</span>
<a name="l00019"></a>00019 <span class="comment"> * Font last char : 128</span>
<a name="l00020"></a>00020 <span class="comment"> * Font used chars : 96</span>
<a name="l00021"></a>00021 <span class="comment"> *</span>
<a name="l00022"></a>00022 <span class="comment"> * The font data are defined as</span>
<a name="l00023"></a>00023 <span class="comment"> *</span>
<a name="l00024"></a>00024 <span class="comment"> * struct _FONT_ {</span>
<a name="l00025"></a>00025 <span class="comment"> * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self;</span>
<a name="l00026"></a>00026 <span class="comment"> * uint8_t font_Width_in_Pixel_for_fixed_drawing;</span>
<a name="l00027"></a>00027 <span class="comment"> * uint8_t font_Height_in_Pixel_for_all_characters;</span>
<a name="l00028"></a>00028 <span class="comment"> * unit8_t font_First_Char;</span>
<a name="l00029"></a>00029 <span class="comment"> * uint8_t font_Char_Count;</span>
<a name="l00030"></a>00030 <span class="comment"> *</span>
<a name="l00031"></a>00031 <span class="comment"> * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1];</span>
<a name="l00032"></a>00032 <span class="comment"> * // for each character the separate width in pixels,</span>
<a name="l00033"></a>00033 <span class="comment"> * // characters &lt; 128 have an implicit virtual right empty row</span>
<a name="l00034"></a>00034 <span class="comment"> *</span>
<a name="l00035"></a>00035 <span class="comment"> * uint8_t font_data[];</span>
<a name="l00036"></a>00036 <span class="comment"> * // bit field of all characters</span>
<a name="l00037"></a>00037 <span class="comment"> */</span>
<a name="l00038"></a>00038
<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span>
<a name="l00041"></a>00041
<a name="l00042"></a>00042 <span class="preprocessor">#ifndef DEJAVUSANS9_H</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#define DEJAVUSANS9_H</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span>
<a name="l00045"></a>00045 <span class="preprocessor">#define DEJAVUSANS9_WIDTH 10</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#define DEJAVUSANS9_HEIGHT 10</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span>
<a name="l00048"></a>00048 <span class="keyword">static</span> uint8_t DejaVuSans9[] PROGMEM = {
<a name="l00049"></a>00049 0x0F, 0x7A, <span class="comment">// size</span>
<a name="l00050"></a>00050 0x0A, <span class="comment">// width</span>
<a name="l00051"></a>00051 0x0A, <span class="comment">// height</span>
<a name="l00052"></a>00052 0x20, <span class="comment">// first char</span>
<a name="l00053"></a>00053 0x60, <span class="comment">// char count</span>
<a name="l00054"></a>00054
<a name="l00055"></a>00055 <span class="comment">// char widths</span>
<a name="l00056"></a>00056 0x00, 0x01, 0x03, 0x06, 0x05, 0x08, 0x06, 0x01, 0x02, 0x02,
<a name="l00057"></a>00057 0x05, 0x05, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x04, 0x04,
<a name="l00058"></a>00058 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x01, 0x06, 0x06,
<a name="l00059"></a>00059 0x06, 0x04, 0x08, 0x06, 0x05, 0x05, 0x05, 0x04, 0x04, 0x05,
<a name="l00060"></a>00060 0x05, 0x01, 0x02, 0x05, 0x04, 0x06, 0x05, 0x05, 0x04, 0x05,
<a name="l00061"></a>00061 0x05, 0x05, 0x05, 0x05, 0x06, 0x07, 0x06, 0x05, 0x05, 0x02,
<a name="l00062"></a>00062 0x03, 0x02, 0x04, 0x05, 0x02, 0x04, 0x04, 0x04, 0x04, 0x04,
<a name="l00063"></a>00063 0x03, 0x04, 0x04, 0x01, 0x02, 0x04, 0x01, 0x07, 0x04, 0x04,
<a name="l00064"></a>00064 0x04, 0x04, 0x03, 0x03, 0x04, 0x04, 0x05, 0x07, 0x05, 0x05,
<a name="l00065"></a>00065 0x04, 0x03, 0x01, 0x03, 0x06, 0x05,
<a name="l00066"></a>00066
<a name="l00067"></a>00067 <span class="comment">// font data</span>
<a name="l00068"></a>00068 0xBE, 0x00, <span class="comment">// 33</span>
<a name="l00069"></a>00069 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, <span class="comment">// 34</span>
<a name="l00070"></a>00070 0x28, 0xE8, 0x3E, 0xE8, 0x3E, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 35</span>
<a name="l00071"></a>00071 0x98, 0x94, 0xFE, 0xA4, 0x64, 0x00, 0x00, 0x40, 0x00, 0x00, <span class="comment">// 36</span>
<a name="l00072"></a>00072 0x1E, 0x12, 0xDE, 0x30, 0x18, 0xF6, 0x90, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 37</span>
<a name="l00073"></a>00073 0x60, 0x9C, 0x92, 0x62, 0xC4, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 38</span>
<a name="l00074"></a>00074 0x06, 0x00, <span class="comment">// 39</span>
<a name="l00075"></a>00075 0x7E, 0x81, 0x00, 0x00, <span class="comment">// 40</span>
<a name="l00076"></a>00076 0xC3, 0x3C, 0x00, 0x00, <span class="comment">// 41</span>
<a name="l00077"></a>00077 0x12, 0x0C, 0x1E, 0x0C, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 42</span>
<a name="l00078"></a>00078 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 43</span>
<a name="l00079"></a>00079 0x80, 0x40, <span class="comment">// 44</span>
<a name="l00080"></a>00080 0x20, 0x20, 0x00, 0x00, <span class="comment">// 45</span>
<a name="l00081"></a>00081 0x80, 0x00, <span class="comment">// 46</span>
<a name="l00082"></a>00082 0xC0, 0x38, 0x06, 0x00, 0x00, 0x00, <span class="comment">// 47</span>
<a name="l00083"></a>00083 0x7C, 0x82, 0x82, 0x7C, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 48</span>
<a name="l00084"></a>00084 0x82, 0xFE, 0x80, 0x00, 0x00, 0x00, <span class="comment">// 49</span>
<a name="l00085"></a>00085 0xC4, 0xA2, 0x92, 0x8C, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 50</span>
<a name="l00086"></a>00086 0x84, 0x92, 0x92, 0x6C, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 51</span>
<a name="l00087"></a>00087 0x60, 0x58, 0x44, 0xFE, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 52</span>
<a name="l00088"></a>00088 0x9E, 0x92, 0x92, 0x62, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 53</span>
<a name="l00089"></a>00089 0x7C, 0x96, 0x92, 0x62, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 54</span>
<a name="l00090"></a>00090 0x02, 0xC2, 0x3A, 0x06, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 55</span>
<a name="l00091"></a>00091 0x6C, 0x92, 0x92, 0x6C, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 56</span>
<a name="l00092"></a>00092 0x9C, 0x92, 0xD2, 0x7C, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 57</span>
<a name="l00093"></a>00093 0x88, 0x00, <span class="comment">// 58</span>
<a name="l00094"></a>00094 0x88, 0x40, <span class="comment">// 59</span>
<a name="l00095"></a>00095 0x20, 0x20, 0x50, 0x50, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 60</span>
<a name="l00096"></a>00096 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 61</span>
<a name="l00097"></a>00097 0x88, 0x50, 0x50, 0x50, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 62</span>
<a name="l00098"></a>00098 0x02, 0xB2, 0x0A, 0x06, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 63</span>
<a name="l00099"></a>00099 0x78, 0x84, 0x32, 0x4A, 0x4A, 0xFA, 0x44, 0x38, 0x00, 0x00, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, <span class="comment">// 64</span>
<a name="l00100"></a>00100 0xC0, 0x38, 0x26, 0x26, 0x38, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 65</span>
<a name="l00101"></a>00101 0xFE, 0x92, 0x92, 0x92, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 66</span>
<a name="l00102"></a>00102 0x7C, 0xC6, 0x82, 0x82, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 67</span>
<a name="l00103"></a>00103 0xFE, 0x82, 0x82, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 68</span>
<a name="l00104"></a>00104 0xFE, 0x92, 0x92, 0x92, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 69</span>
<a name="l00105"></a>00105 0xFE, 0x12, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 70</span>
<a name="l00106"></a>00106 0x7C, 0xC6, 0x82, 0x92, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 71</span>
<a name="l00107"></a>00107 0xFE, 0x10, 0x10, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 72</span>
<a name="l00108"></a>00108 0xFE, 0x00, <span class="comment">// 73</span>
<a name="l00109"></a>00109 0x00, 0xFE, 0x80, 0x40, <span class="comment">// 74</span>
<a name="l00110"></a>00110 0xFE, 0x10, 0x28, 0x44, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 75</span>
<a name="l00111"></a>00111 0xFE, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 76</span>
<a name="l00112"></a>00112 0xFE, 0x0C, 0x30, 0x30, 0x0C, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 77</span>
<a name="l00113"></a>00113 0xFE, 0x0C, 0x10, 0x60, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 78</span>
<a name="l00114"></a>00114 0x7C, 0xC6, 0x82, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 79</span>
<a name="l00115"></a>00115 0xFE, 0x12, 0x12, 0x0C, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 80</span>
<a name="l00116"></a>00116 0x7C, 0xC6, 0x82, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x40, 0x00, <span class="comment">// 81</span>
<a name="l00117"></a>00117 0xFE, 0x12, 0x32, 0x4E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 82</span>
<a name="l00118"></a>00118 0x4C, 0x92, 0x92, 0x92, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 83</span>
<a name="l00119"></a>00119 0x02, 0x02, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 84</span>
<a name="l00120"></a>00120 0x7E, 0x80, 0x80, 0x80, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 85</span>
<a name="l00121"></a>00121 0x06, 0x38, 0xC0, 0xC0, 0x38, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 86</span>
<a name="l00122"></a>00122 0x06, 0x38, 0xE0, 0x1E, 0xE0, 0x38, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 87</span>
<a name="l00123"></a>00123 0x82, 0x46, 0x38, 0x38, 0xC6, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 88</span>
<a name="l00124"></a>00124 0x02, 0x0C, 0xF0, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 89</span>
<a name="l00125"></a>00125 0xC2, 0xA2, 0x92, 0x8A, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 90</span>
<a name="l00126"></a>00126 0xFE, 0x02, 0x40, 0x40, <span class="comment">// 91</span>
<a name="l00127"></a>00127 0x06, 0x38, 0xC0, 0x00, 0x00, 0x00, <span class="comment">// 92</span>
<a name="l00128"></a>00128 0x02, 0xFE, 0x40, 0x40, <span class="comment">// 93</span>
<a name="l00129"></a>00129 0x04, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 94</span>
<a name="l00130"></a>00130 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, <span class="comment">// 95</span>
<a name="l00131"></a>00131 0x01, 0x02, 0x00, 0x00, <span class="comment">// 96</span>
<a name="l00132"></a>00132 0xE0, 0xA8, 0xA8, 0xF8, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 97</span>
<a name="l00133"></a>00133 0xFF, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 98</span>
<a name="l00134"></a>00134 0x70, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 99</span>
<a name="l00135"></a>00135 0x70, 0x88, 0x88, 0xFF, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 100</span>
<a name="l00136"></a>00136 0x70, 0xA8, 0xA8, 0xB0, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 101</span>
<a name="l00137"></a>00137 0x08, 0xFF, 0x09, 0x00, 0x00, 0x00, <span class="comment">// 102</span>
<a name="l00138"></a>00138 0x70, 0x88, 0x88, 0xF8, 0x00, 0x80, 0x80, 0x40, <span class="comment">// 103</span>
<a name="l00139"></a>00139 0xFF, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 104</span>
<a name="l00140"></a>00140 0xFA, 0x00, <span class="comment">// 105</span>
<a name="l00141"></a>00141 0x00, 0xFA, 0x80, 0xC0, <span class="comment">// 106</span>
<a name="l00142"></a>00142 0xFF, 0x20, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 107</span>
<a name="l00143"></a>00143 0xFF, 0x00, <span class="comment">// 108</span>
<a name="l00144"></a>00144 0xF8, 0x08, 0x08, 0xF8, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 109</span>
<a name="l00145"></a>00145 0xF8, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 110</span>
<a name="l00146"></a>00146 0x70, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 111</span>
<a name="l00147"></a>00147 0xF8, 0x88, 0x88, 0x70, 0xC0, 0x00, 0x00, 0x00, <span class="comment">// 112</span>
<a name="l00148"></a>00148 0x70, 0x88, 0x88, 0xF8, 0x00, 0x00, 0x00, 0xC0, <span class="comment">// 113</span>
<a name="l00149"></a>00149 0xF8, 0x08, 0x08, 0x00, 0x00, 0x00, <span class="comment">// 114</span>
<a name="l00150"></a>00150 0x98, 0xA8, 0xE8, 0x00, 0x00, 0x00, <span class="comment">// 115</span>
<a name="l00151"></a>00151 0x08, 0xFC, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 116</span>
<a name="l00152"></a>00152 0xF8, 0x80, 0x80, 0xF8, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 117</span>
<a name="l00153"></a>00153 0x18, 0x60, 0x80, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 118</span>
<a name="l00154"></a>00154 0x38, 0xC0, 0x30, 0x08, 0x30, 0xC0, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 119</span>
<a name="l00155"></a>00155 0x88, 0x50, 0x20, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 120</span>
<a name="l00156"></a>00156 0x18, 0x60, 0x80, 0x60, 0x18, 0x80, 0x80, 0x40, 0x00, 0x00, <span class="comment">// 121</span>
<a name="l00157"></a>00157 0x88, 0xC8, 0xA8, 0x98, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 122</span>
<a name="l00158"></a>00158 0x10, 0xEE, 0x02, 0x00, 0x40, 0x40, <span class="comment">// 123</span>
<a name="l00159"></a>00159 0xFE, 0xC0, <span class="comment">// 124</span>
<a name="l00160"></a>00160 0x02, 0xEE, 0x10, 0x40, 0x40, 0x00, <span class="comment">// 125</span>
<a name="l00161"></a>00161 0x20, 0x10, 0x10, 0x20, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 126</span>
<a name="l00162"></a>00162 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xC0, 0x80, 0x80, 0x80, 0xC0 <span class="comment">// 127</span>
<a name="l00163"></a>00163
<a name="l00164"></a>00164 };
<a name="l00165"></a>00165
<a name="l00166"></a>00166 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -242,8 +77,188 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_6591a2127a29f6cea3994dcb5b0596d1.html">DMD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">DejaVuSans9.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</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"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * DejaVuSans9</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"> * created with FontCreator</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * written by F. Maximilian Thiele</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * http://www.apetech.de/fontCreator</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * me@apetech.de</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"> * File Name : DejaVuSans9.h</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * Date : 28.05.2012</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * Font size in bytes : 3962</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * Font width : 10</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * Font height : 10</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * Font first char : 32</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Font last char : 128</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Font used chars : 96</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;<span class="comment"> * The font data are defined as</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * struct _FONT_ {</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * uint8_t font_Width_in_Pixel_for_fixed_drawing;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * uint8_t font_Height_in_Pixel_for_all_characters;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * unit8_t font_First_Char;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * uint8_t font_Char_Count;</span></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"> * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1];</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * // for each character the separate width in pixels,</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * // characters &lt; 128 have an implicit virtual right empty row</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"> * uint8_t font_data[];</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * // bit field of all characters</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</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="preprocessor">#ifndef DEJAVUSANS9_H</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DEJAVUSANS9_H</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define DEJAVUSANS9_WIDTH 10</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DEJAVUSANS9_HEIGHT 10</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">static</span> uint8_t <span class="keyword">const</span> DejaVuSans9[] PROGMEM = {</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; 0x0F, 0x7A, <span class="comment">// size</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; 0x0A, <span class="comment">// width</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; 0x0A, <span class="comment">// height</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; 0x20, <span class="comment">// first char</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; 0x60, <span class="comment">// char count</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// char widths</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; 0x00, 0x01, 0x03, 0x06, 0x05, 0x08, 0x06, 0x01, 0x02, 0x02, </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; 0x05, 0x05, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x04, 0x04, </div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x01, 0x06, 0x06, </div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; 0x06, 0x04, 0x08, 0x06, 0x05, 0x05, 0x05, 0x04, 0x04, 0x05, </div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; 0x05, 0x01, 0x02, 0x05, 0x04, 0x06, 0x05, 0x05, 0x04, 0x05, </div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; 0x05, 0x05, 0x05, 0x05, 0x06, 0x07, 0x06, 0x05, 0x05, 0x02, </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; 0x03, 0x02, 0x04, 0x05, 0x02, 0x04, 0x04, 0x04, 0x04, 0x04, </div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; 0x03, 0x04, 0x04, 0x01, 0x02, 0x04, 0x01, 0x07, 0x04, 0x04, </div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; 0x04, 0x04, 0x03, 0x03, 0x04, 0x04, 0x05, 0x07, 0x05, 0x05, </div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; 0x04, 0x03, 0x01, 0x03, 0x06, 0x05, </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"> 67</span>&#160; <span class="comment">// font data</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; 0xBE, 0x00, <span class="comment">// 33</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, <span class="comment">// 34</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; 0x28, 0xE8, 0x3E, 0xE8, 0x3E, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 35</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; 0x98, 0x94, 0xFE, 0xA4, 0x64, 0x00, 0x00, 0x40, 0x00, 0x00, <span class="comment">// 36</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; 0x1E, 0x12, 0xDE, 0x30, 0x18, 0xF6, 0x90, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 37</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; 0x60, 0x9C, 0x92, 0x62, 0xC4, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 38</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; 0x06, 0x00, <span class="comment">// 39</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; 0x7E, 0x81, 0x00, 0x00, <span class="comment">// 40</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; 0xC3, 0x3C, 0x00, 0x00, <span class="comment">// 41</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; 0x12, 0x0C, 0x1E, 0x0C, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 42</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 43</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; 0x80, 0x40, <span class="comment">// 44</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; 0x20, 0x20, 0x00, 0x00, <span class="comment">// 45</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; 0x80, 0x00, <span class="comment">// 46</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; 0xC0, 0x38, 0x06, 0x00, 0x00, 0x00, <span class="comment">// 47</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; 0x7C, 0x82, 0x82, 0x7C, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 48</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; 0x82, 0xFE, 0x80, 0x00, 0x00, 0x00, <span class="comment">// 49</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; 0xC4, 0xA2, 0x92, 0x8C, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 50</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; 0x84, 0x92, 0x92, 0x6C, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 51</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; 0x60, 0x58, 0x44, 0xFE, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 52</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; 0x9E, 0x92, 0x92, 0x62, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 53</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; 0x7C, 0x96, 0x92, 0x62, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 54</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; 0x02, 0xC2, 0x3A, 0x06, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 55</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; 0x6C, 0x92, 0x92, 0x6C, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 56</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; 0x9C, 0x92, 0xD2, 0x7C, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 57</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; 0x88, 0x00, <span class="comment">// 58</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; 0x88, 0x40, <span class="comment">// 59</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; 0x20, 0x20, 0x50, 0x50, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 60</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 61</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; 0x88, 0x50, 0x50, 0x50, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 62</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; 0x02, 0xB2, 0x0A, 0x06, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 63</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; 0x78, 0x84, 0x32, 0x4A, 0x4A, 0xFA, 0x44, 0x38, 0x00, 0x00, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, <span class="comment">// 64</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; 0xC0, 0x38, 0x26, 0x26, 0x38, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 65</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; 0xFE, 0x92, 0x92, 0x92, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 66</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; 0x7C, 0xC6, 0x82, 0x82, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 67</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; 0xFE, 0x82, 0x82, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 68</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; 0xFE, 0x92, 0x92, 0x92, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 69</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; 0xFE, 0x12, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 70</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; 0x7C, 0xC6, 0x82, 0x92, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 71</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; 0xFE, 0x10, 0x10, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 72</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; 0xFE, 0x00, <span class="comment">// 73</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; 0x00, 0xFE, 0x80, 0x40, <span class="comment">// 74</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; 0xFE, 0x10, 0x28, 0x44, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 75</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; 0xFE, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 76</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; 0xFE, 0x0C, 0x30, 0x30, 0x0C, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 77</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; 0xFE, 0x0C, 0x10, 0x60, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 78</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; 0x7C, 0xC6, 0x82, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 79</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; 0xFE, 0x12, 0x12, 0x0C, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 80</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; 0x7C, 0xC6, 0x82, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x40, 0x00, <span class="comment">// 81</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; 0xFE, 0x12, 0x32, 0x4E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 82</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; 0x4C, 0x92, 0x92, 0x92, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 83</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; 0x02, 0x02, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 84</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; 0x7E, 0x80, 0x80, 0x80, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 85</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; 0x06, 0x38, 0xC0, 0xC0, 0x38, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 86</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; 0x06, 0x38, 0xE0, 0x1E, 0xE0, 0x38, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 87</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; 0x82, 0x46, 0x38, 0x38, 0xC6, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 88</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; 0x02, 0x0C, 0xF0, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 89</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; 0xC2, 0xA2, 0x92, 0x8A, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 90</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; 0xFE, 0x02, 0x40, 0x40, <span class="comment">// 91</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; 0x06, 0x38, 0xC0, 0x00, 0x00, 0x00, <span class="comment">// 92</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; 0x02, 0xFE, 0x40, 0x40, <span class="comment">// 93</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; 0x04, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 94</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, <span class="comment">// 95</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; 0x01, 0x02, 0x00, 0x00, <span class="comment">// 96</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; 0xE0, 0xA8, 0xA8, 0xF8, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 97</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; 0xFF, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 98</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; 0x70, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 99</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; 0x70, 0x88, 0x88, 0xFF, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 100</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; 0x70, 0xA8, 0xA8, 0xB0, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 101</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; 0x08, 0xFF, 0x09, 0x00, 0x00, 0x00, <span class="comment">// 102</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; 0x70, 0x88, 0x88, 0xF8, 0x00, 0x80, 0x80, 0x40, <span class="comment">// 103</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; 0xFF, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 104</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; 0xFA, 0x00, <span class="comment">// 105</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; 0x00, 0xFA, 0x80, 0xC0, <span class="comment">// 106</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; 0xFF, 0x20, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 107</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; 0xFF, 0x00, <span class="comment">// 108</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; 0xF8, 0x08, 0x08, 0xF8, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 109</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; 0xF8, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 110</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; 0x70, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 111</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; 0xF8, 0x88, 0x88, 0x70, 0xC0, 0x00, 0x00, 0x00, <span class="comment">// 112</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; 0x70, 0x88, 0x88, 0xF8, 0x00, 0x00, 0x00, 0xC0, <span class="comment">// 113</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; 0xF8, 0x08, 0x08, 0x00, 0x00, 0x00, <span class="comment">// 114</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; 0x98, 0xA8, 0xE8, 0x00, 0x00, 0x00, <span class="comment">// 115</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; 0x08, 0xFC, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 116</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; 0xF8, 0x80, 0x80, 0xF8, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 117</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; 0x18, 0x60, 0x80, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 118</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; 0x38, 0xC0, 0x30, 0x08, 0x30, 0xC0, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 119</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; 0x88, 0x50, 0x20, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 120</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; 0x18, 0x60, 0x80, 0x60, 0x18, 0x80, 0x80, 0x40, 0x00, 0x00, <span class="comment">// 121</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; 0x88, 0xC8, 0xA8, 0x98, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 122</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; 0x10, 0xEE, 0x02, 0x00, 0x40, 0x40, <span class="comment">// 123</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; 0xFE, 0xC0, <span class="comment">// 124</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; 0x02, 0xEE, 0x10, 0x40, 0x40, 0x00, <span class="comment">// 125</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; 0x20, 0x10, 0x10, 0x20, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 126</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xC0, 0x80, 0x80, 0x80, 0xC0 <span class="comment">// 127</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;};</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: DejaVuSansBold9.h Source File</title> <title>ArduinoLibs: DejaVuSansBold9.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,185 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">DejaVuSansBold9.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002
<a name="l00003"></a>00003 <span class="comment">/*</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
<a name="l00005"></a>00005 <span class="comment"> * DejaVuSansBold9</span>
<a name="l00006"></a>00006 <span class="comment"> *</span>
<a name="l00007"></a>00007 <span class="comment"> * created with FontCreator</span>
<a name="l00008"></a>00008 <span class="comment"> * written by F. Maximilian Thiele</span>
<a name="l00009"></a>00009 <span class="comment"> *</span>
<a name="l00010"></a>00010 <span class="comment"> * http://www.apetech.de/fontCreator</span>
<a name="l00011"></a>00011 <span class="comment"> * me@apetech.de</span>
<a name="l00012"></a>00012 <span class="comment"> *</span>
<a name="l00013"></a>00013 <span class="comment"> * File Name : DejaVuSansBold9.h</span>
<a name="l00014"></a>00014 <span class="comment"> * Date : 28.05.2012</span>
<a name="l00015"></a>00015 <span class="comment"> * Font size in bytes : 4662</span>
<a name="l00016"></a>00016 <span class="comment"> * Font width : 10</span>
<a name="l00017"></a>00017 <span class="comment"> * Font height : 10</span>
<a name="l00018"></a>00018 <span class="comment"> * Font first char : 32</span>
<a name="l00019"></a>00019 <span class="comment"> * Font last char : 128</span>
<a name="l00020"></a>00020 <span class="comment"> * Font used chars : 96</span>
<a name="l00021"></a>00021 <span class="comment"> *</span>
<a name="l00022"></a>00022 <span class="comment"> * The font data are defined as</span>
<a name="l00023"></a>00023 <span class="comment"> *</span>
<a name="l00024"></a>00024 <span class="comment"> * struct _FONT_ {</span>
<a name="l00025"></a>00025 <span class="comment"> * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self;</span>
<a name="l00026"></a>00026 <span class="comment"> * uint8_t font_Width_in_Pixel_for_fixed_drawing;</span>
<a name="l00027"></a>00027 <span class="comment"> * uint8_t font_Height_in_Pixel_for_all_characters;</span>
<a name="l00028"></a>00028 <span class="comment"> * unit8_t font_First_Char;</span>
<a name="l00029"></a>00029 <span class="comment"> * uint8_t font_Char_Count;</span>
<a name="l00030"></a>00030 <span class="comment"> *</span>
<a name="l00031"></a>00031 <span class="comment"> * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1];</span>
<a name="l00032"></a>00032 <span class="comment"> * // for each character the separate width in pixels,</span>
<a name="l00033"></a>00033 <span class="comment"> * // characters &lt; 128 have an implicit virtual right empty row</span>
<a name="l00034"></a>00034 <span class="comment"> *</span>
<a name="l00035"></a>00035 <span class="comment"> * uint8_t font_data[];</span>
<a name="l00036"></a>00036 <span class="comment"> * // bit field of all characters</span>
<a name="l00037"></a>00037 <span class="comment"> */</span>
<a name="l00038"></a>00038
<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span>
<a name="l00041"></a>00041
<a name="l00042"></a>00042 <span class="preprocessor">#ifndef DEJAVUSANSBOLD9_H</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#define DEJAVUSANSBOLD9_H</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span>
<a name="l00045"></a>00045 <span class="preprocessor">#define DEJAVUSANSBOLD9_WIDTH 10</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#define DEJAVUSANSBOLD9_HEIGHT 10</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span>
<a name="l00048"></a>00048 <span class="keyword">static</span> uint8_t DejaVuSansBold9[] PROGMEM = {
<a name="l00049"></a>00049 0x12, 0x36, <span class="comment">// size</span>
<a name="l00050"></a>00050 0x0A, <span class="comment">// width</span>
<a name="l00051"></a>00051 0x0A, <span class="comment">// height</span>
<a name="l00052"></a>00052 0x20, <span class="comment">// first char</span>
<a name="l00053"></a>00053 0x60, <span class="comment">// char count</span>
<a name="l00054"></a>00054
<a name="l00055"></a>00055 <span class="comment">// char widths</span>
<a name="l00056"></a>00056 0x00, 0x02, 0x03, 0x06, 0x05, 0x08, 0x07, 0x01, 0x03, 0x03,
<a name="l00057"></a>00057 0x05, 0x05, 0x02, 0x03, 0x02, 0x03, 0x05, 0x05, 0x05, 0x05,
<a name="l00058"></a>00058 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x02, 0x02, 0x06, 0x06,
<a name="l00059"></a>00059 0x06, 0x04, 0x08, 0x07, 0x05, 0x06, 0x06, 0x05, 0x05, 0x06,
<a name="l00060"></a>00060 0x07, 0x02, 0x03, 0x06, 0x05, 0x07, 0x06, 0x06, 0x05, 0x06,
<a name="l00061"></a>00061 0x06, 0x05, 0x06, 0x06, 0x07, 0x09, 0x07, 0x06, 0x06, 0x03,
<a name="l00062"></a>00062 0x03, 0x03, 0x04, 0x05, 0x02, 0x05, 0x05, 0x04, 0x05, 0x05,
<a name="l00063"></a>00063 0x04, 0x05, 0x05, 0x02, 0x03, 0x05, 0x02, 0x08, 0x05, 0x05,
<a name="l00064"></a>00064 0x05, 0x05, 0x03, 0x04, 0x03, 0x05, 0x06, 0x08, 0x06, 0x06,
<a name="l00065"></a>00065 0x04, 0x04, 0x01, 0x04, 0x06, 0x05,
<a name="l00066"></a>00066
<a name="l00067"></a>00067 <span class="comment">// font data</span>
<a name="l00068"></a>00068 0xDE, 0xDE, 0x00, 0x00, <span class="comment">// 33</span>
<a name="l00069"></a>00069 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, <span class="comment">// 34</span>
<a name="l00070"></a>00070 0x28, 0xF8, 0x2E, 0xF8, 0x2E, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 35</span>
<a name="l00071"></a>00071 0x98, 0xB4, 0xFE, 0xB4, 0x64, 0x00, 0x00, 0x40, 0x00, 0x00, <span class="comment">// 36</span>
<a name="l00072"></a>00072 0x0C, 0x12, 0xD2, 0x7C, 0x78, 0x96, 0x90, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 37</span>
<a name="l00073"></a>00073 0x60, 0xFC, 0x9E, 0xB2, 0x62, 0xE0, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 38</span>
<a name="l00074"></a>00074 0x06, 0x00, <span class="comment">// 39</span>
<a name="l00075"></a>00075 0x3C, 0xFF, 0x81, 0x00, 0x00, 0x00, <span class="comment">// 40</span>
<a name="l00076"></a>00076 0x81, 0xFF, 0x3C, 0x00, 0x00, 0x00, <span class="comment">// 41</span>
<a name="l00077"></a>00077 0x14, 0x18, 0x3E, 0x18, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 42</span>
<a name="l00078"></a>00078 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 43</span>
<a name="l00079"></a>00079 0xC0, 0xC0, 0x40, 0x00, <span class="comment">// 44</span>
<a name="l00080"></a>00080 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, <span class="comment">// 45</span>
<a name="l00081"></a>00081 0xC0, 0xC0, 0x00, 0x00, <span class="comment">// 46</span>
<a name="l00082"></a>00082 0xC0, 0x38, 0x06, 0x00, 0x00, 0x00, <span class="comment">// 47</span>
<a name="l00083"></a>00083 0x7C, 0xFE, 0x82, 0xFE, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 48</span>
<a name="l00084"></a>00084 0x82, 0x82, 0xFE, 0xFE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 49</span>
<a name="l00085"></a>00085 0xC2, 0xE2, 0xB2, 0x9E, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 50</span>
<a name="l00086"></a>00086 0x82, 0x92, 0x92, 0xFE, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 51</span>
<a name="l00087"></a>00087 0x60, 0x58, 0x44, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 52</span>
<a name="l00088"></a>00088 0x9E, 0x9E, 0x92, 0xF2, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 53</span>
<a name="l00089"></a>00089 0x7C, 0xFE, 0x96, 0xF2, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 54</span>
<a name="l00090"></a>00090 0x82, 0xE2, 0x7A, 0x1E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 55</span>
<a name="l00091"></a>00091 0x6C, 0xEE, 0x92, 0xEE, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 56</span>
<a name="l00092"></a>00092 0x8C, 0x9E, 0xD2, 0xFE, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 57</span>
<a name="l00093"></a>00093 0xD8, 0xD8, 0x00, 0x00, <span class="comment">// 58</span>
<a name="l00094"></a>00094 0xD8, 0xD8, 0x40, 0x00, <span class="comment">// 59</span>
<a name="l00095"></a>00095 0x20, 0x50, 0x50, 0x50, 0xD8, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 60</span>
<a name="l00096"></a>00096 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 61</span>
<a name="l00097"></a>00097 0x88, 0xD8, 0x50, 0x50, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 62</span>
<a name="l00098"></a>00098 0x02, 0xDA, 0xDE, 0x0E, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 63</span>
<a name="l00099"></a>00099 0x78, 0x84, 0x32, 0x4A, 0x4A, 0xFA, 0x44, 0x38, 0x00, 0x00, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, <span class="comment">// 64</span>
<a name="l00100"></a>00100 0x80, 0xF0, 0x7E, 0x4E, 0x7E, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 65</span>
<a name="l00101"></a>00101 0xFE, 0xFE, 0x92, 0xFE, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 66</span>
<a name="l00102"></a>00102 0x38, 0x7C, 0xC6, 0x82, 0x82, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 67</span>
<a name="l00103"></a>00103 0xFE, 0xFE, 0x82, 0x82, 0xFE, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 68</span>
<a name="l00104"></a>00104 0xFE, 0xFE, 0x92, 0x92, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 69</span>
<a name="l00105"></a>00105 0xFE, 0xFE, 0x12, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 70</span>
<a name="l00106"></a>00106 0x78, 0xFC, 0x86, 0x92, 0xF2, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 71</span>
<a name="l00107"></a>00107 0xFE, 0xFE, 0x10, 0x10, 0x10, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 72</span>
<a name="l00108"></a>00108 0xFE, 0xFE, 0x00, 0x00, <span class="comment">// 73</span>
<a name="l00109"></a>00109 0x00, 0xFE, 0xFE, 0x80, 0xC0, 0x40, <span class="comment">// 74</span>
<a name="l00110"></a>00110 0xFE, 0xFE, 0x38, 0x6C, 0xC6, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 75</span>
<a name="l00111"></a>00111 0xFE, 0xFE, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 76</span>
<a name="l00112"></a>00112 0xFE, 0xFE, 0x0C, 0x30, 0x0C, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 77</span>
<a name="l00113"></a>00113 0xFE, 0xFE, 0x0C, 0x30, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 78</span>
<a name="l00114"></a>00114 0x7C, 0xFE, 0x82, 0x82, 0xFE, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 79</span>
<a name="l00115"></a>00115 0xFE, 0xFE, 0x12, 0x1E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 80</span>
<a name="l00116"></a>00116 0x7C, 0xFE, 0x82, 0x82, 0xFE, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, <span class="comment">// 81</span>
<a name="l00117"></a>00117 0xFE, 0xFE, 0x12, 0x7E, 0xEC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 82</span>
<a name="l00118"></a>00118 0xCC, 0x9E, 0x92, 0xF2, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 83</span>
<a name="l00119"></a>00119 0x02, 0x02, 0xFE, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 84</span>
<a name="l00120"></a>00120 0x7E, 0xFE, 0x80, 0x80, 0xFE, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 85</span>
<a name="l00121"></a>00121 0x02, 0x1E, 0xF8, 0xC0, 0xF8, 0x1E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 86</span>
<a name="l00122"></a>00122 0x0E, 0xFE, 0xE0, 0x3C, 0x06, 0x3C, 0xE0, 0xFE, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 87</span>
<a name="l00123"></a>00123 0x82, 0xC6, 0x7C, 0x10, 0x7C, 0xC6, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 88</span>
<a name="l00124"></a>00124 0x06, 0x0E, 0xF8, 0xF8, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 89</span>
<a name="l00125"></a>00125 0xC2, 0xE2, 0xB2, 0x9A, 0x8E, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 90</span>
<a name="l00126"></a>00126 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, <span class="comment">// 91</span>
<a name="l00127"></a>00127 0x06, 0x38, 0xC0, 0x00, 0x00, 0x00, <span class="comment">// 92</span>
<a name="l00128"></a>00128 0x81, 0xFF, 0xFF, 0x00, 0x00, 0x00, <span class="comment">// 93</span>
<a name="l00129"></a>00129 0x04, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 94</span>
<a name="l00130"></a>00130 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, <span class="comment">// 95</span>
<a name="l00131"></a>00131 0x01, 0x02, 0x00, 0x00, <span class="comment">// 96</span>
<a name="l00132"></a>00132 0xE8, 0xE8, 0xA8, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 97</span>
<a name="l00133"></a>00133 0xFF, 0xFF, 0x88, 0xF8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 98</span>
<a name="l00134"></a>00134 0x70, 0xF8, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 99</span>
<a name="l00135"></a>00135 0x70, 0xF8, 0x88, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 100</span>
<a name="l00136"></a>00136 0x70, 0xF8, 0xA8, 0xB8, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 101</span>
<a name="l00137"></a>00137 0x08, 0xFE, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 102</span>
<a name="l00138"></a>00138 0x70, 0xF8, 0x88, 0xF8, 0xF8, 0x00, 0x80, 0x80, 0xC0, 0x40, <span class="comment">// 103</span>
<a name="l00139"></a>00139 0xFF, 0xFF, 0x08, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 104</span>
<a name="l00140"></a>00140 0xFB, 0xFB, 0x00, 0x00, <span class="comment">// 105</span>
<a name="l00141"></a>00141 0x00, 0xFB, 0xFB, 0x80, 0xC0, 0x40, <span class="comment">// 106</span>
<a name="l00142"></a>00142 0xFF, 0xFF, 0x70, 0xD8, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 107</span>
<a name="l00143"></a>00143 0xFF, 0xFF, 0x00, 0x00, <span class="comment">// 108</span>
<a name="l00144"></a>00144 0xF8, 0xF8, 0x08, 0xF8, 0xF8, 0x08, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 109</span>
<a name="l00145"></a>00145 0xF8, 0xF8, 0x08, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 110</span>
<a name="l00146"></a>00146 0x70, 0xF8, 0x88, 0xF8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 111</span>
<a name="l00147"></a>00147 0xF8, 0xF8, 0x88, 0xF8, 0x70, 0xC0, 0xC0, 0x00, 0x00, 0x00, <span class="comment">// 112</span>
<a name="l00148"></a>00148 0x70, 0xF8, 0x88, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0xC0, 0xC0, <span class="comment">// 113</span>
<a name="l00149"></a>00149 0xF8, 0xF8, 0x08, 0x00, 0x00, 0x00, <span class="comment">// 114</span>
<a name="l00150"></a>00150 0xB0, 0xB8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 115</span>
<a name="l00151"></a>00151 0xFC, 0xFC, 0x88, 0x00, 0x00, 0x00, <span class="comment">// 116</span>
<a name="l00152"></a>00152 0xF8, 0xF8, 0x80, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 117</span>
<a name="l00153"></a>00153 0x18, 0x78, 0xC0, 0xC0, 0x78, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 118</span>
<a name="l00154"></a>00154 0x18, 0xF8, 0xE0, 0x38, 0x38, 0xE0, 0xF8, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 119</span>
<a name="l00155"></a>00155 0x88, 0xD8, 0x70, 0x70, 0xD8, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 120</span>
<a name="l00156"></a>00156 0x08, 0x38, 0xE0, 0xE0, 0x38, 0x08, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x00, <span class="comment">// 121</span>
<a name="l00157"></a>00157 0xC8, 0xE8, 0xB8, 0x98, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 122</span>
<a name="l00158"></a>00158 0x08, 0xFF, 0xF7, 0x81, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 123</span>
<a name="l00159"></a>00159 0xFE, 0xC0, <span class="comment">// 124</span>
<a name="l00160"></a>00160 0x81, 0xF7, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 125</span>
<a name="l00161"></a>00161 0x20, 0x10, 0x10, 0x20, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 126</span>
<a name="l00162"></a>00162 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xC0, 0x80, 0x80, 0x80, 0xC0 <span class="comment">// 127</span>
<a name="l00163"></a>00163
<a name="l00164"></a>00164 };
<a name="l00165"></a>00165
<a name="l00166"></a>00166 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -242,8 +77,188 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_6591a2127a29f6cea3994dcb5b0596d1.html">DMD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">DejaVuSansBold9.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</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"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * DejaVuSansBold9</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"> * created with FontCreator</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * written by F. Maximilian Thiele</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * http://www.apetech.de/fontCreator</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * me@apetech.de</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"> * File Name : DejaVuSansBold9.h</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * Date : 28.05.2012</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * Font size in bytes : 4662</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * Font width : 10</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * Font height : 10</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * Font first char : 32</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Font last char : 128</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Font used chars : 96</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;<span class="comment"> * The font data are defined as</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * struct _FONT_ {</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * uint8_t font_Width_in_Pixel_for_fixed_drawing;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * uint8_t font_Height_in_Pixel_for_all_characters;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * unit8_t font_First_Char;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * uint8_t font_Char_Count;</span></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"> * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1];</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * // for each character the separate width in pixels,</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * // characters &lt; 128 have an implicit virtual right empty row</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"> * uint8_t font_data[];</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * // bit field of all characters</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</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="preprocessor">#ifndef DEJAVUSANSBOLD9_H</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DEJAVUSANSBOLD9_H</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define DEJAVUSANSBOLD9_WIDTH 10</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DEJAVUSANSBOLD9_HEIGHT 10</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">static</span> uint8_t <span class="keyword">const</span> DejaVuSansBold9[] PROGMEM = {</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; 0x12, 0x36, <span class="comment">// size</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; 0x0A, <span class="comment">// width</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; 0x0A, <span class="comment">// height</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; 0x20, <span class="comment">// first char</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; 0x60, <span class="comment">// char count</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// char widths</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; 0x00, 0x02, 0x03, 0x06, 0x05, 0x08, 0x07, 0x01, 0x03, 0x03, </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; 0x05, 0x05, 0x02, 0x03, 0x02, 0x03, 0x05, 0x05, 0x05, 0x05, </div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x02, 0x02, 0x06, 0x06, </div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; 0x06, 0x04, 0x08, 0x07, 0x05, 0x06, 0x06, 0x05, 0x05, 0x06, </div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; 0x07, 0x02, 0x03, 0x06, 0x05, 0x07, 0x06, 0x06, 0x05, 0x06, </div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; 0x06, 0x05, 0x06, 0x06, 0x07, 0x09, 0x07, 0x06, 0x06, 0x03, </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; 0x03, 0x03, 0x04, 0x05, 0x02, 0x05, 0x05, 0x04, 0x05, 0x05, </div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; 0x04, 0x05, 0x05, 0x02, 0x03, 0x05, 0x02, 0x08, 0x05, 0x05, </div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; 0x05, 0x05, 0x03, 0x04, 0x03, 0x05, 0x06, 0x08, 0x06, 0x06, </div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; 0x04, 0x04, 0x01, 0x04, 0x06, 0x05, </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"> 67</span>&#160; <span class="comment">// font data</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; 0xDE, 0xDE, 0x00, 0x00, <span class="comment">// 33</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, <span class="comment">// 34</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; 0x28, 0xF8, 0x2E, 0xF8, 0x2E, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 35</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; 0x98, 0xB4, 0xFE, 0xB4, 0x64, 0x00, 0x00, 0x40, 0x00, 0x00, <span class="comment">// 36</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; 0x0C, 0x12, 0xD2, 0x7C, 0x78, 0x96, 0x90, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 37</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; 0x60, 0xFC, 0x9E, 0xB2, 0x62, 0xE0, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 38</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; 0x06, 0x00, <span class="comment">// 39</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; 0x3C, 0xFF, 0x81, 0x00, 0x00, 0x00, <span class="comment">// 40</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; 0x81, 0xFF, 0x3C, 0x00, 0x00, 0x00, <span class="comment">// 41</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; 0x14, 0x18, 0x3E, 0x18, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 42</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 43</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; 0xC0, 0xC0, 0x40, 0x00, <span class="comment">// 44</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, <span class="comment">// 45</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; 0xC0, 0xC0, 0x00, 0x00, <span class="comment">// 46</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; 0xC0, 0x38, 0x06, 0x00, 0x00, 0x00, <span class="comment">// 47</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; 0x7C, 0xFE, 0x82, 0xFE, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 48</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; 0x82, 0x82, 0xFE, 0xFE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 49</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; 0xC2, 0xE2, 0xB2, 0x9E, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 50</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; 0x82, 0x92, 0x92, 0xFE, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 51</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; 0x60, 0x58, 0x44, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 52</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; 0x9E, 0x9E, 0x92, 0xF2, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 53</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; 0x7C, 0xFE, 0x96, 0xF2, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 54</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; 0x82, 0xE2, 0x7A, 0x1E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 55</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; 0x6C, 0xEE, 0x92, 0xEE, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 56</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; 0x8C, 0x9E, 0xD2, 0xFE, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 57</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; 0xD8, 0xD8, 0x00, 0x00, <span class="comment">// 58</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; 0xD8, 0xD8, 0x40, 0x00, <span class="comment">// 59</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; 0x20, 0x50, 0x50, 0x50, 0xD8, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 60</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 61</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; 0x88, 0xD8, 0x50, 0x50, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 62</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; 0x02, 0xDA, 0xDE, 0x0E, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 63</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; 0x78, 0x84, 0x32, 0x4A, 0x4A, 0xFA, 0x44, 0x38, 0x00, 0x00, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, <span class="comment">// 64</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; 0x80, 0xF0, 0x7E, 0x4E, 0x7E, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 65</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; 0xFE, 0xFE, 0x92, 0xFE, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 66</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; 0x38, 0x7C, 0xC6, 0x82, 0x82, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 67</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; 0xFE, 0xFE, 0x82, 0x82, 0xFE, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 68</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; 0xFE, 0xFE, 0x92, 0x92, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 69</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; 0xFE, 0xFE, 0x12, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 70</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; 0x78, 0xFC, 0x86, 0x92, 0xF2, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 71</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; 0xFE, 0xFE, 0x10, 0x10, 0x10, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 72</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; 0xFE, 0xFE, 0x00, 0x00, <span class="comment">// 73</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; 0x00, 0xFE, 0xFE, 0x80, 0xC0, 0x40, <span class="comment">// 74</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; 0xFE, 0xFE, 0x38, 0x6C, 0xC6, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 75</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; 0xFE, 0xFE, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 76</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; 0xFE, 0xFE, 0x0C, 0x30, 0x0C, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 77</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; 0xFE, 0xFE, 0x0C, 0x30, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 78</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; 0x7C, 0xFE, 0x82, 0x82, 0xFE, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 79</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; 0xFE, 0xFE, 0x12, 0x1E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 80</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; 0x7C, 0xFE, 0x82, 0x82, 0xFE, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, <span class="comment">// 81</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; 0xFE, 0xFE, 0x12, 0x7E, 0xEC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 82</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; 0xCC, 0x9E, 0x92, 0xF2, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 83</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; 0x02, 0x02, 0xFE, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 84</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; 0x7E, 0xFE, 0x80, 0x80, 0xFE, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 85</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; 0x02, 0x1E, 0xF8, 0xC0, 0xF8, 0x1E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 86</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; 0x0E, 0xFE, 0xE0, 0x3C, 0x06, 0x3C, 0xE0, 0xFE, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 87</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; 0x82, 0xC6, 0x7C, 0x10, 0x7C, 0xC6, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 88</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; 0x06, 0x0E, 0xF8, 0xF8, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 89</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; 0xC2, 0xE2, 0xB2, 0x9A, 0x8E, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 90</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, <span class="comment">// 91</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; 0x06, 0x38, 0xC0, 0x00, 0x00, 0x00, <span class="comment">// 92</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; 0x81, 0xFF, 0xFF, 0x00, 0x00, 0x00, <span class="comment">// 93</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; 0x04, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 94</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, <span class="comment">// 95</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; 0x01, 0x02, 0x00, 0x00, <span class="comment">// 96</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; 0xE8, 0xE8, 0xA8, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 97</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; 0xFF, 0xFF, 0x88, 0xF8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 98</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; 0x70, 0xF8, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 99</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; 0x70, 0xF8, 0x88, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 100</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; 0x70, 0xF8, 0xA8, 0xB8, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 101</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; 0x08, 0xFE, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 102</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; 0x70, 0xF8, 0x88, 0xF8, 0xF8, 0x00, 0x80, 0x80, 0xC0, 0x40, <span class="comment">// 103</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; 0xFF, 0xFF, 0x08, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 104</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; 0xFB, 0xFB, 0x00, 0x00, <span class="comment">// 105</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; 0x00, 0xFB, 0xFB, 0x80, 0xC0, 0x40, <span class="comment">// 106</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; 0xFF, 0xFF, 0x70, 0xD8, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 107</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; 0xFF, 0xFF, 0x00, 0x00, <span class="comment">// 108</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; 0xF8, 0xF8, 0x08, 0xF8, 0xF8, 0x08, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 109</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; 0xF8, 0xF8, 0x08, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 110</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; 0x70, 0xF8, 0x88, 0xF8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 111</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; 0xF8, 0xF8, 0x88, 0xF8, 0x70, 0xC0, 0xC0, 0x00, 0x00, 0x00, <span class="comment">// 112</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; 0x70, 0xF8, 0x88, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0xC0, 0xC0, <span class="comment">// 113</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; 0xF8, 0xF8, 0x08, 0x00, 0x00, 0x00, <span class="comment">// 114</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; 0xB0, 0xB8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 115</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; 0xFC, 0xFC, 0x88, 0x00, 0x00, 0x00, <span class="comment">// 116</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; 0xF8, 0xF8, 0x80, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 117</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; 0x18, 0x78, 0xC0, 0xC0, 0x78, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 118</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; 0x18, 0xF8, 0xE0, 0x38, 0x38, 0xE0, 0xF8, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 119</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; 0x88, 0xD8, 0x70, 0x70, 0xD8, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 120</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; 0x08, 0x38, 0xE0, 0xE0, 0x38, 0x08, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x00, <span class="comment">// 121</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; 0xC8, 0xE8, 0xB8, 0x98, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 122</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; 0x08, 0xFF, 0xF7, 0x81, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 123</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; 0xFE, 0xC0, <span class="comment">// 124</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; 0x81, 0xF7, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 125</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; 0x20, 0x10, 0x10, 0x20, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 126</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xC0, 0x80, 0x80, 0x80, 0xC0 <span class="comment">// 127</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;};</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: DejaVuSansItalic9.h Source File</title> <title>ArduinoLibs: DejaVuSansItalic9.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,185 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">DejaVuSansItalic9.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002
<a name="l00003"></a>00003 <span class="comment">/*</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
<a name="l00005"></a>00005 <span class="comment"> * DejaVuSansItalic9</span>
<a name="l00006"></a>00006 <span class="comment"> *</span>
<a name="l00007"></a>00007 <span class="comment"> * created with FontCreator</span>
<a name="l00008"></a>00008 <span class="comment"> * written by F. Maximilian Thiele</span>
<a name="l00009"></a>00009 <span class="comment"> *</span>
<a name="l00010"></a>00010 <span class="comment"> * http://www.apetech.de/fontCreator</span>
<a name="l00011"></a>00011 <span class="comment"> * me@apetech.de</span>
<a name="l00012"></a>00012 <span class="comment"> *</span>
<a name="l00013"></a>00013 <span class="comment"> * File Name : DejaVuSansItalic9.h</span>
<a name="l00014"></a>00014 <span class="comment"> * Date : 28.05.2012</span>
<a name="l00015"></a>00015 <span class="comment"> * Font size in bytes : 4572</span>
<a name="l00016"></a>00016 <span class="comment"> * Font width : 10</span>
<a name="l00017"></a>00017 <span class="comment"> * Font height : 10</span>
<a name="l00018"></a>00018 <span class="comment"> * Font first char : 32</span>
<a name="l00019"></a>00019 <span class="comment"> * Font last char : 128</span>
<a name="l00020"></a>00020 <span class="comment"> * Font used chars : 96</span>
<a name="l00021"></a>00021 <span class="comment"> *</span>
<a name="l00022"></a>00022 <span class="comment"> * The font data are defined as</span>
<a name="l00023"></a>00023 <span class="comment"> *</span>
<a name="l00024"></a>00024 <span class="comment"> * struct _FONT_ {</span>
<a name="l00025"></a>00025 <span class="comment"> * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self;</span>
<a name="l00026"></a>00026 <span class="comment"> * uint8_t font_Width_in_Pixel_for_fixed_drawing;</span>
<a name="l00027"></a>00027 <span class="comment"> * uint8_t font_Height_in_Pixel_for_all_characters;</span>
<a name="l00028"></a>00028 <span class="comment"> * unit8_t font_First_Char;</span>
<a name="l00029"></a>00029 <span class="comment"> * uint8_t font_Char_Count;</span>
<a name="l00030"></a>00030 <span class="comment"> *</span>
<a name="l00031"></a>00031 <span class="comment"> * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1];</span>
<a name="l00032"></a>00032 <span class="comment"> * // for each character the separate width in pixels,</span>
<a name="l00033"></a>00033 <span class="comment"> * // characters &lt; 128 have an implicit virtual right empty row</span>
<a name="l00034"></a>00034 <span class="comment"> *</span>
<a name="l00035"></a>00035 <span class="comment"> * uint8_t font_data[];</span>
<a name="l00036"></a>00036 <span class="comment"> * // bit field of all characters</span>
<a name="l00037"></a>00037 <span class="comment"> */</span>
<a name="l00038"></a>00038
<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span>
<a name="l00041"></a>00041
<a name="l00042"></a>00042 <span class="preprocessor">#ifndef DEJAVUSANSITALIC9_H</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#define DEJAVUSANSITALIC9_H</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span>
<a name="l00045"></a>00045 <span class="preprocessor">#define DEJAVUSANSITALIC9_WIDTH 10</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#define DEJAVUSANSITALIC9_HEIGHT 10</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span>
<a name="l00048"></a>00048 <span class="keyword">static</span> uint8_t DejaVuSansItalic9[] PROGMEM = {
<a name="l00049"></a>00049 0x11, 0xDC, <span class="comment">// size</span>
<a name="l00050"></a>00050 0x0A, <span class="comment">// width</span>
<a name="l00051"></a>00051 0x0A, <span class="comment">// height</span>
<a name="l00052"></a>00052 0x20, <span class="comment">// first char</span>
<a name="l00053"></a>00053 0x60, <span class="comment">// char count</span>
<a name="l00054"></a>00054
<a name="l00055"></a>00055 <span class="comment">// char widths</span>
<a name="l00056"></a>00056 0x00, 0x03, 0x03, 0x06, 0x04, 0x07, 0x06, 0x01, 0x03, 0x03,
<a name="l00057"></a>00057 0x05, 0x05, 0x01, 0x03, 0x01, 0x03, 0x05, 0x04, 0x05, 0x05,
<a name="l00058"></a>00058 0x05, 0x05, 0x04, 0x05, 0x05, 0x05, 0x02, 0x02, 0x06, 0x06,
<a name="l00059"></a>00059 0x06, 0x04, 0x08, 0x06, 0x05, 0x06, 0x06, 0x05, 0x05, 0x06,
<a name="l00060"></a>00060 0x07, 0x03, 0x03, 0x06, 0x04, 0x08, 0x07, 0x06, 0x05, 0x06,
<a name="l00061"></a>00061 0x05, 0x06, 0x05, 0x06, 0x05, 0x08, 0x06, 0x05, 0x06, 0x04,
<a name="l00062"></a>00062 0x02, 0x04, 0x04, 0x05, 0x02, 0x05, 0x05, 0x04, 0x06, 0x05,
<a name="l00063"></a>00063 0x03, 0x05, 0x05, 0x03, 0x03, 0x05, 0x03, 0x08, 0x05, 0x05,
<a name="l00064"></a>00064 0x05, 0x05, 0x04, 0x04, 0x03, 0x05, 0x05, 0x07, 0x05, 0x05,
<a name="l00065"></a>00065 0x05, 0x04, 0x01, 0x05, 0x06, 0x05,
<a name="l00066"></a>00066
<a name="l00067"></a>00067 <span class="comment">// font data</span>
<a name="l00068"></a>00068 0x80, 0x38, 0x06, 0x00, 0x00, 0x00, <span class="comment">// 33</span>
<a name="l00069"></a>00069 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, <span class="comment">// 34</span>
<a name="l00070"></a>00070 0x20, 0xF8, 0x2E, 0xF8, 0x2E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 35</span>
<a name="l00071"></a>00071 0x98, 0xDC, 0xA6, 0x64, 0x00, 0x40, 0x00, 0x00, <span class="comment">// 36</span>
<a name="l00072"></a>00072 0x1C, 0xD2, 0x2E, 0x10, 0xEC, 0x92, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 37</span>
<a name="l00073"></a>00073 0x60, 0x9C, 0x92, 0xA2, 0x64, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 38</span>
<a name="l00074"></a>00074 0x06, 0x00, <span class="comment">// 39</span>
<a name="l00075"></a>00075 0xF8, 0x06, 0x01, 0x00, 0x00, 0x00, <span class="comment">// 40</span>
<a name="l00076"></a>00076 0x80, 0x61, 0x1E, 0x00, 0x00, 0x00, <span class="comment">// 41</span>
<a name="l00077"></a>00077 0x12, 0x0C, 0x1E, 0x0C, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 42</span>
<a name="l00078"></a>00078 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 43</span>
<a name="l00079"></a>00079 0x80, 0x00, <span class="comment">// 44</span>
<a name="l00080"></a>00080 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, <span class="comment">// 45</span>
<a name="l00081"></a>00081 0x80, 0x00, <span class="comment">// 46</span>
<a name="l00082"></a>00082 0x60, 0x30, 0x0C, 0x00, 0x00, 0x00, <span class="comment">// 47</span>
<a name="l00083"></a>00083 0x78, 0x84, 0x82, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 48</span>
<a name="l00084"></a>00084 0x80, 0x82, 0xF2, 0x8E, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 49</span>
<a name="l00085"></a>00085 0x80, 0xC4, 0xA2, 0x92, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 50</span>
<a name="l00086"></a>00086 0x40, 0x84, 0x92, 0x92, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 51</span>
<a name="l00087"></a>00087 0x40, 0x70, 0xC8, 0x7C, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 52</span>
<a name="l00088"></a>00088 0x80, 0x9C, 0x92, 0x92, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 53</span>
<a name="l00089"></a>00089 0x78, 0x94, 0x92, 0x72, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 54</span>
<a name="l00090"></a>00090 0x82, 0x42, 0x32, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 55</span>
<a name="l00091"></a>00091 0x60, 0xAC, 0x92, 0x92, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 56</span>
<a name="l00092"></a>00092 0x80, 0x9C, 0x92, 0x72, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 57</span>
<a name="l00093"></a>00093 0x80, 0x08, 0x00, 0x00, <span class="comment">// 58</span>
<a name="l00094"></a>00094 0x80, 0x08, 0x00, 0x00, <span class="comment">// 59</span>
<a name="l00095"></a>00095 0x20, 0x20, 0x50, 0x50, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 60</span>
<a name="l00096"></a>00096 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 61</span>
<a name="l00097"></a>00097 0x88, 0x50, 0x50, 0x50, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 62</span>
<a name="l00098"></a>00098 0x82, 0x32, 0x0A, 0x06, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 63</span>
<a name="l00099"></a>00099 0xE0, 0x18, 0xE8, 0x94, 0x94, 0xF4, 0xCC, 0x78, 0x40, 0xC0, 0x80, 0x80, 0x80, 0x40, 0x00, 0x00, <span class="comment">// 64</span>
<a name="l00100"></a>00100 0x80, 0x60, 0x38, 0x24, 0x3E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 65</span>
<a name="l00101"></a>00101 0xC0, 0xB8, 0x96, 0x92, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 66</span>
<a name="l00102"></a>00102 0x78, 0x84, 0x82, 0x82, 0x82, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 67</span>
<a name="l00103"></a>00103 0xC0, 0xB8, 0x86, 0x82, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 68</span>
<a name="l00104"></a>00104 0xC0, 0xB8, 0x96, 0x92, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 69</span>
<a name="l00105"></a>00105 0xC0, 0x38, 0x16, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 70</span>
<a name="l00106"></a>00106 0x78, 0x84, 0x82, 0x82, 0x92, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 71</span>
<a name="l00107"></a>00107 0xC0, 0x38, 0x16, 0x10, 0xD0, 0x38, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 72</span>
<a name="l00108"></a>00108 0xC0, 0x38, 0x06, 0x00, 0x00, 0x00, <span class="comment">// 73</span>
<a name="l00109"></a>00109 0x00, 0xF0, 0x0E, 0xC0, 0x00, 0x00, <span class="comment">// 74</span>
<a name="l00110"></a>00110 0xC0, 0x38, 0x16, 0x68, 0x84, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 75</span>
<a name="l00111"></a>00111 0xC0, 0xB8, 0x86, 0x80, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 76</span>
<a name="l00112"></a>00112 0xC0, 0x38, 0x06, 0x38, 0x10, 0xC8, 0x3C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 77</span>
<a name="l00113"></a>00113 0xC0, 0x38, 0x06, 0x38, 0xC0, 0x38, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 78</span>
<a name="l00114"></a>00114 0x78, 0x84, 0x82, 0x82, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 79</span>
<a name="l00115"></a>00115 0xC0, 0x38, 0x16, 0x12, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 80</span>
<a name="l00116"></a>00116 0x78, 0x84, 0x82, 0x82, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, <span class="comment">// 81</span>
<a name="l00117"></a>00117 0xC0, 0x38, 0x16, 0x72, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 82</span>
<a name="l00118"></a>00118 0x40, 0x8C, 0x92, 0x92, 0x62, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 83</span>
<a name="l00119"></a>00119 0x02, 0xC2, 0x3A, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 84</span>
<a name="l00120"></a>00120 0x78, 0x86, 0x80, 0x80, 0x78, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 85</span>
<a name="l00121"></a>00121 0x0E, 0xF0, 0x40, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 86</span>
<a name="l00122"></a>00122 0xFE, 0x60, 0x1C, 0x02, 0xFE, 0x60, 0x1C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 87</span>
<a name="l00123"></a>00123 0x80, 0x42, 0x2C, 0x10, 0x6C, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 88</span>
<a name="l00124"></a>00124 0x02, 0xCC, 0x30, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 89</span>
<a name="l00125"></a>00125 0x80, 0xC2, 0xA2, 0x92, 0x8A, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 90</span>
<a name="l00126"></a>00126 0xC0, 0xBC, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 91</span>
<a name="l00127"></a>00127 0x1E, 0xE0, 0x00, 0x00, <span class="comment">// 92</span>
<a name="l00128"></a>00128 0x80, 0xC0, 0x3D, 0x03, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 93</span>
<a name="l00129"></a>00129 0x04, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 94</span>
<a name="l00130"></a>00130 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, <span class="comment">// 95</span>
<a name="l00131"></a>00131 0x01, 0x02, 0x00, 0x00, <span class="comment">// 96</span>
<a name="l00132"></a>00132 0xC0, 0xA8, 0xA8, 0xE8, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 97</span>
<a name="l00133"></a>00133 0xC0, 0x7C, 0x93, 0x88, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 98</span>
<a name="l00134"></a>00134 0xF0, 0x98, 0x88, 0x08, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 99</span>
<a name="l00135"></a>00135 0xF0, 0x98, 0x88, 0xC8, 0x3C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 100</span>
<a name="l00136"></a>00136 0x70, 0xB8, 0xA8, 0xA8, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 101</span>
<a name="l00137"></a>00137 0xC8, 0x3E, 0x09, 0x00, 0x00, 0x00, <span class="comment">// 102</span>
<a name="l00138"></a>00138 0xF0, 0x98, 0x88, 0xC8, 0x38, 0x80, 0x80, 0x80, 0x40, 0x00, <span class="comment">// 103</span>
<a name="l00139"></a>00139 0xC0, 0x3C, 0x13, 0xC8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 104</span>
<a name="l00140"></a>00140 0xE0, 0x38, 0x01, 0x00, 0x00, 0x00, <span class="comment">// 105</span>
<a name="l00141"></a>00141 0xC0, 0x38, 0x01, 0xC0, 0x00, 0x00, <span class="comment">// 106</span>
<a name="l00142"></a>00142 0xC0, 0x3C, 0x23, 0xD0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 107</span>
<a name="l00143"></a>00143 0xC0, 0x3C, 0x03, 0x00, 0x00, 0x00, <span class="comment">// 108</span>
<a name="l00144"></a>00144 0xE0, 0x18, 0x08, 0xC8, 0x78, 0x10, 0xC8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 109</span>
<a name="l00145"></a>00145 0xE0, 0x38, 0x08, 0xC8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 110</span>
<a name="l00146"></a>00146 0x70, 0x98, 0x88, 0xC8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 111</span>
<a name="l00147"></a>00147 0xE0, 0x98, 0x88, 0xC8, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 112</span>
<a name="l00148"></a>00148 0xF0, 0x88, 0x88, 0xF0, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x00, <span class="comment">// 113</span>
<a name="l00149"></a>00149 0xE0, 0x38, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 114</span>
<a name="l00150"></a>00150 0x80, 0xB8, 0xA8, 0xE8, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 115</span>
<a name="l00151"></a>00151 0xF8, 0x8C, 0x08, 0x00, 0x00, 0x00, <span class="comment">// 116</span>
<a name="l00152"></a>00152 0xE0, 0x98, 0x80, 0xE0, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 117</span>
<a name="l00153"></a>00153 0x38, 0xC0, 0x60, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 118</span>
<a name="l00154"></a>00154 0xF8, 0x60, 0x10, 0xF8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 119</span>
<a name="l00155"></a>00155 0x80, 0x48, 0x30, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 120</span>
<a name="l00156"></a>00156 0x00, 0xF8, 0x60, 0x10, 0x08, 0x80, 0x40, 0x00, 0x00, 0x00, <span class="comment">// 121</span>
<a name="l00157"></a>00157 0x80, 0xC8, 0xA8, 0x98, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 122</span>
<a name="l00158"></a>00158 0x08, 0xF8, 0x87, 0x01, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 123</span>
<a name="l00159"></a>00159 0xFE, 0xC0, <span class="comment">// 124</span>
<a name="l00160"></a>00160 0x80, 0x80, 0x71, 0x0F, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, <span class="comment">// 125</span>
<a name="l00161"></a>00161 0x20, 0x10, 0x10, 0x20, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 126</span>
<a name="l00162"></a>00162 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xC0, 0x80, 0x80, 0x80, 0xC0 <span class="comment">// 127</span>
<a name="l00163"></a>00163
<a name="l00164"></a>00164 };
<a name="l00165"></a>00165
<a name="l00166"></a>00166 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -242,8 +77,188 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_6591a2127a29f6cea3994dcb5b0596d1.html">DMD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">DejaVuSansItalic9.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</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"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * DejaVuSansItalic9</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"> * created with FontCreator</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * written by F. Maximilian Thiele</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * http://www.apetech.de/fontCreator</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * me@apetech.de</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"> * File Name : DejaVuSansItalic9.h</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * Date : 28.05.2012</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * Font size in bytes : 4572</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * Font width : 10</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * Font height : 10</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * Font first char : 32</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Font last char : 128</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Font used chars : 96</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;<span class="comment"> * The font data are defined as</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * struct _FONT_ {</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * uint8_t font_Width_in_Pixel_for_fixed_drawing;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * uint8_t font_Height_in_Pixel_for_all_characters;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * unit8_t font_First_Char;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * uint8_t font_Char_Count;</span></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"> * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1];</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * // for each character the separate width in pixels,</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * // characters &lt; 128 have an implicit virtual right empty row</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"> * uint8_t font_data[];</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * // bit field of all characters</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</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="preprocessor">#ifndef DEJAVUSANSITALIC9_H</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DEJAVUSANSITALIC9_H</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define DEJAVUSANSITALIC9_WIDTH 10</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DEJAVUSANSITALIC9_HEIGHT 10</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">static</span> uint8_t <span class="keyword">const</span> DejaVuSansItalic9[] PROGMEM = {</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; 0x11, 0xDC, <span class="comment">// size</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; 0x0A, <span class="comment">// width</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; 0x0A, <span class="comment">// height</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; 0x20, <span class="comment">// first char</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; 0x60, <span class="comment">// char count</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// char widths</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; 0x00, 0x03, 0x03, 0x06, 0x04, 0x07, 0x06, 0x01, 0x03, 0x03, </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; 0x05, 0x05, 0x01, 0x03, 0x01, 0x03, 0x05, 0x04, 0x05, 0x05, </div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; 0x05, 0x05, 0x04, 0x05, 0x05, 0x05, 0x02, 0x02, 0x06, 0x06, </div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; 0x06, 0x04, 0x08, 0x06, 0x05, 0x06, 0x06, 0x05, 0x05, 0x06, </div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; 0x07, 0x03, 0x03, 0x06, 0x04, 0x08, 0x07, 0x06, 0x05, 0x06, </div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; 0x05, 0x06, 0x05, 0x06, 0x05, 0x08, 0x06, 0x05, 0x06, 0x04, </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; 0x02, 0x04, 0x04, 0x05, 0x02, 0x05, 0x05, 0x04, 0x06, 0x05, </div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; 0x03, 0x05, 0x05, 0x03, 0x03, 0x05, 0x03, 0x08, 0x05, 0x05, </div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; 0x05, 0x05, 0x04, 0x04, 0x03, 0x05, 0x05, 0x07, 0x05, 0x05, </div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; 0x05, 0x04, 0x01, 0x05, 0x06, 0x05, </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"> 67</span>&#160; <span class="comment">// font data</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; 0x80, 0x38, 0x06, 0x00, 0x00, 0x00, <span class="comment">// 33</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, <span class="comment">// 34</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; 0x20, 0xF8, 0x2E, 0xF8, 0x2E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 35</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; 0x98, 0xDC, 0xA6, 0x64, 0x00, 0x40, 0x00, 0x00, <span class="comment">// 36</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; 0x1C, 0xD2, 0x2E, 0x10, 0xEC, 0x92, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 37</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; 0x60, 0x9C, 0x92, 0xA2, 0x64, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 38</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; 0x06, 0x00, <span class="comment">// 39</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; 0xF8, 0x06, 0x01, 0x00, 0x00, 0x00, <span class="comment">// 40</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; 0x80, 0x61, 0x1E, 0x00, 0x00, 0x00, <span class="comment">// 41</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; 0x12, 0x0C, 0x1E, 0x0C, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 42</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 43</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; 0x80, 0x00, <span class="comment">// 44</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, <span class="comment">// 45</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; 0x80, 0x00, <span class="comment">// 46</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; 0x60, 0x30, 0x0C, 0x00, 0x00, 0x00, <span class="comment">// 47</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; 0x78, 0x84, 0x82, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 48</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; 0x80, 0x82, 0xF2, 0x8E, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 49</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; 0x80, 0xC4, 0xA2, 0x92, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 50</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; 0x40, 0x84, 0x92, 0x92, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 51</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; 0x40, 0x70, 0xC8, 0x7C, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 52</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; 0x80, 0x9C, 0x92, 0x92, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 53</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; 0x78, 0x94, 0x92, 0x72, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 54</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; 0x82, 0x42, 0x32, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 55</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; 0x60, 0xAC, 0x92, 0x92, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 56</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; 0x80, 0x9C, 0x92, 0x72, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 57</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; 0x80, 0x08, 0x00, 0x00, <span class="comment">// 58</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; 0x80, 0x08, 0x00, 0x00, <span class="comment">// 59</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; 0x20, 0x20, 0x50, 0x50, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 60</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 61</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; 0x88, 0x50, 0x50, 0x50, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 62</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; 0x82, 0x32, 0x0A, 0x06, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 63</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; 0xE0, 0x18, 0xE8, 0x94, 0x94, 0xF4, 0xCC, 0x78, 0x40, 0xC0, 0x80, 0x80, 0x80, 0x40, 0x00, 0x00, <span class="comment">// 64</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; 0x80, 0x60, 0x38, 0x24, 0x3E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 65</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; 0xC0, 0xB8, 0x96, 0x92, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 66</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; 0x78, 0x84, 0x82, 0x82, 0x82, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 67</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; 0xC0, 0xB8, 0x86, 0x82, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 68</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; 0xC0, 0xB8, 0x96, 0x92, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 69</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; 0xC0, 0x38, 0x16, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 70</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; 0x78, 0x84, 0x82, 0x82, 0x92, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 71</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; 0xC0, 0x38, 0x16, 0x10, 0xD0, 0x38, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 72</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; 0xC0, 0x38, 0x06, 0x00, 0x00, 0x00, <span class="comment">// 73</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; 0x00, 0xF0, 0x0E, 0xC0, 0x00, 0x00, <span class="comment">// 74</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; 0xC0, 0x38, 0x16, 0x68, 0x84, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 75</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; 0xC0, 0xB8, 0x86, 0x80, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 76</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; 0xC0, 0x38, 0x06, 0x38, 0x10, 0xC8, 0x3C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 77</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; 0xC0, 0x38, 0x06, 0x38, 0xC0, 0x38, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 78</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; 0x78, 0x84, 0x82, 0x82, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 79</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; 0xC0, 0x38, 0x16, 0x12, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 80</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; 0x78, 0x84, 0x82, 0x82, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, <span class="comment">// 81</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; 0xC0, 0x38, 0x16, 0x72, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 82</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; 0x40, 0x8C, 0x92, 0x92, 0x62, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 83</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; 0x02, 0xC2, 0x3A, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 84</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; 0x78, 0x86, 0x80, 0x80, 0x78, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 85</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; 0x0E, 0xF0, 0x40, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 86</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; 0xFE, 0x60, 0x1C, 0x02, 0xFE, 0x60, 0x1C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 87</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; 0x80, 0x42, 0x2C, 0x10, 0x6C, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 88</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; 0x02, 0xCC, 0x30, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 89</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; 0x80, 0xC2, 0xA2, 0x92, 0x8A, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 90</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; 0xC0, 0xBC, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 91</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; 0x1E, 0xE0, 0x00, 0x00, <span class="comment">// 92</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; 0x80, 0xC0, 0x3D, 0x03, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 93</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; 0x04, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 94</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, <span class="comment">// 95</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; 0x01, 0x02, 0x00, 0x00, <span class="comment">// 96</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; 0xC0, 0xA8, 0xA8, 0xE8, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 97</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; 0xC0, 0x7C, 0x93, 0x88, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 98</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; 0xF0, 0x98, 0x88, 0x08, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 99</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; 0xF0, 0x98, 0x88, 0xC8, 0x3C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 100</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; 0x70, 0xB8, 0xA8, 0xA8, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 101</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; 0xC8, 0x3E, 0x09, 0x00, 0x00, 0x00, <span class="comment">// 102</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; 0xF0, 0x98, 0x88, 0xC8, 0x38, 0x80, 0x80, 0x80, 0x40, 0x00, <span class="comment">// 103</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; 0xC0, 0x3C, 0x13, 0xC8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 104</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; 0xE0, 0x38, 0x01, 0x00, 0x00, 0x00, <span class="comment">// 105</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; 0xC0, 0x38, 0x01, 0xC0, 0x00, 0x00, <span class="comment">// 106</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; 0xC0, 0x3C, 0x23, 0xD0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 107</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; 0xC0, 0x3C, 0x03, 0x00, 0x00, 0x00, <span class="comment">// 108</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; 0xE0, 0x18, 0x08, 0xC8, 0x78, 0x10, 0xC8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 109</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; 0xE0, 0x38, 0x08, 0xC8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 110</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; 0x70, 0x98, 0x88, 0xC8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 111</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; 0xE0, 0x98, 0x88, 0xC8, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 112</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; 0xF0, 0x88, 0x88, 0xF0, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x00, <span class="comment">// 113</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; 0xE0, 0x38, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 114</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; 0x80, 0xB8, 0xA8, 0xE8, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 115</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; 0xF8, 0x8C, 0x08, 0x00, 0x00, 0x00, <span class="comment">// 116</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; 0xE0, 0x98, 0x80, 0xE0, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 117</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; 0x38, 0xC0, 0x60, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 118</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; 0xF8, 0x60, 0x10, 0xF8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 119</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; 0x80, 0x48, 0x30, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 120</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; 0x00, 0xF8, 0x60, 0x10, 0x08, 0x80, 0x40, 0x00, 0x00, 0x00, <span class="comment">// 121</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; 0x80, 0xC8, 0xA8, 0x98, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 122</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; 0x08, 0xF8, 0x87, 0x01, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 123</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; 0xFE, 0xC0, <span class="comment">// 124</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; 0x80, 0x80, 0x71, 0x0F, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, <span class="comment">// 125</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; 0x20, 0x10, 0x10, 0x20, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 126</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xC0, 0x80, 0x80, 0x80, 0xC0 <span class="comment">// 127</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;};</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: EEPROM24.cpp Source File</title> <title>ArduinoLibs: EEPROM24.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,198 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">EEPROM24.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;EEPROM24.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &quot;I2CMaster.h&quot;</span>
<a name="l00025"></a>00025
<a name="l00095"></a><a class="code" href="classEEPROM24.html#ae8547f6ff7711496e1959ee24a142995">00095</a> <a class="code" href="classEEPROM24.html#ae8547f6ff7711496e1959ee24a142995" title="Constructs a new EEPROM access object on bus for an EEPROM of the specified type.">EEPROM24::EEPROM24</a>(<a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> &amp;bus, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> type, uint8_t bank)
<a name="l00096"></a>00096 : _bus(&amp;bus)
<a name="l00097"></a>00097 , _size((type &amp; 0xFFFF) * ((type &gt;&gt; 16) &amp; 0x0FFF))
<a name="l00098"></a>00098 , _pageSize((type &gt;&gt; 16) &amp; 0x0FFF)
<a name="l00099"></a>00099 , _mode((uint8_t)((type &gt;&gt; 28) &amp; 0x0F))
<a name="l00100"></a>00100 , i2cAddress(0x50)
<a name="l00101"></a>00101 {
<a name="l00102"></a>00102 <span class="comment">// Adjust the I2C address for the memory bank of the chip.</span>
<a name="l00103"></a>00103 <span class="keywordflow">switch</span> (_mode) {
<a name="l00104"></a>00104 <span class="keywordflow">case</span> EE_BSEL_NONE:
<a name="l00105"></a>00105 i2cAddress += (bank &amp; 0x07);
<a name="l00106"></a>00106 <span class="keywordflow">break</span>;
<a name="l00107"></a>00107 <span class="keywordflow">case</span> EE_BSEL_8BIT_ADDR: {
<a name="l00108"></a>00108 uint8_t addrBits = 8;
<a name="l00109"></a>00109 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c" title="Returns the size of the EEPROM in bytes.">size</a> = 0x0100;
<a name="l00110"></a>00110 <span class="keywordflow">while</span> (size &lt; _size) {
<a name="l00111"></a>00111 ++addrBits;
<a name="l00112"></a>00112 size &lt;&lt;= 1;
<a name="l00113"></a>00113 }
<a name="l00114"></a>00114 <span class="keywordflow">if</span> (addrBits &lt; 11)
<a name="l00115"></a>00115 i2cAddress += ((bank &lt;&lt; (addrBits - 8)) &amp; 0x07);
<a name="l00116"></a>00116 <span class="keywordflow">break</span>; }
<a name="l00117"></a>00117 <span class="keywordflow">case</span> EE_BSEL_17BIT_ADDR:
<a name="l00118"></a>00118 i2cAddress += ((bank &lt;&lt; 1) &amp; 0x06);
<a name="l00119"></a>00119 <span class="keywordflow">break</span>;
<a name="l00120"></a>00120 <span class="keywordflow">case</span> EE_BSEL_17BIT_ADDR_ALT:
<a name="l00121"></a>00121 i2cAddress += bank &amp; 0x03;
<a name="l00122"></a>00122 <span class="keywordflow">break</span>;
<a name="l00123"></a>00123 }
<a name="l00124"></a>00124 }
<a name="l00125"></a>00125
<a name="l00152"></a><a class="code" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf">00152</a> <span class="keywordtype">bool</span> <a class="code" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf" title="Returns true if the EEPROM is available on the I2C bus; false otherwise.">EEPROM24::available</a>()
<a name="l00153"></a>00153 {
<a name="l00154"></a>00154 <span class="comment">// Perform a &quot;Current Address Read&quot; on the EEPROM. We don&#39;t care about</span>
<a name="l00155"></a>00155 <span class="comment">// the returned byte. We only care if the read request was ACK&#39;ed or not.</span>
<a name="l00156"></a>00156 <span class="keywordflow">if</span> (!_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(i2cAddress, 1))
<a name="l00157"></a>00157 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00158"></a>00158 _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();
<a name="l00159"></a>00159 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00160"></a>00160 }
<a name="l00161"></a>00161
<a name="l00167"></a><a class="code" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586">00167</a> uint8_t <a class="code" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">EEPROM24::read</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address)
<a name="l00168"></a>00168 {
<a name="l00169"></a>00169 <span class="keywordflow">if</span> (address &gt;= _size)
<a name="l00170"></a>00170 <span class="keywordflow">return</span> 0;
<a name="l00171"></a>00171 writeAddress(address);
<a name="l00172"></a>00172 <span class="keywordflow">if</span> (!_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(i2cAddress, 1))
<a name="l00173"></a>00173 <span class="keywordflow">return</span> 0;
<a name="l00174"></a>00174 <span class="keywordflow">return</span> _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();
<a name="l00175"></a>00175 }
<a name="l00176"></a>00176
<a name="l00187"></a><a class="code" href="classEEPROM24.html#a63e23dc014415f947975359ac09f627e">00187</a> <span class="keywordtype">size_t</span> <a class="code" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">EEPROM24::read</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address, <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> length)
<a name="l00188"></a>00188 {
<a name="l00189"></a>00189 <span class="keywordflow">if</span> (address &gt;= _size || !length)
<a name="l00190"></a>00190 <span class="keywordflow">return</span> 0;
<a name="l00191"></a>00191 <span class="keywordflow">if</span> ((address + length) &gt; _size)
<a name="l00192"></a>00192 length = (size_t)(_size - address);
<a name="l00193"></a>00193 writeAddress(address);
<a name="l00194"></a>00194 <span class="keywordflow">if</span> (!_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(i2cAddress, length))
<a name="l00195"></a>00195 <span class="keywordflow">return</span> 0;
<a name="l00196"></a>00196 uint8_t *d = (uint8_t *)data;
<a name="l00197"></a>00197 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count = 0;
<a name="l00198"></a>00198 <span class="keywordflow">while</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833" title="Returns the number of bytes that are still available for reading.">available</a>()) {
<a name="l00199"></a>00199 *d++ = _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();
<a name="l00200"></a>00200 ++count;
<a name="l00201"></a>00201 }
<a name="l00202"></a>00202 <span class="keywordflow">return</span> count;
<a name="l00203"></a>00203 }
<a name="l00204"></a>00204
<a name="l00213"></a><a class="code" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8">00213</a> <span class="keywordtype">bool</span> <a class="code" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">EEPROM24::write</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address, uint8_t value)
<a name="l00214"></a>00214 {
<a name="l00215"></a>00215 <span class="keywordflow">if</span> (address &gt;= _size)
<a name="l00216"></a>00216 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00217"></a>00217 writeAddress(address);
<a name="l00218"></a>00218 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(value);
<a name="l00219"></a>00219 <span class="keywordflow">return</span> waitForWrite();
<a name="l00220"></a>00220 }
<a name="l00221"></a>00221
<a name="l00235"></a><a class="code" href="classEEPROM24.html#a3d918ed34da7ca6d21a776c0614eebf3">00235</a> <span class="keywordtype">size_t</span> <a class="code" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">EEPROM24::write</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address, <span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> length)
<a name="l00236"></a>00236 {
<a name="l00237"></a>00237 <span class="keywordflow">if</span> (address &gt;= _size)
<a name="l00238"></a>00238 <span class="keywordflow">return</span> 0;
<a name="l00239"></a>00239 <span class="keywordflow">if</span> ((address + length) &gt; _size)
<a name="l00240"></a>00240 length = (size_t)(_size - address);
<a name="l00241"></a>00241 <span class="keywordtype">bool</span> needAddress = <span class="keyword">true</span>;
<a name="l00242"></a>00242 <span class="keywordtype">size_t</span> result = 0;
<a name="l00243"></a>00243 <span class="keywordtype">size_t</span> page = 0;
<a name="l00244"></a>00244 <span class="keyword">const</span> uint8_t *d = (<span class="keyword">const</span> uint8_t *)data;
<a name="l00245"></a>00245 <span class="keywordflow">while</span> (length &gt; 0) {
<a name="l00246"></a>00246 <span class="keywordflow">if</span> (needAddress) {
<a name="l00247"></a>00247 writeAddress(address);
<a name="l00248"></a>00248 needAddress = <span class="keyword">false</span>;
<a name="l00249"></a>00249 }
<a name="l00250"></a>00250 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(*d++);
<a name="l00251"></a>00251 ++address;
<a name="l00252"></a>00252 ++page;
<a name="l00253"></a>00253 <span class="keywordflow">if</span> ((address &amp; (_pageSize - 1)) == 0) {
<a name="l00254"></a>00254 <span class="comment">// At the end of a page, so perform a flush.</span>
<a name="l00255"></a>00255 <span class="keywordflow">if</span> (!waitForWrite())
<a name="l00256"></a>00256 <span class="keywordflow">return</span> result; <span class="comment">// Could not write this page.</span>
<a name="l00257"></a>00257 needAddress = <span class="keyword">true</span>;
<a name="l00258"></a>00258 result += page;
<a name="l00259"></a>00259 page = 0;
<a name="l00260"></a>00260 }
<a name="l00261"></a>00261 --length;
<a name="l00262"></a>00262 }
<a name="l00263"></a>00263 <span class="keywordflow">if</span> (!needAddress) {
<a name="l00264"></a>00264 <span class="keywordflow">if</span> (!waitForWrite())
<a name="l00265"></a>00265 <span class="keywordflow">return</span> result; <span class="comment">// Could not write the final page.</span>
<a name="l00266"></a>00266 }
<a name="l00267"></a>00267 <span class="keywordflow">return</span> result + page;
<a name="l00268"></a>00268 }
<a name="l00269"></a>00269
<a name="l00270"></a>00270 <span class="keywordtype">void</span> EEPROM24::writeAddress(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address)
<a name="l00271"></a>00271 {
<a name="l00272"></a>00272 <span class="keywordflow">switch</span> (_mode) {
<a name="l00273"></a>00273 <span class="keywordflow">case</span> EE_BSEL_NONE:
<a name="l00274"></a>00274 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(i2cAddress);
<a name="l00275"></a>00275 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)(address &gt;&gt; 8));
<a name="l00276"></a>00276 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)address);
<a name="l00277"></a>00277 <span class="keywordflow">break</span>;
<a name="l00278"></a>00278 <span class="keywordflow">case</span> EE_BSEL_8BIT_ADDR:
<a name="l00279"></a>00279 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(i2cAddress | (((uint8_t)(address &gt;&gt; 8)) &amp; 0x07));
<a name="l00280"></a>00280 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)address);
<a name="l00281"></a>00281 <span class="keywordflow">break</span>;
<a name="l00282"></a>00282 <span class="keywordflow">case</span> EE_BSEL_17BIT_ADDR:
<a name="l00283"></a>00283 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(i2cAddress | (((uint8_t)(address &gt;&gt; 16)) &amp; 0x01));
<a name="l00284"></a>00284 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)(address &gt;&gt; 8));
<a name="l00285"></a>00285 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)address);
<a name="l00286"></a>00286 <span class="keywordflow">break</span>;
<a name="l00287"></a>00287 <span class="keywordflow">case</span> EE_BSEL_17BIT_ADDR_ALT:
<a name="l00288"></a>00288 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(i2cAddress | (((uint8_t)(address &gt;&gt; 14)) &amp; 0x04));
<a name="l00289"></a>00289 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)(address &gt;&gt; 8));
<a name="l00290"></a>00290 _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)address);
<a name="l00291"></a>00291 <span class="keywordflow">break</span>;
<a name="l00292"></a>00292 }
<a name="l00293"></a>00293 }
<a name="l00294"></a>00294
<a name="l00295"></a>00295 <span class="keywordtype">bool</span> EEPROM24::waitForWrite()
<a name="l00296"></a>00296 {
<a name="l00297"></a>00297 <span class="comment">// 1000 iterations is going to be approximately 100ms when the I2C</span>
<a name="l00298"></a>00298 <span class="comment">// clock is 100 kHz. If there has been no response in that time</span>
<a name="l00299"></a>00299 <span class="comment">// then we assume that the write has failed and timeout.</span>
<a name="l00300"></a>00300 <span class="keywordflow">if</span> (!_bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>())
<a name="l00301"></a>00301 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00302"></a>00302 <span class="keywordtype">unsigned</span> count = 1000;
<a name="l00303"></a>00303 <span class="keywordflow">while</span> (count &gt; 0) {
<a name="l00304"></a>00304 _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(i2cAddress);
<a name="l00305"></a>00305 <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>())
<a name="l00306"></a>00306 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00307"></a>00307 --count;
<a name="l00308"></a>00308 }
<a name="l00309"></a>00309 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00310"></a>00310 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -255,8 +77,201 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_f9b96888882c2691b8eeaeafd1b9501d.html">I2C</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">EEPROM24.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;EEPROM24.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;I2CMaster.h&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="code" href="classEEPROM24.html#ae8547f6ff7711496e1959ee24a142995"> 95</a></span>&#160;<a class="code" href="classEEPROM24.html#ae8547f6ff7711496e1959ee24a142995" title="Constructs a new EEPROM access object on bus for an EEPROM of the specified type.">EEPROM24::EEPROM24</a>(<a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> &amp;bus, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> type, uint8_t bank)</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; : _bus(&amp;bus)</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; , _size((type &amp; 0xFFFF) * ((type &gt;&gt; 16) &amp; 0x0FFF))</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; , _pageSize((type &gt;&gt; 16) &amp; 0x0FFF)</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; , _mode((uint8_t)((type &gt;&gt; 28) &amp; 0x0F))</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; , i2cAddress(0x50)</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="comment">// Adjust the I2C address for the memory bank of the chip.</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">switch</span> (_mode) {</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">case</span> EE_BSEL_NONE:</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; i2cAddress += (bank &amp; 0x07);</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">case</span> EE_BSEL_8BIT_ADDR: {</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; uint8_t addrBits = 8;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c" title="Returns the size of the EEPROM in bytes.">size</a> = 0x0100;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">while</span> (size &lt; _size) {</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; ++addrBits;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; size &lt;&lt;= 1;</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="keywordflow">if</span> (addrBits &lt; 11)</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; i2cAddress += ((bank &lt;&lt; (addrBits - 8)) &amp; 0x07);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">break</span>; }</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">case</span> EE_BSEL_17BIT_ADDR:</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; i2cAddress += ((bank &lt;&lt; 1) &amp; 0x06);</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">case</span> EE_BSEL_17BIT_ADDR_ALT:</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; i2cAddress += bank &amp; 0x03;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</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;</div>
<div class="line"><a name="l00152"></a><span class="lineno"><a class="code" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf"> 152</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf" title="Returns true if the EEPROM is available on the I2C bus; false otherwise.">EEPROM24::available</a>()</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; <span class="comment">// Perform a &quot;Current Address Read&quot; on the EEPROM. We don&#39;t care about</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment">// the returned byte. We only care if the read request was ACK&#39;ed or not.</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (!_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(i2cAddress, 1))</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</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;</div>
<div class="line"><a name="l00167"></a><span class="lineno"><a class="code" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586"> 167</a></span>&#160;uint8_t <a class="code" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">EEPROM24::read</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address)</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;{</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> (address &gt;= _size)</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; writeAddress(address);</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span> (!_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(i2cAddress, 1))</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;}</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
<div class="line"><a name="l00187"></a><span class="lineno"><a class="code" href="classEEPROM24.html#a63e23dc014415f947975359ac09f627e"> 187</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">EEPROM24::read</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address, <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> length)</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;{</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span> (address &gt;= _size || !length)</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">if</span> ((address + length) &gt; _size)</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; length = (size_t)(_size - address);</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; writeAddress(address);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> (!_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(i2cAddress, length))</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; uint8_t *d = (uint8_t *)data;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count = 0;</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">while</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833" title="Returns the number of bytes that are still available for reading.">available</a>()) {</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; *d++ = _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>();</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; ++count;</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> count;</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="l00213"></a><span class="lineno"><a class="code" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8"> 213</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">EEPROM24::write</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address, uint8_t value)</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="keywordflow">if</span> (address &gt;= _size)</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; writeAddress(address);</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(value);</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> waitForWrite();</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;}</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div>
<div class="line"><a name="l00235"></a><span class="lineno"><a class="code" href="classEEPROM24.html#a3d918ed34da7ca6d21a776c0614eebf3"> 235</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">EEPROM24::write</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address, <span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> length)</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> (address &gt;= _size)</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span> ((address + length) &gt; _size)</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; length = (size_t)(_size - address);</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordtype">bool</span> needAddress = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordtype">size_t</span> result = 0;</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordtype">size_t</span> page = 0;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keyword">const</span> uint8_t *d = (<span class="keyword">const</span> uint8_t *)data;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">while</span> (length &gt; 0) {</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">if</span> (needAddress) {</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; writeAddress(address);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; needAddress = <span class="keyword">false</span>;</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; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(*d++);</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; ++address;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; ++page;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> ((address &amp; (_pageSize - 1)) == 0) {</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="comment">// At the end of a page, so perform a flush.</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">if</span> (!waitForWrite())</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> result; <span class="comment">// Could not write this page.</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; needAddress = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; result += page;</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; page = 0;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; --length;</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="keywordflow">if</span> (!needAddress) {</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (!waitForWrite())</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> result; <span class="comment">// Could not write the final page.</span></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; <span class="keywordflow">return</span> result + page;</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;}</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="keywordtype">void</span> EEPROM24::writeAddress(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address)</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"> 272</span>&#160; <span class="keywordflow">switch</span> (_mode) {</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">case</span> EE_BSEL_NONE:</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(i2cAddress);</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)(address &gt;&gt; 8));</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)address);</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">case</span> EE_BSEL_8BIT_ADDR:</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(i2cAddress | (((uint8_t)(address &gt;&gt; 8)) &amp; 0x07));</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)address);</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">case</span> EE_BSEL_17BIT_ADDR:</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(i2cAddress | (((uint8_t)(address &gt;&gt; 16)) &amp; 0x01));</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)(address &gt;&gt; 8));</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)address);</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">case</span> EE_BSEL_17BIT_ADDR_ALT:</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(i2cAddress | (((uint8_t)(address &gt;&gt; 14)) &amp; 0x04));</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)(address &gt;&gt; 8));</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)address);</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">break</span>;</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;}</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="keywordtype">bool</span> EEPROM24::waitForWrite()</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; <span class="comment">// 1000 iterations is going to be approximately 100ms when the I2C</span></div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="comment">// clock is 100 kHz. If there has been no response in that time</span></div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="comment">// then we assume that the write has failed and timeout.</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span> (!_bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>())</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordtype">unsigned</span> count = 1000;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">while</span> (count &gt; 0) {</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(i2cAddress);</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (_bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>())</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; --count;</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; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: EEPROM24.h Source File</title> <title>ArduinoLibs: EEPROM24.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,106 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">EEPROM24.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef EEPROM24_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM24_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;stddef.h&gt;</span>
<a name="l00028"></a>00028
<a name="l00029"></a>00029 <span class="keyword">class </span><a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a>;
<a name="l00030"></a>00030
<a name="l00031"></a>00031 <span class="comment">// Block select modes.</span>
<a name="l00032"></a>00032 <span class="preprocessor">#define EE_BSEL_NONE 0</span>
<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#define EE_BSEL_8BIT_ADDR 1</span>
<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#define EE_BSEL_17BIT_ADDR 2</span>
<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#define EE_BSEL_17BIT_ADDR_ALT 3</span>
<a name="l00036"></a>00036 <span class="preprocessor"></span>
<a name="l00037"></a>00037 <span class="comment">// Create an EEPROM descriptor from byte size, page size, and block select mode.</span>
<a name="l00038"></a>00038 <span class="preprocessor">#define _EE24(byteSize, pageSize, mode) \</span>
<a name="l00039"></a>00039 <span class="preprocessor"> (((byteSize) / (pageSize)) | (((unsigned long)(pageSize)) &lt;&lt; 16) | \</span>
<a name="l00040"></a>00040 <span class="preprocessor"> (((unsigned long)(mode)) &lt;&lt; 28))</span>
<a name="l00041"></a>00041 <span class="preprocessor"></span>
<a name="l00042"></a>00042 <span class="comment">// Type descriptors for the 24LCXX range of EEPROM&#39;s.</span>
<a name="l00043"></a>00043 <span class="preprocessor">#define EEPROM_24LC00 _EE24(16UL, 1, EE_BSEL_8BIT_ADDR)</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC01 _EE24(128UL, 8, EE_BSEL_8BIT_ADDR)</span>
<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC014 _EE24(128UL, 16, EE_BSEL_8BIT_ADDR)</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC02 _EE24(256UL, 8, EE_BSEL_8BIT_ADDR)</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC024 _EE24(256UL, 16, EE_BSEL_8BIT_ADDR)</span>
<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC025 _EE24(256UL, 16, EE_BSEL_8BIT_ADDR)</span>
<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC04 _EE24(512UL, 16, EE_BSEL_8BIT_ADDR)</span>
<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC08 _EE24(1024UL, 16, EE_BSEL_8BIT_ADDR)</span>
<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC16 _EE24(2048UL, 16, EE_BSEL_8BIT_ADDR)</span>
<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC32 _EE24(4096UL, 32, EE_BSEL_NONE)</span>
<a name="l00053"></a>00053 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC64 _EE24(8192UL, 32, EE_BSEL_NONE)</span>
<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC128 _EE24(16384UL, 32, EE_BSEL_NONE)</span>
<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC256 _EE24(32768UL, 64, EE_BSEL_NONE)</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC512 _EE24(65536UL, 128, EE_BSEL_NONE)</span>
<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC1025 _EE24(131072UL, 128, EE_BSEL_17BIT_ADDR_ALT)</span>
<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC1026 _EE24(131072UL, 128, EE_BSEL_17BIT_ADDR)</span>
<a name="l00059"></a>00059 <span class="preprocessor"></span>
<a name="l00060"></a><a class="code" href="classEEPROM24.html">00060</a> <span class="keyword">class </span><a class="code" href="classEEPROM24.html" title="Reading and writing EEPROM&#39;s from the 24LCXX family.">EEPROM24</a>
<a name="l00061"></a>00061 {
<a name="l00062"></a>00062 <span class="keyword">public</span>:
<a name="l00063"></a>00063 <a class="code" href="classEEPROM24.html#ae8547f6ff7711496e1959ee24a142995" title="Constructs a new EEPROM access object on bus for an EEPROM of the specified type.">EEPROM24</a>(<a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> &amp;bus, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> type, uint8_t bank = 0);
<a name="l00064"></a>00064
<a name="l00065"></a><a class="code" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c">00065</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c" title="Returns the size of the EEPROM in bytes.">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _size; }
<a name="l00066"></a><a class="code" href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a">00066</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a" title="Returns the size of a single EEPROM page in bytes.">pageSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _pageSize; }
<a name="l00067"></a>00067
<a name="l00068"></a>00068 <span class="keywordtype">bool</span> <a class="code" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf" title="Returns true if the EEPROM is available on the I2C bus; false otherwise.">available</a>();
<a name="l00069"></a>00069
<a name="l00070"></a>00070 uint8_t <a class="code" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">read</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address);
<a name="l00071"></a>00071 <span class="keywordtype">size_t</span> <a class="code" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">read</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address, <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> length);
<a name="l00072"></a>00072
<a name="l00073"></a>00073 <span class="keywordtype">bool</span> <a class="code" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">write</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address, uint8_t value);
<a name="l00074"></a>00074 <span class="keywordtype">size_t</span> <a class="code" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">write</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address, <span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> length);
<a name="l00075"></a>00075
<a name="l00076"></a>00076 <span class="keyword">private</span>:
<a name="l00077"></a>00077 <a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> *_bus;
<a name="l00078"></a>00078 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _size;
<a name="l00079"></a>00079 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _pageSize;
<a name="l00080"></a>00080 uint8_t _mode;
<a name="l00081"></a>00081 uint8_t i2cAddress;
<a name="l00082"></a>00082
<a name="l00083"></a>00083 <span class="keywordtype">void</span> writeAddress(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address);
<a name="l00084"></a>00084 <span class="keywordtype">bool</span> waitForWrite();
<a name="l00085"></a>00085 };
<a name="l00086"></a>00086
<a name="l00087"></a>00087 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -163,8 +77,109 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_f9b96888882c2691b8eeaeafd1b9501d.html">I2C</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">EEPROM24.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef EEPROM24_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM24_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;stddef.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">class </span><a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a>;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">// Block select modes.</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#define EE_BSEL_NONE 0</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EE_BSEL_8BIT_ADDR 1</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EE_BSEL_17BIT_ADDR 2</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EE_BSEL_17BIT_ADDR_ALT 3</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// Create an EEPROM descriptor from byte size, page size, and block select mode.</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#define _EE24(byteSize, pageSize, mode) \</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor"> (((byteSize) / (pageSize)) | (((unsigned long)(pageSize)) &lt;&lt; 16) | \</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor"> (((unsigned long)(mode)) &lt;&lt; 28))</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">// Type descriptors for the 24LCXX range of EEPROM&#39;s.</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#define EEPROM_24LC00 _EE24(16UL, 1, EE_BSEL_8BIT_ADDR)</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC01 _EE24(128UL, 8, EE_BSEL_8BIT_ADDR)</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC014 _EE24(128UL, 16, EE_BSEL_8BIT_ADDR)</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC02 _EE24(256UL, 8, EE_BSEL_8BIT_ADDR)</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC024 _EE24(256UL, 16, EE_BSEL_8BIT_ADDR)</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC025 _EE24(256UL, 16, EE_BSEL_8BIT_ADDR)</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC04 _EE24(512UL, 16, EE_BSEL_8BIT_ADDR)</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC08 _EE24(1024UL, 16, EE_BSEL_8BIT_ADDR)</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC16 _EE24(2048UL, 16, EE_BSEL_8BIT_ADDR)</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC32 _EE24(4096UL, 32, EE_BSEL_NONE)</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC64 _EE24(8192UL, 32, EE_BSEL_NONE)</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC128 _EE24(16384UL, 32, EE_BSEL_NONE)</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC256 _EE24(32768UL, 64, EE_BSEL_NONE)</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC512 _EE24(65536UL, 128, EE_BSEL_NONE)</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC1025 _EE24(131072UL, 128, EE_BSEL_17BIT_ADDR_ALT)</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EEPROM_24LC1026 _EE24(131072UL, 128, EE_BSEL_17BIT_ADDR)</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="classEEPROM24.html"> 60</a></span>&#160;<span class="keyword">class </span><a class="code" href="classEEPROM24.html" title="Reading and writing EEPROM&#39;s from the 24LCXX family.">EEPROM24</a></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="keyword">public</span>:</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="classEEPROM24.html#ae8547f6ff7711496e1959ee24a142995" title="Constructs a new EEPROM access object on bus for an EEPROM of the specified type.">EEPROM24</a>(<a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> &amp;bus, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> type, uint8_t bank = 0);</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="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c"> 65</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c" title="Returns the size of the EEPROM in bytes.">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _size; }</div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a"> 66</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a" title="Returns the size of a single EEPROM page in bytes.">pageSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _pageSize; }</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf" title="Returns true if the EEPROM is available on the I2C bus; false otherwise.">available</a>();</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; uint8_t <a class="code" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">read</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address);</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">read</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address, <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> length);</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"> 73</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">write</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address, uint8_t value);</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">write</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address, <span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> length);</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="keyword">private</span>:</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> *_bus;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _size;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _pageSize;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; uint8_t _mode;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; uint8_t i2cAddress;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">void</span> writeAddress(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> address);</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">bool</span> waitForWrite();</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"> 86</span>&#160;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Field.cpp Source File</title> <title>ArduinoLibs: Field.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,109 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">Field.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;Field.h&quot;</span>
<a name="l00024"></a>00024
<a name="l00040"></a><a class="code" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">00040</a> <a class="code" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e" title="Constructs a new field with a specific label.">Field::Field</a>(<span class="keyword">const</span> String &amp;label)
<a name="l00041"></a>00041 : _label(label)
<a name="l00042"></a>00042 , _form(0)
<a name="l00043"></a>00043 , next(0)
<a name="l00044"></a>00044 , prev(0)
<a name="l00045"></a>00045 {
<a name="l00046"></a>00046 }
<a name="l00047"></a>00047
<a name="l00052"></a><a class="code" href="classField.html#a7e2bdb203ddfd9219696f263c1731fe7">00052</a> <a class="code" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e" title="Constructs a new field with a specific label.">Field::Field</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label)
<a name="l00053"></a>00053 : _label(label)
<a name="l00054"></a>00054 , _form(0)
<a name="l00055"></a>00055 , next(0)
<a name="l00056"></a>00056 , prev(0)
<a name="l00057"></a>00057 {
<a name="l00058"></a>00058 form.<a class="code" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">addField</a>(<span class="keyword">this</span>);
<a name="l00059"></a>00059 }
<a name="l00060"></a>00060
<a name="l00066"></a><a class="code" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60">00066</a> <a class="code" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60" title="Destroys this field and removes it from its owning Form.">Field::~Field</a>()
<a name="l00067"></a>00067 {
<a name="l00068"></a>00068 <span class="keywordflow">if</span> (_form)
<a name="l00069"></a>00069 _form-&gt;<a class="code" href="classForm.html#a7abd717029f9b19ee7318470072cd697" title="Removes field from this form.">removeField</a>(<span class="keyword">this</span>);
<a name="l00070"></a>00070 }
<a name="l00071"></a>00071
<a name="l00096"></a><a class="code" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3">00096</a> <span class="keywordtype">int</span> <a class="code" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3" title="Dispatches event via this field.">Field::dispatch</a>(<span class="keywordtype">int</span> event)
<a name="l00097"></a>00097 {
<a name="l00098"></a>00098 <span class="comment">// Nothing to do here.</span>
<a name="l00099"></a>00099 <span class="keywordflow">return</span> -1;
<a name="l00100"></a>00100 }
<a name="l00101"></a>00101
<a name="l00116"></a><a class="code" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">00116</a> <span class="keywordtype">void</span> <a class="code" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5" title="Enters the field due to form navigation.">Field::enterField</a>(<span class="keywordtype">bool</span> reverse)
<a name="l00117"></a>00117 {
<a name="l00118"></a>00118 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;print(_label);
<a name="l00119"></a>00119 }
<a name="l00120"></a>00120
<a name="l00129"></a><a class="code" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">00129</a> <span class="keywordtype">void</span> <a class="code" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07" title="Exits the field due to form navigation.">Field::exitField</a>()
<a name="l00130"></a>00130 {
<a name="l00131"></a>00131 <span class="comment">// Nothing to do here.</span>
<a name="l00132"></a>00132 }
<a name="l00133"></a>00133
<a name="l00146"></a><a class="code" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b">00146</a> <span class="keywordtype">void</span> <a class="code" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b" title="Sets the label to display in the first line of this field.">Field::setLabel</a>(<span class="keyword">const</span> String &amp;label)
<a name="l00147"></a>00147 {
<a name="l00148"></a>00148 <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>()) {
<a name="l00149"></a>00149 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> prevLen = _label.length();
<a name="l00150"></a>00150 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> newLen = label.length();
<a name="l00151"></a>00151 _label = <a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>;
<a name="l00152"></a>00152 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(0, 0);
<a name="l00153"></a>00153 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;print(label);
<a name="l00154"></a>00154 <span class="keywordflow">while</span> (newLen++ &lt; prevLen)
<a name="l00155"></a>00155 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39; &#39;</span>);
<a name="l00156"></a>00156 <a class="code" href="classField.html#afc612378167be0e7f8a6f8395b3537bd" title="Updates the cursor position after the label has been drawn by setLabel().">updateCursor</a>();
<a name="l00157"></a>00157 } <span class="keywordflow">else</span> {
<a name="l00158"></a>00158 _label = <a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>;
<a name="l00159"></a>00159 }
<a name="l00160"></a>00160 }
<a name="l00161"></a>00161
<a name="l00169"></a><a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72">00169</a> <span class="keywordtype">bool</span> <a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">Field::isCurrent</a>()<span class="keyword"> const</span>
<a name="l00170"></a>00170 <span class="keyword"></span>{
<a name="l00171"></a>00171 <span class="keywordflow">if</span> (!_form-&gt;<a class="code" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587" title="Returns true if the form is shown; false if the form is hidden.">isVisible</a>())
<a name="l00172"></a>00172 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00173"></a>00173 <span class="keywordflow">return</span> _form-&gt;<a class="code" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField</a>() == <span class="keyword">this</span>;
<a name="l00174"></a>00174 }
<a name="l00175"></a>00175
<a name="l00191"></a><a class="code" href="classField.html#afc612378167be0e7f8a6f8395b3537bd">00191</a> <span class="keywordtype">void</span> <a class="code" href="classField.html#afc612378167be0e7f8a6f8395b3537bd" title="Updates the cursor position after the label has been drawn by setLabel().">Field::updateCursor</a>()
<a name="l00192"></a>00192 {
<a name="l00193"></a>00193 <span class="comment">// Nothing to do here.</span>
<a name="l00194"></a>00194 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -166,8 +77,112 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Field.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;Field.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e"> 40</a></span>&#160;<a class="code" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e" title="Constructs a new field with a specific label.">Field::Field</a>(<span class="keyword">const</span> String &amp;label)</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; : _label(label)</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; , _form(0)</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; , next(0)</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; , prev(0)</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;}</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="classField.html#a7e2bdb203ddfd9219696f263c1731fe7"> 52</a></span>&#160;<a class="code" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e" title="Constructs a new field with a specific label.">Field::Field</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label)</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; : _label(label)</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; , _form(0)</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; , next(0)</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; , prev(0)</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; form.<a class="code" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">addField</a>(<span class="keyword">this</span>);</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"> 60</span>&#160;</div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60"> 66</a></span>&#160;<a class="code" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60" title="Destroys this field and removes it from its owning Form.">Field::~Field</a>()</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;{</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span> (_form)</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; _form-&gt;<a class="code" href="classForm.html#a7abd717029f9b19ee7318470072cd697" title="Removes field from this form.">removeField</a>(<span class="keyword">this</span>);</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div>
<div class="line"><a name="l00096"></a><span class="lineno"><a class="code" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3"> 96</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3" title="Dispatches event via this field.">Field::dispatch</a>(<span class="keywordtype">int</span> event)</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;{</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">// Nothing to do here.</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> -1;</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;</div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="code" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5"> 116</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5" title="Enters the field due to form navigation.">Field::enterField</a>(<span class="keywordtype">bool</span> reverse)</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; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;print(_label);</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;</div>
<div class="line"><a name="l00129"></a><span class="lineno"><a class="code" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07"> 129</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07" title="Exits the field due to form navigation.">Field::exitField</a>()</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;{</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">// Nothing to do here.</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div>
<div class="line"><a name="l00146"></a><span class="lineno"><a class="code" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b"> 146</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b" title="Sets the label to display in the first line of this field.">Field::setLabel</a>(<span class="keyword">const</span> String &amp;label)</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; <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>()) {</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> prevLen = _label.length();</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> newLen = label.length();</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; _label = <a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(0, 0);</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;print(label);</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">while</span> (newLen++ &lt; prevLen)</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39; &#39;</span>);</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classField.html#afc612378167be0e7f8a6f8395b3537bd" title="Updates the cursor position after the label has been drawn by setLabel().">updateCursor</a>();</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; _label = <a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</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="l00169"></a><span class="lineno"><a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72"> 169</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">Field::isCurrent</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (!_form-&gt;<a class="code" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587" title="Returns true if the form is shown; false if the form is hidden.">isVisible</a>())</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> _form-&gt;<a class="code" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField</a>() == <span class="keyword">this</span>;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;}</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div>
<div class="line"><a name="l00191"></a><span class="lineno"><a class="code" href="classField.html#afc612378167be0e7f8a6f8395b3537bd"> 191</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classField.html#afc612378167be0e7f8a6f8395b3537bd" title="Updates the cursor position after the label has been drawn by setLabel().">Field::updateCursor</a>()</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; <span class="comment">// Nothing to do here.</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Field.h Source File</title> <title>ArduinoLibs: Field.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,79 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">Field.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef Field_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define Field_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;Form.h&quot;</span>
<a name="l00027"></a>00027
<a name="l00028"></a><a class="code" href="classField.html">00028</a> <span class="keyword">class </span><a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> {
<a name="l00029"></a>00029 <span class="keyword">public</span>:
<a name="l00030"></a>00030 <span class="keyword">explicit</span> <a class="code" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e" title="Constructs a new field with a specific label.">Field</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>);
<a name="l00031"></a>00031 <a class="code" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e" title="Constructs a new field with a specific label.">Field</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5" title="Returns the Form that owns this field; null if not associated with a Form.">form</a>, <span class="keyword">const</span> String &amp;label);
<a name="l00032"></a>00032 <a class="code" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60" title="Destroys this field and removes it from its owning Form.">~Field</a>();
<a name="l00033"></a>00033
<a name="l00034"></a><a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5">00034</a> <a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> *<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5" title="Returns the Form that owns this field; null if not associated with a Form.">form</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _form; }
<a name="l00035"></a>00035
<a name="l00036"></a>00036 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3" title="Dispatches event via this field.">dispatch</a>(<span class="keywordtype">int</span> event);
<a name="l00037"></a>00037
<a name="l00038"></a>00038 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5" title="Enters the field due to form navigation.">enterField</a>(<span class="keywordtype">bool</span> reverse);
<a name="l00039"></a>00039 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07" title="Exits the field due to form navigation.">exitField</a>();
<a name="l00040"></a>00040
<a name="l00041"></a><a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe">00041</a> <span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _label; }
<a name="l00042"></a>00042 <span class="keywordtype">void</span> <a class="code" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b" title="Sets the label to display in the first line of this field.">setLabel</a>(<span class="keyword">const</span> String &amp;label);
<a name="l00043"></a>00043
<a name="l00044"></a>00044 <span class="keywordtype">bool</span> <a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>() <span class="keyword">const</span>;
<a name="l00045"></a>00045
<a name="l00046"></a>00046 <span class="keyword">protected</span>:
<a name="l00047"></a><a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">00047</a> LiquidCrystal *<a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _form-&gt;_lcd; }
<a name="l00048"></a>00048
<a name="l00049"></a>00049 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classField.html#afc612378167be0e7f8a6f8395b3537bd" title="Updates the cursor position after the label has been drawn by setLabel().">updateCursor</a>();
<a name="l00050"></a>00050
<a name="l00051"></a>00051 <span class="keyword">private</span>:
<a name="l00052"></a>00052 String _label;
<a name="l00053"></a>00053 <a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> *_form;
<a name="l00054"></a>00054 <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *next;
<a name="l00055"></a>00055 <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *prev;
<a name="l00056"></a>00056
<a name="l00057"></a>00057 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>;
<a name="l00058"></a>00058 };
<a name="l00059"></a>00059
<a name="l00060"></a>00060 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -136,8 +77,82 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Field.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef Field_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define Field_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;Form.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="classField.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> {</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e" title="Constructs a new field with a specific label.">Field</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e" title="Constructs a new field with a specific label.">Field</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5" title="Returns the Form that owns this field; null if not associated with a Form.">form</a>, <span class="keyword">const</span> String &amp;label);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60" title="Destroys this field and removes it from its owning Form.">~Field</a>();</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5"> 34</a></span>&#160; <a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> *<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5" title="Returns the Form that owns this field; null if not associated with a Form.">form</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _form; }</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3" title="Dispatches event via this field.">dispatch</a>(<span class="keywordtype">int</span> event);</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5" title="Enters the field due to form navigation.">enterField</a>(<span class="keywordtype">bool</span> reverse);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07" title="Exits the field due to form navigation.">exitField</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"><a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe"> 41</a></span>&#160; <span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _label; }</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b" title="Sets the label to display in the first line of this field.">setLabel</a>(<span class="keyword">const</span> String &amp;label);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>() <span class="keyword">const</span>;</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="keyword">protected</span>:</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1"> 47</a></span>&#160; LiquidCrystal *<a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _form-&gt;_lcd; }</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classField.html#afc612378167be0e7f8a6f8395b3537bd" title="Updates the cursor position after the label has been drawn by setLabel().">updateCursor</a>();</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; String _label;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> *_form;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *next;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *prev;</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="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>;</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"> 60</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Form.cpp Source File</title> <title>ArduinoLibs: Form.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,191 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">Form.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;Form.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &quot;Field.h&quot;</span>
<a name="l00025"></a>00025
<a name="l00047"></a><a class="code" href="classForm.html#ad30836b22edde707a52d94090b716996">00047</a> <a class="code" href="classForm.html#ad30836b22edde707a52d94090b716996" title="Constructs a new form and associates it with lcd.">Form::Form</a>(LiquidCrystal &amp;lcd)
<a name="l00048"></a>00048 : _lcd(&amp;lcd)
<a name="l00049"></a>00049 , first(0)
<a name="l00050"></a>00050 , last(0)
<a name="l00051"></a>00051 , current(0)
<a name="l00052"></a>00052 {
<a name="l00053"></a>00053 }
<a name="l00054"></a>00054
<a name="l00058"></a><a class="code" href="classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f">00058</a> <a class="code" href="classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f" title="Detaches all remaining fields and destroys this form.">Form::~Form</a>()
<a name="l00059"></a>00059 {
<a name="l00060"></a>00060 <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field = first;
<a name="l00061"></a>00061 <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *next;
<a name="l00062"></a>00062 <span class="keywordflow">while</span> (field != 0) {
<a name="l00063"></a>00063 next = field-&gt;next;
<a name="l00064"></a>00064 field-&gt;_form = 0;
<a name="l00065"></a>00065 field-&gt;next = 0;
<a name="l00066"></a>00066 field-&gt;prev = 0;
<a name="l00067"></a>00067 field = next;
<a name="l00068"></a>00068 }
<a name="l00069"></a>00069 }
<a name="l00070"></a>00070
<a name="l00099"></a><a class="code" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee">00099</a> <span class="keywordtype">int</span> <a class="code" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee" title="Dispatches event to the currently active field using Field::dispatch().">Form::dispatch</a>(<span class="keywordtype">int</span> event)
<a name="l00100"></a>00100 {
<a name="l00101"></a>00101 <span class="keywordflow">if</span> (current) {
<a name="l00102"></a>00102 <span class="keywordtype">int</span> exitval = current-&gt;<a class="code" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3" title="Dispatches event via this field.">dispatch</a>(event);
<a name="l00103"></a>00103 <span class="keywordflow">if</span> (exitval &gt;= 0)
<a name="l00104"></a>00104 <span class="keywordflow">return</span> exitval;
<a name="l00105"></a>00105 }
<a name="l00106"></a>00106 <span class="keywordflow">if</span> (event == LCD_BUTTON_LEFT)
<a name="l00107"></a>00107 <a class="code" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90" title="Changes to the previous field in the &quot;tab order&quot;.">prevField</a>();
<a name="l00108"></a>00108 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == LCD_BUTTON_RIGHT)
<a name="l00109"></a>00109 <a class="code" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1" title="Changes to the next field in the &quot;tab order&quot;.">nextField</a>();
<a name="l00110"></a>00110 <span class="keywordflow">return</span> 0;
<a name="l00111"></a>00111 }
<a name="l00112"></a>00112
<a name="l00118"></a><a class="code" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1">00118</a> <span class="keywordtype">void</span> <a class="code" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1" title="Changes to the next field in the &quot;tab order&quot;.">Form::nextField</a>()
<a name="l00119"></a>00119 {
<a name="l00120"></a>00120 <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field = current;
<a name="l00121"></a>00121 <span class="keywordflow">if</span> (!field)
<a name="l00122"></a>00122 field = first;
<a name="l00123"></a>00123 <span class="keywordflow">if</span> (field &amp;&amp; field-&gt;next)
<a name="l00124"></a>00124 field = field-&gt;next;
<a name="l00125"></a>00125 <span class="keywordflow">else</span>
<a name="l00126"></a>00126 field = first;
<a name="l00127"></a>00127 <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField</a>(field);
<a name="l00128"></a>00128 }
<a name="l00129"></a>00129
<a name="l00135"></a><a class="code" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90">00135</a> <span class="keywordtype">void</span> <a class="code" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90" title="Changes to the previous field in the &quot;tab order&quot;.">Form::prevField</a>()
<a name="l00136"></a>00136 {
<a name="l00137"></a>00137 <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field = current;
<a name="l00138"></a>00138 <span class="keywordflow">if</span> (!field)
<a name="l00139"></a>00139 field = last;
<a name="l00140"></a>00140 <span class="keywordflow">if</span> (field &amp;&amp; field-&gt;prev)
<a name="l00141"></a>00141 field = field-&gt;prev;
<a name="l00142"></a>00142 <span class="keywordflow">else</span>
<a name="l00143"></a>00143 field = last;
<a name="l00144"></a>00144 <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField</a>(field);
<a name="l00145"></a>00145 }
<a name="l00146"></a>00146
<a name="l00152"></a><a class="code" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b">00152</a> <span class="keywordtype">void</span> <a class="code" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b" title="Changes to default field (i.e., the first field).">Form::defaultField</a>()
<a name="l00153"></a>00153 {
<a name="l00154"></a>00154 <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField</a>(first);
<a name="l00155"></a>00155 }
<a name="l00156"></a>00156
<a name="l00165"></a><a class="code" href="classForm.html#a5cb056ace428e75e321610555bfecac7">00165</a> <span class="keywordtype">void</span> <a class="code" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">Form::addField</a>(<a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field)
<a name="l00166"></a>00166 {
<a name="l00167"></a>00167 <span class="keywordflow">if</span> (field-&gt;_form)
<a name="l00168"></a>00168 <span class="keywordflow">return</span>; <span class="comment">// Already added to a form.</span>
<a name="l00169"></a>00169 field-&gt;_form = <span class="keyword">this</span>;
<a name="l00170"></a>00170 field-&gt;next = 0;
<a name="l00171"></a>00171 field-&gt;prev = last;
<a name="l00172"></a>00172 <span class="keywordflow">if</span> (last)
<a name="l00173"></a>00173 last-&gt;next = field;
<a name="l00174"></a>00174 <span class="keywordflow">else</span>
<a name="l00175"></a>00175 first = field;
<a name="l00176"></a>00176 last = field;
<a name="l00177"></a>00177 }
<a name="l00178"></a>00178
<a name="l00187"></a><a class="code" href="classForm.html#a7abd717029f9b19ee7318470072cd697">00187</a> <span class="keywordtype">void</span> <a class="code" href="classForm.html#a7abd717029f9b19ee7318470072cd697" title="Removes field from this form.">Form::removeField</a>(<a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field)
<a name="l00188"></a>00188 {
<a name="l00189"></a>00189 <span class="keywordflow">if</span> (field-&gt;_form != <span class="keyword">this</span>)
<a name="l00190"></a>00190 <span class="keywordflow">return</span>; <span class="comment">// Not a member of this form.</span>
<a name="l00191"></a>00191 <span class="keywordflow">if</span> (current == field) {
<a name="l00192"></a>00192 <span class="keywordflow">if</span> (field-&gt;next)
<a name="l00193"></a>00193 <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField</a>(field-&gt;next);
<a name="l00194"></a>00194 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (field-&gt;prev)
<a name="l00195"></a>00195 <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField</a>(field-&gt;prev);
<a name="l00196"></a>00196 <span class="keywordflow">else</span>
<a name="l00197"></a>00197 <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField</a>(0);
<a name="l00198"></a>00198 }
<a name="l00199"></a>00199 <span class="keywordflow">if</span> (field-&gt;next)
<a name="l00200"></a>00200 field-&gt;next-&gt;prev = field-&gt;prev;
<a name="l00201"></a>00201 <span class="keywordflow">else</span>
<a name="l00202"></a>00202 last = field-&gt;prev;
<a name="l00203"></a>00203 <span class="keywordflow">if</span> (field-&gt;prev)
<a name="l00204"></a>00204 field-&gt;prev-&gt;next = field-&gt;next;
<a name="l00205"></a>00205 <span class="keywordflow">else</span>
<a name="l00206"></a>00206 first = field-&gt;next;
<a name="l00207"></a>00207 field-&gt;_form = 0;
<a name="l00208"></a>00208 field-&gt;next = 0;
<a name="l00209"></a>00209 field-&gt;prev = 0;
<a name="l00210"></a>00210 }
<a name="l00211"></a>00211
<a name="l00230"></a><a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5">00230</a> <span class="keywordtype">void</span> <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">Form::setCurrentField</a>(<a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field)
<a name="l00231"></a>00231 {
<a name="l00232"></a>00232 <span class="keywordflow">if</span> (field &amp;&amp; field-&gt;_form != <span class="keyword">this</span>)
<a name="l00233"></a>00233 <span class="keywordflow">return</span>; <span class="comment">// Wrong form.</span>
<a name="l00234"></a>00234 <span class="keywordflow">if</span> (visible) {
<a name="l00235"></a>00235 <span class="keywordtype">bool</span> reverse = <span class="keyword">false</span>;
<a name="l00236"></a>00236 <span class="keywordflow">if</span> (current) {
<a name="l00237"></a>00237 current-&gt;<a class="code" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07" title="Exits the field due to form navigation.">exitField</a>();
<a name="l00238"></a>00238 <span class="keywordflow">if</span> (field-&gt;next == current)
<a name="l00239"></a>00239 reverse = <span class="keyword">true</span>;
<a name="l00240"></a>00240 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!field-&gt;next &amp;&amp; current == first)
<a name="l00241"></a>00241 reverse = <span class="keyword">true</span>;
<a name="l00242"></a>00242 }
<a name="l00243"></a>00243 current = field;
<a name="l00244"></a>00244 _lcd-&gt;clear();
<a name="l00245"></a>00245 <span class="keywordflow">if</span> (current)
<a name="l00246"></a>00246 current-&gt;<a class="code" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5" title="Enters the field due to form navigation.">enterField</a>(reverse);
<a name="l00247"></a>00247 } <span class="keywordflow">else</span> {
<a name="l00248"></a>00248 current = field;
<a name="l00249"></a>00249 }
<a name="l00250"></a>00250 }
<a name="l00251"></a>00251
<a name="l00274"></a><a class="code" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65">00274</a> <span class="keywordtype">void</span> <a class="code" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65" title="Shows the form, or does nothing if the form is already on-screen.">Form::show</a>()
<a name="l00275"></a>00275 {
<a name="l00276"></a>00276 <span class="keywordflow">if</span> (!visible) {
<a name="l00277"></a>00277 <span class="keywordflow">if</span> (!current)
<a name="l00278"></a>00278 current = first;
<a name="l00279"></a>00279 visible = <span class="keyword">true</span>;
<a name="l00280"></a>00280 _lcd-&gt;clear();
<a name="l00281"></a>00281 <span class="keywordflow">if</span> (current)
<a name="l00282"></a>00282 current-&gt;<a class="code" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5" title="Enters the field due to form navigation.">enterField</a>(<span class="keyword">false</span>);
<a name="l00283"></a>00283 }
<a name="l00284"></a>00284 }
<a name="l00285"></a>00285
<a name="l00293"></a><a class="code" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9">00293</a> <span class="keywordtype">void</span> <a class="code" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9" title="Hides the form, or does nothing if the form is not on-screen.">Form::hide</a>()
<a name="l00294"></a>00294 {
<a name="l00295"></a>00295 <span class="keywordflow">if</span> (visible) {
<a name="l00296"></a>00296 <span class="keywordflow">if</span> (current)
<a name="l00297"></a>00297 current-&gt;<a class="code" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07" title="Exits the field due to form navigation.">exitField</a>();
<a name="l00298"></a>00298 visible = <span class="keyword">false</span>;
<a name="l00299"></a>00299 _lcd-&gt;clear();
<a name="l00300"></a>00300 }
<a name="l00301"></a>00301 }
<a name="l00302"></a>00302
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -248,8 +77,194 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Form.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;Form.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;Field.h&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="classForm.html#ad30836b22edde707a52d94090b716996"> 47</a></span>&#160;<a class="code" href="classForm.html#ad30836b22edde707a52d94090b716996" title="Constructs a new form and associates it with lcd.">Form::Form</a>(LiquidCrystal &amp;lcd)</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; : _lcd(&amp;lcd)</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; , first(0)</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; , last(0)</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; , current(0)</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="code" href="classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f"> 58</a></span>&#160;<a class="code" href="classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f" title="Detaches all remaining fields and destroys this form.">Form::~Form</a>()</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"> 60</span>&#160; <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field = first;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *next;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">while</span> (field != 0) {</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; next = field-&gt;next;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; field-&gt;_form = 0;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; field-&gt;next = 0;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; field-&gt;prev = 0;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; field = next;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</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;</div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee"> 99</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee" title="Dispatches event to the currently active field using Field::dispatch().">Form::dispatch</a>(<span class="keywordtype">int</span> event)</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="keywordflow">if</span> (current) {</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">int</span> exitval = current-&gt;<a class="code" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3" title="Dispatches event via this field.">dispatch</a>(event);</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span> (exitval &gt;= 0)</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> exitval;</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; <span class="keywordflow">if</span> (event == LCD_BUTTON_LEFT)</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90" title="Changes to the previous field in the &quot;tab order&quot;.">prevField</a>();</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == LCD_BUTTON_RIGHT)</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1" title="Changes to the next field in the &quot;tab order&quot;.">nextField</a>();</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
<div class="line"><a name="l00118"></a><span class="lineno"><a class="code" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1"> 118</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1" title="Changes to the next field in the &quot;tab order&quot;.">Form::nextField</a>()</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; <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field = current;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (!field)</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; field = first;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (field &amp;&amp; field-&gt;next)</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; field = field-&gt;next;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; field = first;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField</a>(field);</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="l00135"></a><span class="lineno"><a class="code" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90"> 135</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90" title="Changes to the previous field in the &quot;tab order&quot;.">Form::prevField</a>()</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;{</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field = current;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">if</span> (!field)</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; field = last;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> (field &amp;&amp; field-&gt;prev)</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; field = field-&gt;prev;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; field = last;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField</a>(field);</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;</div>
<div class="line"><a name="l00152"></a><span class="lineno"><a class="code" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b"> 152</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b" title="Changes to default field (i.e., the first field).">Form::defaultField</a>()</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; <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField</a>(first);</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;}</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
<div class="line"><a name="l00165"></a><span class="lineno"><a class="code" href="classForm.html#a5cb056ace428e75e321610555bfecac7"> 165</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">Form::addField</a>(<a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field)</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; <span class="keywordflow">if</span> (field-&gt;_form)</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// Already added to a form.</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; field-&gt;_form = <span class="keyword">this</span>;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; field-&gt;next = 0;</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; field-&gt;prev = last;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span> (last)</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; last-&gt;next = field;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; first = field;</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; last = field;</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="l00187"></a><span class="lineno"><a class="code" href="classForm.html#a7abd717029f9b19ee7318470072cd697"> 187</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#a7abd717029f9b19ee7318470072cd697" title="Removes field from this form.">Form::removeField</a>(<a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field)</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;{</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span> (field-&gt;_form != <span class="keyword">this</span>)</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// Not a member of this form.</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">if</span> (current == field) {</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> (field-&gt;next)</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField</a>(field-&gt;next);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (field-&gt;prev)</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField</a>(field-&gt;prev);</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField</a>(0);</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span> (field-&gt;next)</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; field-&gt;next-&gt;prev = field-&gt;prev;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; last = field-&gt;prev;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span> (field-&gt;prev)</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; field-&gt;prev-&gt;next = field-&gt;next;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; first = field-&gt;next;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; field-&gt;_form = 0;</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; field-&gt;next = 0;</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; field-&gt;prev = 0;</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;}</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div>
<div class="line"><a name="l00230"></a><span class="lineno"><a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5"> 230</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">Form::setCurrentField</a>(<a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field)</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; <span class="keywordflow">if</span> (field &amp;&amp; field-&gt;_form != <span class="keyword">this</span>)</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// Wrong form.</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span> (visible) {</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordtype">bool</span> reverse = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (current) {</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; current-&gt;<a class="code" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07" title="Exits the field due to form navigation.">exitField</a>();</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (field-&gt;next == current)</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; reverse = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!field-&gt;next &amp;&amp; current == first)</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; reverse = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; current = field;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; _lcd-&gt;clear();</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">if</span> (current)</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; current-&gt;<a class="code" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5" title="Enters the field due to form navigation.">enterField</a>(reverse);</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; current = field;</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;}</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div>
<div class="line"><a name="l00274"></a><span class="lineno"><a class="code" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65"> 274</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65" title="Shows the form, or does nothing if the form is already on-screen.">Form::show</a>()</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;{</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">if</span> (!visible) {</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">if</span> (!current)</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; current = first;</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; visible = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; _lcd-&gt;clear();</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">if</span> (current)</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; current-&gt;<a class="code" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5" title="Enters the field due to form navigation.">enterField</a>(<span class="keyword">false</span>);</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</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;</div>
<div class="line"><a name="l00293"></a><span class="lineno"><a class="code" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9"> 293</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9" title="Hides the form, or does nothing if the form is not on-screen.">Form::hide</a>()</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="keywordflow">if</span> (visible) {</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span> (current)</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; current-&gt;<a class="code" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07" title="Exits the field due to form navigation.">exitField</a>();</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; visible = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; _lcd-&gt;clear();</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;}</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Form.h Source File</title> <title>ArduinoLibs: Form.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,84 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">Form.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef Form_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define Form_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;LCD.h&quot;</span>
<a name="l00027"></a>00027
<a name="l00028"></a>00028 <span class="keyword">class </span><a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>;
<a name="l00029"></a>00029
<a name="l00030"></a>00030 <span class="preprocessor">#define FORM_CHANGED 1</span>
<a name="l00031"></a>00031 <span class="preprocessor"></span>
<a name="l00032"></a><a class="code" href="classForm.html">00032</a> <span class="keyword">class </span><a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> {
<a name="l00033"></a>00033 <span class="keyword">public</span>:
<a name="l00034"></a>00034 <span class="keyword">explicit</span> <a class="code" href="classForm.html#ad30836b22edde707a52d94090b716996" title="Constructs a new form and associates it with lcd.">Form</a>(LiquidCrystal &amp;lcd);
<a name="l00035"></a>00035 <a class="code" href="classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f" title="Detaches all remaining fields and destroys this form.">~Form</a>();
<a name="l00036"></a>00036
<a name="l00037"></a>00037 <span class="keywordtype">int</span> <a class="code" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee" title="Dispatches event to the currently active field using Field::dispatch().">dispatch</a>(<span class="keywordtype">int</span> event);
<a name="l00038"></a>00038
<a name="l00039"></a>00039 <span class="keywordtype">void</span> <a class="code" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1" title="Changes to the next field in the &quot;tab order&quot;.">nextField</a>();
<a name="l00040"></a>00040 <span class="keywordtype">void</span> <a class="code" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90" title="Changes to the previous field in the &quot;tab order&quot;.">prevField</a>();
<a name="l00041"></a>00041 <span class="keywordtype">void</span> <a class="code" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b" title="Changes to default field (i.e., the first field).">defaultField</a>();
<a name="l00042"></a>00042
<a name="l00043"></a>00043 <span class="keywordtype">void</span> <a class="code" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">addField</a>(<a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field);
<a name="l00044"></a>00044 <span class="keywordtype">void</span> <a class="code" href="classForm.html#a7abd717029f9b19ee7318470072cd697" title="Removes field from this form.">removeField</a>(<a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field);
<a name="l00045"></a>00045
<a name="l00046"></a><a class="code" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8">00046</a> <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *<a class="code" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> current; }
<a name="l00047"></a>00047 <span class="keywordtype">void</span> <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField</a>(<a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field);
<a name="l00048"></a>00048
<a name="l00049"></a><a class="code" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789">00049</a> <span class="keywordtype">bool</span> <a class="code" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789" title="Returns true if field is currently displayed on-screen, false otherwise.">isCurrent</a>(<a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> &amp;field)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> current == &amp;field; }
<a name="l00050"></a>00050
<a name="l00051"></a>00051 <span class="keywordtype">void</span> <a class="code" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65" title="Shows the form, or does nothing if the form is already on-screen.">show</a>();
<a name="l00052"></a>00052 <span class="keywordtype">void</span> <a class="code" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9" title="Hides the form, or does nothing if the form is not on-screen.">hide</a>();
<a name="l00053"></a><a class="code" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587">00053</a> <span class="keywordtype">bool</span> <a class="code" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587" title="Returns true if the form is shown; false if the form is hidden.">isVisible</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> visible; }
<a name="l00054"></a>00054
<a name="l00055"></a>00055 <span class="keyword">private</span>:
<a name="l00056"></a>00056 LiquidCrystal *_lcd;
<a name="l00057"></a>00057 <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *first;
<a name="l00058"></a>00058 <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *last;
<a name="l00059"></a>00059 <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *current;
<a name="l00060"></a>00060 <span class="keywordtype">bool</span> visible;
<a name="l00061"></a>00061
<a name="l00062"></a>00062 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>;
<a name="l00063"></a>00063 };
<a name="l00064"></a>00064
<a name="l00065"></a>00065 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -141,8 +77,87 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Form.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef Form_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define Form_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;LCD.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">class </span><a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#define FORM_CHANGED 1</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="classForm.html"> 32</a></span>&#160;<span class="keyword">class </span><a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> {</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classForm.html#ad30836b22edde707a52d94090b716996" title="Constructs a new form and associates it with lcd.">Form</a>(LiquidCrystal &amp;lcd);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f" title="Detaches all remaining fields and destroys this form.">~Form</a>();</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="keywordtype">int</span> <a class="code" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee" title="Dispatches event to the currently active field using Field::dispatch().">dispatch</a>(<span class="keywordtype">int</span> event);</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1" title="Changes to the next field in the &quot;tab order&quot;.">nextField</a>();</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90" title="Changes to the previous field in the &quot;tab order&quot;.">prevField</a>();</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b" title="Changes to default field (i.e., the first field).">defaultField</a>();</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">addField</a>(<a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classForm.html#a7abd717029f9b19ee7318470072cd697" title="Removes field from this form.">removeField</a>(<a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field);</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"><a class="code" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8"> 46</a></span>&#160; <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *<a class="code" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> current; }</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField</a>(<a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *field);</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789"> 49</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789" title="Returns true if field is currently displayed on-screen, false otherwise.">isCurrent</a>(<a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> &amp;field)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> current == &amp;field; }</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65" title="Shows the form, or does nothing if the form is already on-screen.">show</a>();</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9" title="Hides the form, or does nothing if the form is not on-screen.">hide</a>();</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587"> 53</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587" title="Returns true if the form is shown; false if the form is hidden.">isVisible</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> visible; }</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; LiquidCrystal *_lcd;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *first;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *last;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> *current;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">bool</span> visible;</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="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>;</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"> 65</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: I2CMaster.cpp Source File</title> <title>ArduinoLibs: I2CMaster.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,43 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">I2CMaster.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;I2CMaster.h&quot;</span>
<a name="l00024"></a>00024
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -100,8 +77,46 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_f9b96888882c2691b8eeaeafd1b9501d.html">I2C</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">I2CMaster.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;I2CMaster.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: I2CMaster.h Source File</title> <title>ArduinoLibs: I2CMaster.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,60 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">I2CMaster.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef I2CMaster_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define I2CMaster_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
<a name="l00027"></a>00027
<a name="l00028"></a><a class="code" href="classI2CMaster.html">00028</a> <span class="keyword">class </span><a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> {
<a name="l00029"></a>00029 <span class="keyword">public</span>:
<a name="l00030"></a>00030 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classI2CMaster.html#a3cd0cea8169ac4e6dd6f39fd6cfb1926" title="Returns the maximum number of bytes that can be read or written in a single request by this bus maste...">maxTransferSize</a>() <span class="keyword">const</span> = 0;
<a name="l00031"></a>00031
<a name="l00032"></a>00032 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> address);
<a name="l00033"></a>00033 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(uint8_t value) = 0;
<a name="l00034"></a>00034 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>() = 0;
<a name="l00035"></a>00035
<a name="l00036"></a>00036 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> address, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count) = 0;
<a name="l00037"></a>00037 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833" title="Returns the number of bytes that are still available for reading.">available</a>() = 0;
<a name="l00038"></a>00038 <span class="keyword">virtual</span> uint8_t <a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>() = 0;
<a name="l00039"></a>00039 };
<a name="l00040"></a>00040
<a name="l00041"></a>00041 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -117,8 +77,63 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:51 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_f9b96888882c2691b8eeaeafd1b9501d.html">I2C</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">I2CMaster.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef I2CMaster_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2CMaster_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="classI2CMaster.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> {</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classI2CMaster.html#a3cd0cea8169ac4e6dd6f39fd6cfb1926" title="Returns the maximum number of bytes that can be read or written in a single request by this bus maste...">maxTransferSize</a>() <span class="keyword">const</span> = 0;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> address);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write</a>(uint8_t value) = 0;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite</a>() = 0;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> address, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count) = 0;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833" title="Returns the number of bytes that are still available for reading.">available</a>() = 0;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">virtual</span> uint8_t <a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read</a>() = 0;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;};</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;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: IRreceiver.cpp Source File</title> <title>ArduinoLibs: IRreceiver.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,185 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">IRreceiver.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;IRreceiver.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#else</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#endif</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span>
<a name="l00159"></a>00159 <span class="keyword">static</span> <a class="code" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> *receiver = 0;
<a name="l00160"></a>00160
<a name="l00161"></a>00161 <span class="keywordtype">void</span> _IR_receive_interrupt(<span class="keywordtype">void</span>)
<a name="l00162"></a>00162 {
<a name="l00163"></a>00163 receiver-&gt;handleInterrupt();
<a name="l00164"></a>00164 }
<a name="l00165"></a>00165
<a name="l00176"></a><a class="code" href="classIRreceiver.html#a06eccb8b8311eac395e4b20c4e0163e3">00176</a> <a class="code" href="classIRreceiver.html#a06eccb8b8311eac395e4b20c4e0163e3" title="Constructs a new infrared remote control receiver that is attached to interruptNumber.">IRreceiver::IRreceiver</a>(<span class="keywordtype">int</span> interruptNumber)
<a name="l00177"></a>00177 : _system(0)
<a name="l00178"></a>00178 , _systemFilter(-1)
<a name="l00179"></a>00179 , started(false)
<a name="l00180"></a>00180 , halfChange(false)
<a name="l00181"></a>00181 , lastChange(0)
<a name="l00182"></a>00182 , bits(0)
<a name="l00183"></a>00183 , bitCount(0)
<a name="l00184"></a>00184 , buffer(0)
<a name="l00185"></a>00185 , lastBuffer(0)
<a name="l00186"></a>00186 {
<a name="l00187"></a>00187 <span class="keywordflow">switch</span> (interruptNumber) {
<a name="l00188"></a>00188 <span class="keywordflow">case</span> 0: <span class="keywordflow">default</span>: pin = 2; <span class="keywordflow">break</span>;
<a name="l00189"></a>00189 <span class="keywordflow">case</span> 1: pin = 3; <span class="keywordflow">break</span>;
<a name="l00190"></a>00190 <span class="keywordflow">case</span> 2: pin = 21; <span class="keywordflow">break</span>; <span class="comment">// Arduino Mega only</span>
<a name="l00191"></a>00191 <span class="keywordflow">case</span> 3: pin = 20; <span class="keywordflow">break</span>; <span class="comment">// Arduino Mega only</span>
<a name="l00192"></a>00192 <span class="keywordflow">case</span> 4: pin = 19; <span class="keywordflow">break</span>; <span class="comment">// Arduino Mega only</span>
<a name="l00193"></a>00193 <span class="keywordflow">case</span> 5: pin = 18; <span class="keywordflow">break</span>; <span class="comment">// Arduino Mega only</span>
<a name="l00194"></a>00194 }
<a name="l00195"></a>00195 receiver = <span class="keyword">this</span>;
<a name="l00196"></a>00196 attachInterrupt(interruptNumber, _IR_receive_interrupt, CHANGE);
<a name="l00197"></a>00197 }
<a name="l00198"></a>00198
<a name="l00220"></a><a class="code" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda">00220</a> <span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">IRreceiver::command</a>()
<a name="l00221"></a>00221 {
<a name="l00222"></a>00222 <span class="keywordtype">unsigned</span> buf;
<a name="l00223"></a>00223
<a name="l00224"></a>00224 <span class="comment">// Read the last-delivered sequence from the buffer and clear it.</span>
<a name="l00225"></a>00225 cli();
<a name="l00226"></a>00226 buf = buffer;
<a name="l00227"></a>00227 buffer = 0;
<a name="l00228"></a>00228 sei();
<a name="l00229"></a>00229
<a name="l00230"></a>00230 <span class="comment">// Bail out if no sequence or it is not for us.</span>
<a name="l00231"></a>00231 <span class="keywordflow">if</span> (!buf) {
<a name="l00232"></a>00232 _system = -1;
<a name="l00233"></a>00233 <span class="keywordflow">return</span> -1;
<a name="l00234"></a>00234 }
<a name="l00235"></a>00235 <span class="keywordflow">if</span> (_systemFilter != -1) {
<a name="l00236"></a>00236 <span class="keywordflow">if</span> (((buf &gt;&gt; 6) &amp; 0x1F) != _systemFilter) {
<a name="l00237"></a>00237 _system = -1;
<a name="l00238"></a>00238 <span class="keywordflow">return</span> -1;
<a name="l00239"></a>00239 }
<a name="l00240"></a>00240 }
<a name="l00241"></a>00241
<a name="l00242"></a>00242 <span class="comment">// Extract the command.</span>
<a name="l00243"></a>00243 <span class="keywordtype">int</span> cmd = buf &amp; 0x3F;
<a name="l00244"></a>00244 <span class="keywordflow">if</span> ((buf &amp; 0x1000) == 0)
<a name="l00245"></a>00245 cmd += 64;
<a name="l00246"></a>00246
<a name="l00247"></a>00247 <span class="comment">// Is this a new command or an auto-repeat of the previous command?</span>
<a name="l00248"></a>00248 <span class="comment">// Bit 11 will toggle whenever a new button press is started.</span>
<a name="l00249"></a>00249 <span class="keywordflow">if</span> (lastBuffer == buf)
<a name="l00250"></a>00250 cmd += <a class="code" href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9" title="Flag that is added to the output of command() when the command is an auto-repeated button press rathe...">AUTO_REPEAT</a>;
<a name="l00251"></a>00251 <span class="keywordflow">else</span>
<a name="l00252"></a>00252 lastBuffer = buf;
<a name="l00253"></a>00253 _system = (buf &gt;&gt; 6) &amp; 0x1F;
<a name="l00254"></a>00254 <span class="keywordflow">return</span> cmd;
<a name="l00255"></a>00255 }
<a name="l00256"></a>00256
<a name="l00304"></a>00304 <span class="comment">// Number of microseconds that the signal is HIGH or LOW for</span>
<a name="l00305"></a>00305 <span class="comment">// indicating a bit. A 1 bit is transmitted as LOW for 889us</span>
<a name="l00306"></a>00306 <span class="comment">// followed by HIGH for 889us. A 0 bit is HIGH, then LOW.</span>
<a name="l00307"></a>00307 <span class="preprocessor">#define IR_BIT_TIME 889</span>
<a name="l00308"></a>00308 <span class="preprocessor"></span>
<a name="l00309"></a>00309 <span class="comment">// Number of microseconds to detect a long gap in the coding</span>
<a name="l00310"></a>00310 <span class="comment">// corresponding to 2 time units HIGH or LOW. We actually check</span>
<a name="l00311"></a>00311 <span class="comment">// for at least 1.5 time units to allow for slight variations</span>
<a name="l00312"></a>00312 <span class="comment">// in timing on different remote controls.</span>
<a name="l00313"></a>00313 <span class="preprocessor">#define IR_LONG_BIT_TIME (889 * 6 / 4)</span>
<a name="l00314"></a>00314 <span class="preprocessor"></span>
<a name="l00315"></a>00315 <span class="comment">// Maximum timeout for a single bit. If we don&#39;t see a rising edge</span>
<a name="l00316"></a>00316 <span class="comment">// within this time, then we have lost sync and need to restart.</span>
<a name="l00317"></a>00317 <span class="preprocessor">#define IR_MAX_TIME (IR_BIT_TIME * 4)</span>
<a name="l00318"></a>00318 <span class="preprocessor"></span>
<a name="l00319"></a>00319 <span class="comment">// Protocol details from http://en.wikipedia.org/wiki/RC-5</span>
<a name="l00320"></a>00320 <span class="keywordtype">void</span> IRreceiver::handleInterrupt()
<a name="l00321"></a>00321 {
<a name="l00322"></a>00322 <span class="keywordtype">bool</span> value = digitalRead(pin);
<a name="l00323"></a>00323 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> currentTime = micros();
<a name="l00324"></a>00324 <span class="keywordflow">if</span> (!value) {
<a name="l00325"></a>00325 <span class="comment">// Rising edge (input is active-LOW)</span>
<a name="l00326"></a>00326 <span class="keywordflow">if</span> (started &amp;&amp; (currentTime - lastChange) &gt; IR_MAX_TIME) {
<a name="l00327"></a>00327 <span class="comment">// Too long since the last received bit, so restart the process.</span>
<a name="l00328"></a>00328 started = <span class="keyword">false</span>;
<a name="l00329"></a>00329 }
<a name="l00330"></a>00330 <span class="keywordflow">if</span> (started) {
<a name="l00331"></a>00331 <span class="comment">// We recognize bits on the falling edges, so merely</span>
<a name="l00332"></a>00332 <span class="comment">// adjust the &quot;changed at last half-cycle&quot; flag.</span>
<a name="l00333"></a>00333 <span class="keywordflow">if</span> ((currentTime - lastChange) &gt; IR_LONG_BIT_TIME) {
<a name="l00334"></a>00334 <span class="comment">// Long time since last falling edge indicates that the</span>
<a name="l00335"></a>00335 <span class="comment">// next bit will definitely be a 1.</span>
<a name="l00336"></a>00336 halfChange = <span class="keyword">true</span>;
<a name="l00337"></a>00337 } <span class="keywordflow">else</span> {
<a name="l00338"></a>00338 halfChange = !halfChange;
<a name="l00339"></a>00339 }
<a name="l00340"></a>00340 lastChange = currentTime;
<a name="l00341"></a>00341 } <span class="keywordflow">else</span> {
<a name="l00342"></a>00342 <span class="comment">// Encountered the start bit - start receiving up to 14 bits.</span>
<a name="l00343"></a>00343 lastChange = currentTime;
<a name="l00344"></a>00344 started = <span class="keyword">true</span>;
<a name="l00345"></a>00345 halfChange = <span class="keyword">true</span>;
<a name="l00346"></a>00346 bits = 0;
<a name="l00347"></a>00347 bitCount = 14;
<a name="l00348"></a>00348 }
<a name="l00349"></a>00349 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (started) {
<a name="l00350"></a>00350 <span class="comment">// Falling edge</span>
<a name="l00351"></a>00351 <span class="keywordflow">if</span> ((currentTime - lastChange) &gt; IR_LONG_BIT_TIME) {
<a name="l00352"></a>00352 <span class="comment">// Long time since last rise indicates 1 followed by 0.</span>
<a name="l00353"></a>00353 bits = (bits &lt;&lt; 2) | 0x02;
<a name="l00354"></a>00354 --bitCount;
<a name="l00355"></a>00355 halfChange = <span class="keyword">true</span>;
<a name="l00356"></a>00356 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (halfChange) {
<a name="l00357"></a>00357 <span class="comment">// Rise was halfway through, so falling edge indicates a 1.</span>
<a name="l00358"></a>00358 bits = (bits &lt;&lt; 1) | 0x01;
<a name="l00359"></a>00359 halfChange = <span class="keyword">false</span>;
<a name="l00360"></a>00360 } <span class="keywordflow">else</span> {
<a name="l00361"></a>00361 <span class="comment">// Rise was at the start, so falling edge indicates a 0.</span>
<a name="l00362"></a>00362 bits &lt;&lt;= 1;
<a name="l00363"></a>00363 halfChange = <span class="keyword">true</span>;
<a name="l00364"></a>00364 }
<a name="l00365"></a>00365 lastChange = currentTime;
<a name="l00366"></a>00366 --bitCount;
<a name="l00367"></a>00367 <span class="keywordflow">if</span> (bitCount &lt;= 0) {
<a name="l00368"></a>00368 <span class="comment">// All 14 bits have been received, so deliver the value.</span>
<a name="l00369"></a>00369 started = <span class="keyword">false</span>;
<a name="l00370"></a>00370 buffer = bits;
<a name="l00371"></a>00371 }
<a name="l00372"></a>00372 }
<a name="l00373"></a>00373 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -242,8 +77,188 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9a34040863d1190c0e01b23e6b44de01.html">IR</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">IRreceiver.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;IRreceiver.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="keyword">static</span> <a class="code" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> *receiver = 0;</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="keywordtype">void</span> _IR_receive_interrupt(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;{</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; receiver-&gt;handleInterrupt();</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;</div>
<div class="line"><a name="l00176"></a><span class="lineno"><a class="code" href="classIRreceiver.html#a06eccb8b8311eac395e4b20c4e0163e3"> 176</a></span>&#160;<a class="code" href="classIRreceiver.html#a06eccb8b8311eac395e4b20c4e0163e3" title="Constructs a new infrared remote control receiver that is attached to interruptNumber.">IRreceiver::IRreceiver</a>(<span class="keywordtype">int</span> interruptNumber)</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; : _system(0)</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; , _systemFilter(-1)</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; , started(false)</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; , halfChange(false)</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; , lastChange(0)</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; , bits(0)</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; , bitCount(0)</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; , buffer(0)</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; , lastBuffer(0)</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="keywordflow">switch</span> (interruptNumber) {</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">case</span> 0: <span class="keywordflow">default</span>: pin = 2; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">case</span> 1: pin = 3; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">case</span> 2: pin = 21; <span class="keywordflow">break</span>; <span class="comment">// Arduino Mega only</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">case</span> 3: pin = 20; <span class="keywordflow">break</span>; <span class="comment">// Arduino Mega only</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">case</span> 4: pin = 19; <span class="keywordflow">break</span>; <span class="comment">// Arduino Mega only</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">case</span> 5: pin = 18; <span class="keywordflow">break</span>; <span class="comment">// Arduino Mega only</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; receiver = <span class="keyword">this</span>;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; attachInterrupt(interruptNumber, _IR_receive_interrupt, CHANGE);</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;}</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div>
<div class="line"><a name="l00220"></a><span class="lineno"><a class="code" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda"> 220</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">IRreceiver::command</a>()</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordtype">unsigned</span> buf;</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">// Read the last-delivered sequence from the buffer and clear it.</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; cli();</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; buf = buffer;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; buffer = 0;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; sei();</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="comment">// Bail out if no sequence or it is not for us.</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (!buf) {</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; _system = -1;</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (_systemFilter != -1) {</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (((buf &gt;&gt; 6) &amp; 0x1F) != _systemFilter) {</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; _system = -1;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</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;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="comment">// Extract the command.</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordtype">int</span> cmd = buf &amp; 0x3F;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span> ((buf &amp; 0x1000) == 0)</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; cmd += 64;</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="comment">// Is this a new command or an auto-repeat of the previous command?</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="comment">// Bit 11 will toggle whenever a new button press is started.</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (lastBuffer == buf)</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; cmd += <a class="code" href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9" title="Flag that is added to the output of command() when the command is an auto-repeated button press rathe...">AUTO_REPEAT</a>;</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; lastBuffer = buf;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; _system = (buf &gt;&gt; 6) &amp; 0x1F;</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> cmd;</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;}</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment">// Number of microseconds that the signal is HIGH or LOW for</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment">// indicating a bit. A 1 bit is transmitted as LOW for 889us</span></div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="comment">// followed by HIGH for 889us. A 0 bit is HIGH, then LOW.</span></div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="preprocessor">#define IR_BIT_TIME 889</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="comment">// Number of microseconds to detect a long gap in the coding</span></div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="comment">// corresponding to 2 time units HIGH or LOW. We actually check</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="comment">// for at least 1.5 time units to allow for slight variations</span></div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment">// in timing on different remote controls.</span></div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="preprocessor">#define IR_LONG_BIT_TIME (889 * 6 / 4)</span></div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="comment">// Maximum timeout for a single bit. If we don&#39;t see a rising edge</span></div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="comment">// within this time, then we have lost sync and need to restart.</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="preprocessor">#define IR_MAX_TIME (IR_BIT_TIME * 4)</span></div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="comment">// Protocol details from http://en.wikipedia.org/wiki/RC-5</span></div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="keywordtype">void</span> IRreceiver::handleInterrupt()</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; <span class="keywordtype">bool</span> value = digitalRead(pin);</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> currentTime = micros();</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">if</span> (!value) {</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="comment">// Rising edge (input is active-LOW)</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span> (started &amp;&amp; (currentTime - lastChange) &gt; IR_MAX_TIME) {</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">// Too long since the last received bit, so restart the process.</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; started = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (started) {</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="comment">// We recognize bits on the falling edges, so merely</span></div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="comment">// adjust the &quot;changed at last half-cycle&quot; flag.</span></div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">if</span> ((currentTime - lastChange) &gt; IR_LONG_BIT_TIME) {</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="comment">// Long time since last falling edge indicates that the</span></div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="comment">// next bit will definitely be a 1.</span></div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; halfChange = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; halfChange = !halfChange;</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; lastChange = currentTime;</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="comment">// Encountered the start bit - start receiving up to 14 bits.</span></div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; lastChange = currentTime;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; started = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; halfChange = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; bits = 0;</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; bitCount = 14;</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (started) {</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="comment">// Falling edge</span></div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">if</span> ((currentTime - lastChange) &gt; IR_LONG_BIT_TIME) {</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="comment">// Long time since last rise indicates 1 followed by 0.</span></div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; bits = (bits &lt;&lt; 2) | 0x02;</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; --bitCount;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; halfChange = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (halfChange) {</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="comment">// Rise was halfway through, so falling edge indicates a 1.</span></div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; bits = (bits &lt;&lt; 1) | 0x01;</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; halfChange = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="comment">// Rise was at the start, so falling edge indicates a 0.</span></div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; bits &lt;&lt;= 1;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; halfChange = <span class="keyword">true</span>;</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; lastChange = currentTime;</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; --bitCount;</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">if</span> (bitCount &lt;= 0) {</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="comment">// All 14 bits have been received, so deliver the value.</span></div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; started = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; buffer = bits;</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; }</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: IRreceiver.h Source File</title> <title>ArduinoLibs: IRreceiver.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,78 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">IRreceiver.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef IRreceiver_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define IRreceiver_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &quot;RC5.h&quot;</span>
<a name="l00028"></a>00028
<a name="l00029"></a><a class="code" href="classIRreceiver.html">00029</a> <span class="keyword">class </span><a class="code" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a>
<a name="l00030"></a>00030 {
<a name="l00031"></a>00031 <span class="keyword">public</span>:
<a name="l00032"></a>00032 <span class="keyword">explicit</span> <a class="code" href="classIRreceiver.html#a06eccb8b8311eac395e4b20c4e0163e3" title="Constructs a new infrared remote control receiver that is attached to interruptNumber.">IRreceiver</a>(<span class="keywordtype">int</span> interruptNumber = 0);
<a name="l00033"></a>00033
<a name="l00034"></a><a class="code" href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9">00034</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9" title="Flag that is added to the output of command() when the command is an auto-repeated button press rathe...">AUTO_REPEAT</a> = 128;
<a name="l00035"></a>00035
<a name="l00036"></a>00036 <span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command</a>();
<a name="l00037"></a><a class="code" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f">00037</a> <span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _system; }
<a name="l00038"></a>00038
<a name="l00039"></a><a class="code" href="classIRreceiver.html#a2c6adc404f71f263ba535ec1ed9cff1a">00039</a> <span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a2c6adc404f71f263ba535ec1ed9cff1a" title="Returns the system to filter commands against, or -1 if no filter is set.">systemFilter</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _systemFilter; }
<a name="l00040"></a><a class="code" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08">00040</a> <span class="keywordtype">void</span> <a class="code" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08" title="Sets the system to filter commands against, or -1 to turn off the system filter.">setSystemFilter</a>(<span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system</a>) { _systemFilter = <a class="code" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system</a>; }
<a name="l00041"></a>00041
<a name="l00042"></a>00042 <span class="keyword">private</span>:
<a name="l00043"></a>00043 <span class="keywordtype">int</span> _system;
<a name="l00044"></a>00044 <span class="keywordtype">int</span> _systemFilter;
<a name="l00045"></a>00045 uint8_t pin;
<a name="l00046"></a>00046 <span class="keywordtype">bool</span> started;
<a name="l00047"></a>00047 <span class="keywordtype">bool</span> halfChange; <span class="comment">// Value last changed half-way through bit cycle time.</span>
<a name="l00048"></a>00048 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> lastChange;
<a name="l00049"></a>00049 <span class="keywordtype">unsigned</span> bits;
<a name="l00050"></a>00050 int8_t bitCount;
<a name="l00051"></a>00051 <span class="keyword">volatile</span> <span class="keywordtype">unsigned</span> buffer;
<a name="l00052"></a>00052 <span class="keywordtype">unsigned</span> lastBuffer;
<a name="l00053"></a>00053
<a name="l00054"></a>00054 <span class="keywordtype">void</span> handleInterrupt();
<a name="l00055"></a>00055
<a name="l00056"></a>00056 <span class="keyword">friend</span> <span class="keywordtype">void</span> _IR_receive_interrupt(<span class="keywordtype">void</span>);
<a name="l00057"></a>00057 };
<a name="l00058"></a>00058
<a name="l00059"></a>00059 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -135,8 +77,81 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9a34040863d1190c0e01b23e6b44de01.html">IR</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">IRreceiver.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef IRreceiver_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define IRreceiver_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;RC5.h&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="classIRreceiver.html"> 29</a></span>&#160;<span class="keyword">class </span><a class="code" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;{</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classIRreceiver.html#a06eccb8b8311eac395e4b20c4e0163e3" title="Constructs a new infrared remote control receiver that is attached to interruptNumber.">IRreceiver</a>(<span class="keywordtype">int</span> interruptNumber = 0);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9"> 34</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9" title="Flag that is added to the output of command() when the command is an auto-repeated button press rathe...">AUTO_REPEAT</a> = 128;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command</a>();</div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="code" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f"> 37</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _system; }</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classIRreceiver.html#a2c6adc404f71f263ba535ec1ed9cff1a"> 39</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a2c6adc404f71f263ba535ec1ed9cff1a" title="Returns the system to filter commands against, or -1 if no filter is set.">systemFilter</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _systemFilter; }</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08"> 40</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08" title="Sets the system to filter commands against, or -1 to turn off the system filter.">setSystemFilter</a>(<span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system</a>) { _systemFilter = <a class="code" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system</a>; }</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="keyword">private</span>:</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">int</span> _system;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">int</span> _systemFilter;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; uint8_t pin;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">bool</span> started;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">bool</span> halfChange; <span class="comment">// Value last changed half-way through bit cycle time.</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> lastChange;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">unsigned</span> bits;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; int8_t bitCount;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">volatile</span> <span class="keywordtype">unsigned</span> buffer;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">unsigned</span> lastBuffer;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">void</span> handleInterrupt();</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">friend</span> <span class="keywordtype">void</span> _IR_receive_interrupt(<span class="keywordtype">void</span>);</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;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: IntField.cpp Source File</title> <title>ArduinoLibs: IntField.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,124 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">IntField.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;IntField.h&quot;</span>
<a name="l00024"></a>00024
<a name="l00071"></a><a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6">00071</a> <a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6" title="Constructs a new integer field with a specific label.">IntField::IntField</a>(<span class="keyword">const</span> String &amp;label)
<a name="l00072"></a>00072 : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(label)
<a name="l00073"></a>00073 , _minValue(0)
<a name="l00074"></a>00074 , _maxValue(100)
<a name="l00075"></a>00075 , _stepValue(1)
<a name="l00076"></a>00076 , _value(0)
<a name="l00077"></a>00077 , _printLen(0)
<a name="l00078"></a>00078 {
<a name="l00079"></a>00079 }
<a name="l00080"></a>00080
<a name="l00088"></a><a class="code" href="classIntField.html#a10c9c958bcde276698f1f1f9bff949dd">00088</a> <a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6" title="Constructs a new integer field with a specific label.">IntField::IntField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label, <span class="keywordtype">int</span> minValue, <span class="keywordtype">int</span> maxValue, <span class="keywordtype">int</span> stepValue, <span class="keywordtype">int</span> value)
<a name="l00089"></a>00089 : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(form, label)
<a name="l00090"></a>00090 , _minValue(minValue)
<a name="l00091"></a>00091 , _maxValue(maxValue)
<a name="l00092"></a>00092 , _stepValue(stepValue)
<a name="l00093"></a>00093 , _value(value)
<a name="l00094"></a>00094 , _printLen(0)
<a name="l00095"></a>00095 {
<a name="l00096"></a>00096 }
<a name="l00097"></a>00097
<a name="l00103"></a><a class="code" href="classIntField.html#a2b99fa19be6a0ed01ddc4939352b372e">00103</a> <a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6" title="Constructs a new integer field with a specific label.">IntField::IntField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label, <span class="keywordtype">int</span> minValue, <span class="keywordtype">int</span> maxValue, <span class="keywordtype">int</span> stepValue, <span class="keywordtype">int</span> value, <span class="keyword">const</span> String &amp;suffix)
<a name="l00104"></a>00104 : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(form, label)
<a name="l00105"></a>00105 , _minValue(minValue)
<a name="l00106"></a>00106 , _maxValue(maxValue)
<a name="l00107"></a>00107 , _stepValue(stepValue)
<a name="l00108"></a>00108 , _value(value)
<a name="l00109"></a>00109 , _printLen(0)
<a name="l00110"></a>00110 , _suffix(suffix)
<a name="l00111"></a>00111 {
<a name="l00112"></a>00112 }
<a name="l00113"></a>00113
<a name="l00114"></a><a class="code" href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f">00114</a> <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f" title="Dispatches event via this field.">IntField::dispatch</a>(<span class="keywordtype">int</span> event)
<a name="l00115"></a>00115 {
<a name="l00116"></a>00116 <span class="keywordflow">if</span> (event == LCD_BUTTON_UP) {
<a name="l00117"></a>00117 <a class="code" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue</a>(_value + _stepValue);
<a name="l00118"></a>00118 <span class="keywordflow">return</span> FORM_CHANGED;
<a name="l00119"></a>00119 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == LCD_BUTTON_DOWN) {
<a name="l00120"></a>00120 <a class="code" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue</a>(_value - _stepValue);
<a name="l00121"></a>00121 <span class="keywordflow">return</span> FORM_CHANGED;
<a name="l00122"></a>00122 }
<a name="l00123"></a>00123 <span class="keywordflow">return</span> -1;
<a name="l00124"></a>00124 }
<a name="l00125"></a>00125
<a name="l00126"></a><a class="code" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a">00126</a> <span class="keywordtype">void</span> <a class="code" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a" title="Enters the field due to form navigation.">IntField::enterField</a>(<span class="keywordtype">bool</span> reverse)
<a name="l00127"></a>00127 {
<a name="l00128"></a>00128 <a class="code" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a" title="Enters the field due to form navigation.">Field::enterField</a>(reverse);
<a name="l00129"></a>00129 printValue();
<a name="l00130"></a>00130 }
<a name="l00131"></a>00131
<a name="l00198"></a><a class="code" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7">00198</a> <span class="keywordtype">void</span> <a class="code" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">IntField::setValue</a>(<span class="keywordtype">int</span> value)
<a name="l00199"></a>00199 {
<a name="l00200"></a>00200 <span class="keywordflow">if</span> (value &lt; _minValue)
<a name="l00201"></a>00201 value = _minValue;
<a name="l00202"></a>00202 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value &gt; _maxValue)
<a name="l00203"></a>00203 value = _maxValue;
<a name="l00204"></a>00204 <span class="keywordflow">if</span> (value != _value) {
<a name="l00205"></a>00205 _value = <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value</a>;
<a name="l00206"></a>00206 <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())
<a name="l00207"></a>00207 printValue();
<a name="l00208"></a>00208 }
<a name="l00209"></a>00209 }
<a name="l00210"></a>00210
<a name="l00231"></a><a class="code" href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd">00231</a> <span class="keywordtype">void</span> <a class="code" href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd" title="Sets the suffix string to be displayed after the field&#39;s value.">IntField::setSuffix</a>(<span class="keyword">const</span> String &amp;suffix)
<a name="l00232"></a>00232 {
<a name="l00233"></a>00233 _suffix = <a class="code" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05" title="Returns the suffix string to be displayed after the field&#39;s value.">suffix</a>;
<a name="l00234"></a>00234 <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())
<a name="l00235"></a>00235 printValue();
<a name="l00236"></a>00236 }
<a name="l00237"></a>00237
<a name="l00238"></a>00238 <span class="keywordtype">void</span> IntField::printValue()
<a name="l00239"></a>00239 {
<a name="l00240"></a>00240 String str(_value);
<a name="l00241"></a>00241 <span class="keywordflow">if</span> (_suffix.length())
<a name="l00242"></a>00242 str += _suffix;
<a name="l00243"></a>00243 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(0, 1);
<a name="l00244"></a>00244 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;print(str);
<a name="l00245"></a>00245 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = str.length();
<a name="l00246"></a>00246 <span class="keywordflow">while</span> (len++ &lt; _printLen)
<a name="l00247"></a>00247 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39; &#39;</span>);
<a name="l00248"></a>00248 _printLen = str.length();
<a name="l00249"></a>00249 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -181,8 +77,127 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">IntField.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;IntField.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6"> 71</a></span>&#160;<a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6" title="Constructs a new integer field with a specific label.">IntField::IntField</a>(<span class="keyword">const</span> String &amp;label)</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(label)</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; , _minValue(0)</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; , _maxValue(100)</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; , _stepValue(1)</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; , _value(0)</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; , _printLen(0)</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;{</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;</div>
<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="classIntField.html#a10c9c958bcde276698f1f1f9bff949dd"> 88</a></span>&#160;<a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6" title="Constructs a new integer field with a specific label.">IntField::IntField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label, <span class="keywordtype">int</span> minValue, <span class="keywordtype">int</span> maxValue, <span class="keywordtype">int</span> stepValue, <span class="keywordtype">int</span> value)</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(form, label)</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; , _minValue(minValue)</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; , _maxValue(maxValue)</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; , _stepValue(stepValue)</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; , _value(value)</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; , _printLen(0)</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;{</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;</div>
<div class="line"><a name="l00103"></a><span class="lineno"><a class="code" href="classIntField.html#a2b99fa19be6a0ed01ddc4939352b372e"> 103</a></span>&#160;<a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6" title="Constructs a new integer field with a specific label.">IntField::IntField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label, <span class="keywordtype">int</span> minValue, <span class="keywordtype">int</span> maxValue, <span class="keywordtype">int</span> stepValue, <span class="keywordtype">int</span> value, <span class="keyword">const</span> String &amp;suffix)</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(form, label)</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; , _minValue(minValue)</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; , _maxValue(maxValue)</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; , _stepValue(stepValue)</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; , _value(value)</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; , _printLen(0)</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; , _suffix(suffix)</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;{</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;</div>
<div class="line"><a name="l00114"></a><span class="lineno"><a class="code" href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f"> 114</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f" title="Dispatches event via this field.">IntField::dispatch</a>(<span class="keywordtype">int</span> event)</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;{</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (event == LCD_BUTTON_UP) {</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue</a>(_value + _stepValue);</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">return</span> FORM_CHANGED;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == LCD_BUTTON_DOWN) {</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue</a>(_value - _stepValue);</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">return</span> FORM_CHANGED;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> -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;</div>
<div class="line"><a name="l00126"></a><span class="lineno"><a class="code" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a"> 126</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a" title="Enters the field due to form navigation.">IntField::enterField</a>(<span class="keywordtype">bool</span> reverse)</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; <a class="code" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a" title="Enters the field due to form navigation.">Field::enterField</a>(reverse);</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; printValue();</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div>
<div class="line"><a name="l00198"></a><span class="lineno"><a class="code" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7"> 198</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">IntField::setValue</a>(<span class="keywordtype">int</span> value)</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;{</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">if</span> (value &lt; _minValue)</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; value = _minValue;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value &gt; _maxValue)</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; value = _maxValue;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">if</span> (value != _value) {</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; _value = <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value</a>;</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; printValue();</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;}</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div>
<div class="line"><a name="l00231"></a><span class="lineno"><a class="code" href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd"> 231</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd" title="Sets the suffix string to be displayed after the field&#39;s value.">IntField::setSuffix</a>(<span class="keyword">const</span> String &amp;suffix)</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; _suffix = <a class="code" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05" title="Returns the suffix string to be displayed after the field&#39;s value.">suffix</a>;</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; printValue();</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;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="keywordtype">void</span> IntField::printValue()</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;{</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; String str(_value);</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span> (_suffix.length())</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; str += _suffix;</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(0, 1);</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;print(str);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = str.length();</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">while</span> (len++ &lt; _printLen)</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39; &#39;</span>);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; _printLen = str.length();</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: IntField.h Source File</title> <title>ArduinoLibs: IntField.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,83 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">IntField.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef IntField_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define IntField_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;Field.h&quot;</span>
<a name="l00027"></a>00027
<a name="l00028"></a><a class="code" href="classIntField.html">00028</a> <span class="keyword">class </span><a class="code" href="classIntField.html" title="Field that manages the input of an integer value.">IntField</a> : <span class="keyword">public</span> <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> {
<a name="l00029"></a>00029 <span class="keyword">public</span>:
<a name="l00030"></a>00030 <span class="keyword">explicit</span> <a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6" title="Constructs a new integer field with a specific label.">IntField</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>);
<a name="l00031"></a>00031 <a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6" title="Constructs a new integer field with a specific label.">IntField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5" title="Returns the Form that owns this field; null if not associated with a Form.">form</a>, <span class="keyword">const</span> String &amp;label, <span class="keywordtype">int</span> <a class="code" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue</a>, <span class="keywordtype">int</span> <a class="code" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue</a>, <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue</a>, <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value</a>);
<a name="l00032"></a>00032 <a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6" title="Constructs a new integer field with a specific label.">IntField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label, <span class="keywordtype">int</span> minValue, <span class="keywordtype">int</span> maxValue, <span class="keywordtype">int</span> stepValue, <span class="keywordtype">int</span> value, <span class="keyword">const</span> String &amp;<a class="code" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05" title="Returns the suffix string to be displayed after the field&#39;s value.">suffix</a>);
<a name="l00033"></a>00033
<a name="l00034"></a>00034 <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f" title="Dispatches event via this field.">dispatch</a>(<span class="keywordtype">int</span> event);
<a name="l00035"></a>00035
<a name="l00036"></a>00036 <span class="keywordtype">void</span> <a class="code" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a" title="Enters the field due to form navigation.">enterField</a>(<span class="keywordtype">bool</span> reverse);
<a name="l00037"></a>00037
<a name="l00038"></a><a class="code" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb">00038</a> <span class="keywordtype">int</span> <a class="code" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _minValue; }
<a name="l00039"></a><a class="code" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada">00039</a> <span class="keywordtype">void</span> <a class="code" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada" title="Sets the minimum value for the input field.">setMinValue</a>(<span class="keywordtype">int</span> value) { _minValue = <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value</a>; }
<a name="l00040"></a>00040
<a name="l00041"></a><a class="code" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad">00041</a> <span class="keywordtype">int</span> <a class="code" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _maxValue; }
<a name="l00042"></a><a class="code" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1">00042</a> <span class="keywordtype">void</span> <a class="code" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1" title="Sets the maximum value for the input field.">setMaxValue</a>(<span class="keywordtype">int</span> value) { _maxValue = <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value</a>; }
<a name="l00043"></a>00043
<a name="l00044"></a><a class="code" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd">00044</a> <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _stepValue; }
<a name="l00045"></a><a class="code" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb">00045</a> <span class="keywordtype">void</span> <a class="code" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb" title="Sets the step value value to use when increasing or decreasing the value() due to Up and Down button ...">setStepValue</a>(<span class="keywordtype">int</span> value) { _stepValue = <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value</a>; }
<a name="l00046"></a>00046
<a name="l00047"></a><a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">00047</a> <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _value; }
<a name="l00048"></a>00048 <span class="keywordtype">void</span> <a class="code" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue</a>(<span class="keywordtype">int</span> value);
<a name="l00049"></a>00049
<a name="l00050"></a><a class="code" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05">00050</a> <span class="keyword">const</span> String &amp;<a class="code" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05" title="Returns the suffix string to be displayed after the field&#39;s value.">suffix</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _suffix; }
<a name="l00051"></a>00051 <span class="keywordtype">void</span> <a class="code" href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd" title="Sets the suffix string to be displayed after the field&#39;s value.">setSuffix</a>(<span class="keyword">const</span> String &amp;suffix);
<a name="l00052"></a>00052
<a name="l00053"></a>00053 <span class="keyword">private</span>:
<a name="l00054"></a>00054 <span class="keywordtype">int</span> _minValue;
<a name="l00055"></a>00055 <span class="keywordtype">int</span> _maxValue;
<a name="l00056"></a>00056 <span class="keywordtype">int</span> _stepValue;
<a name="l00057"></a>00057 <span class="keywordtype">int</span> _value;
<a name="l00058"></a>00058 <span class="keywordtype">int</span> _printLen;
<a name="l00059"></a>00059 String _suffix;
<a name="l00060"></a>00060
<a name="l00061"></a>00061 <span class="keywordtype">void</span> printValue();
<a name="l00062"></a>00062 };
<a name="l00063"></a>00063
<a name="l00064"></a>00064 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -140,8 +77,86 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">IntField.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef IntField_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define IntField_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;Field.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="classIntField.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classIntField.html" title="Field that manages the input of an integer value.">IntField</a> : <span class="keyword">public</span> <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> {</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6" title="Constructs a new integer field with a specific label.">IntField</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6" title="Constructs a new integer field with a specific label.">IntField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5" title="Returns the Form that owns this field; null if not associated with a Form.">form</a>, <span class="keyword">const</span> String &amp;label, <span class="keywordtype">int</span> <a class="code" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue</a>, <span class="keywordtype">int</span> <a class="code" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue</a>, <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue</a>, <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value</a>);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6" title="Constructs a new integer field with a specific label.">IntField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label, <span class="keywordtype">int</span> minValue, <span class="keywordtype">int</span> maxValue, <span class="keywordtype">int</span> stepValue, <span class="keywordtype">int</span> value, <span class="keyword">const</span> String &amp;<a class="code" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05" title="Returns the suffix string to be displayed after the field&#39;s value.">suffix</a>);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f" title="Dispatches event via this field.">dispatch</a>(<span class="keywordtype">int</span> event);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a" title="Enters the field due to form navigation.">enterField</a>(<span class="keywordtype">bool</span> reverse);</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb"> 38</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _minValue; }</div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada"> 39</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada" title="Sets the minimum value for the input field.">setMinValue</a>(<span class="keywordtype">int</span> value) { _minValue = <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value</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"><a class="code" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad"> 41</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _maxValue; }</div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="code" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1"> 42</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1" title="Sets the maximum value for the input field.">setMaxValue</a>(<span class="keywordtype">int</span> value) { _maxValue = <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value</a>; }</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd"> 44</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _stepValue; }</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb"> 45</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb" title="Sets the step value value to use when increasing or decreasing the value() due to Up and Down button ...">setStepValue</a>(<span class="keywordtype">int</span> value) { _stepValue = <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value</a>; }</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52"> 47</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _value; }</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue</a>(<span class="keywordtype">int</span> value);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05"> 50</a></span>&#160; <span class="keyword">const</span> String &amp;<a class="code" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05" title="Returns the suffix string to be displayed after the field&#39;s value.">suffix</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _suffix; }</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd" title="Sets the suffix string to be displayed after the field&#39;s value.">setSuffix</a>(<span class="keyword">const</span> String &amp;suffix);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">int</span> _minValue;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">int</span> _maxValue;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">int</span> _stepValue;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">int</span> _value;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">int</span> _printLen;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; String _suffix;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">void</span> printValue();</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;};</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">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: LCD.cpp Source File</title> <title>ArduinoLibs: LCD.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,208 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">LCD.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;LCD.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span>
<a name="l00025"></a>00025 <span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#else</span>
<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
<a name="l00029"></a>00029 <span class="preprocessor">#endif</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span>
<a name="l00031"></a>00031 <span class="preprocessor">#define LCD_BACK_LIGHT 3 // Default LCD backlight is on D3</span>
<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_PIN A0 // Button state is on A0</span>
<a name="l00033"></a>00033 <span class="preprocessor"></span>
<a name="l00034"></a>00034 <span class="preprocessor">#define DEBOUNCE_DELAY 10 // Delay in ms to debounce buttons</span>
<a name="l00035"></a>00035 <span class="preprocessor"></span>
<a name="l00130"></a>00130 <span class="keywordtype">void</span> LCD::init()
<a name="l00131"></a>00131 {
<a name="l00132"></a>00132 <span class="comment">// The Freetronics display is 16x2.</span>
<a name="l00133"></a>00133 begin(16, 2);
<a name="l00134"></a>00134
<a name="l00135"></a>00135 <span class="comment">// Configure the backlight pin, but don&#39;t activate it yet in</span>
<a name="l00136"></a>00136 <span class="comment">// case the application sets it to something else during setup().</span>
<a name="l00137"></a>00137 <span class="comment">// Initialization will be forced in the first call to getButton().</span>
<a name="l00138"></a>00138 _backlightPin = LCD_BACK_LIGHT;
<a name="l00139"></a>00139 backlightInit = <span class="keyword">false</span>;
<a name="l00140"></a>00140
<a name="l00141"></a>00141 <span class="comment">// Initialise button input.</span>
<a name="l00142"></a>00142 pinMode(LCD_BUTTON_PIN, INPUT);
<a name="l00143"></a>00143 digitalWrite(LCD_BUTTON_PIN, LOW);
<a name="l00144"></a>00144 prevButton = LCD_BUTTON_NONE;
<a name="l00145"></a>00145 debounceButton = LCD_BUTTON_NONE;
<a name="l00146"></a>00146 lastDebounce = 0;
<a name="l00147"></a>00147 eatRelease = <span class="keyword">false</span>;
<a name="l00148"></a>00148
<a name="l00149"></a>00149 <span class="comment">// Initialize screen saver.</span>
<a name="l00150"></a>00150 timeout = 0;
<a name="l00151"></a>00151 lastRestore = millis();
<a name="l00152"></a>00152 screenSaved = <span class="keyword">false</span>;
<a name="l00153"></a>00153 mode = <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f" title="Turn off both the display and the backlight when the screen saver is activated.">DisplayOff</a>;
<a name="l00154"></a>00154 }
<a name="l00155"></a>00155
<a name="l00182"></a><a class="code" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8">00182</a> <span class="keywordtype">void</span> <a class="code" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8" title="Sets the back light pin for the LCD shield.">LCD::setBacklightPin</a>(uint8_t pin)
<a name="l00183"></a>00183 {
<a name="l00184"></a>00184 <span class="keywordflow">if</span> (_backlightPin != pin) {
<a name="l00185"></a>00185 <span class="keywordflow">if</span> (backlightInit) {
<a name="l00186"></a>00186 <span class="comment">// Restore the previous backlight pin to input, floating.</span>
<a name="l00187"></a>00187 pinMode(_backlightPin, INPUT);
<a name="l00188"></a>00188 digitalWrite(_backlightPin, LOW);
<a name="l00189"></a>00189
<a name="l00190"></a>00190 <span class="comment">// Need to re-initialize the backlight at the earliest opportunity.</span>
<a name="l00191"></a>00191 backlightInit = <span class="keyword">false</span>;
<a name="l00192"></a>00192 }
<a name="l00193"></a>00193 _backlightPin = pin;
<a name="l00194"></a>00194 }
<a name="l00195"></a>00195 }
<a name="l00196"></a>00196
<a name="l00206"></a><a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">00206</a> <span class="keywordtype">void</span> <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">LCD::display</a>()
<a name="l00207"></a>00207 {
<a name="l00208"></a>00208 <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">LiquidCrystal::display</a>();
<a name="l00209"></a>00209 pinMode(_backlightPin, OUTPUT);
<a name="l00210"></a>00210 digitalWrite(_backlightPin, HIGH);
<a name="l00211"></a>00211 screenSaved = <span class="keyword">false</span>;
<a name="l00212"></a>00212 backlightInit = <span class="keyword">true</span>;
<a name="l00213"></a>00213 lastRestore = millis();
<a name="l00214"></a>00214 }
<a name="l00215"></a>00215
<a name="l00223"></a><a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108">00223</a> <span class="keywordtype">void</span> <a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108" title="Turns off the display of text on the LCD and the back light.">LCD::noDisplay</a>()
<a name="l00224"></a>00224 {
<a name="l00225"></a>00225 <span class="keywordflow">if</span> (mode == <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f" title="Turn off both the display and the backlight when the screen saver is activated.">DisplayOff</a>)
<a name="l00226"></a>00226 <a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108" title="Turns off the display of text on the LCD and the back light.">LiquidCrystal::noDisplay</a>();
<a name="l00227"></a>00227 pinMode(_backlightPin, OUTPUT);
<a name="l00228"></a>00228 digitalWrite(_backlightPin, LOW);
<a name="l00229"></a>00229 screenSaved = <span class="keyword">true</span>;
<a name="l00230"></a>00230 backlightInit = <span class="keyword">true</span>;
<a name="l00231"></a>00231 }
<a name="l00232"></a>00232
<a name="l00268"></a><a class="code" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801">00268</a> <span class="keywordtype">void</span> <a class="code" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801" title="Sets the current screen saver mode.">LCD::setScreenSaverMode</a>(<a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28" title="Screen saver mode that controls the display and back light.">ScreenSaverMode</a> mode)
<a name="l00269"></a>00269 {
<a name="l00270"></a>00270 <span class="keywordflow">if</span> (this-&gt;mode != mode) {
<a name="l00271"></a>00271 this-&gt;mode = mode;
<a name="l00272"></a>00272 <span class="keywordflow">if</span> (screenSaved)
<a name="l00273"></a>00273 <a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108" title="Turns off the display of text on the LCD and the back light.">noDisplay</a>();
<a name="l00274"></a>00274 <span class="keywordflow">else</span>
<a name="l00275"></a>00275 <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display</a>();
<a name="l00276"></a>00276 }
<a name="l00277"></a>00277 }
<a name="l00278"></a>00278
<a name="l00294"></a><a class="code" href="classLCD.html#af9a2326d034fa159d384ec16223c924f">00294</a> <span class="keywordtype">void</span> <a class="code" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">LCD::enableScreenSaver</a>(<span class="keywordtype">int</span> timeoutSecs)
<a name="l00295"></a>00295 {
<a name="l00296"></a>00296 <span class="keywordflow">if</span> (timeoutSecs &lt; 0)
<a name="l00297"></a>00297 timeout = 0;
<a name="l00298"></a>00298 <span class="keywordflow">else</span>
<a name="l00299"></a>00299 timeout = ((<span class="keywordtype">unsigned</span> long)timeoutSecs) * 1000;
<a name="l00300"></a>00300 <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display</a>();
<a name="l00301"></a>00301 }
<a name="l00302"></a>00302
<a name="l00308"></a><a class="code" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e">00308</a> <span class="keywordtype">void</span> <a class="code" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e" title="Disables the screen saver.">LCD::disableScreenSaver</a>()
<a name="l00309"></a>00309 {
<a name="l00310"></a>00310 timeout = 0;
<a name="l00311"></a>00311 <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display</a>();
<a name="l00312"></a>00312 }
<a name="l00313"></a>00313
<a name="l00321"></a>00321 <span class="comment">// Button mapping table generated by genlookup.c</span>
<a name="l00322"></a>00322 <span class="keyword">static</span> prog_uint8_t <span class="keyword">const</span> buttonMappings[] PROGMEM = {
<a name="l00323"></a>00323 2, 0, 0, 0, 3, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 1,
<a name="l00324"></a>00324 1, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0
<a name="l00325"></a>00325 };
<a name="l00326"></a>00326 <span class="preprocessor">#define mapButton(value) (pgm_read_byte(&amp;(buttonMappings[(value) &gt;&gt; 5])))</span>
<a name="l00327"></a>00327 <span class="preprocessor"></span>
<a name="l00353"></a><a class="code" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292">00353</a> <span class="keywordtype">int</span> <a class="code" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton</a>()
<a name="l00354"></a>00354 {
<a name="l00355"></a>00355 <span class="comment">// Initialize the backlight for the first time if necessary.</span>
<a name="l00356"></a>00356 <span class="keywordflow">if</span> (!backlightInit)
<a name="l00357"></a>00357 <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display</a>();
<a name="l00358"></a>00358
<a name="l00359"></a>00359 <span class="comment">// Read the currently pressed button.</span>
<a name="l00360"></a>00360 <span class="keywordtype">int</span> button = mapButton(analogRead(LCD_BUTTON_PIN));
<a name="l00361"></a>00361
<a name="l00362"></a>00362 <span class="comment">// Debounce the button state.</span>
<a name="l00363"></a>00363 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> currentTime = millis();
<a name="l00364"></a>00364 <span class="keywordflow">if</span> (button != debounceButton)
<a name="l00365"></a>00365 lastDebounce = currentTime;
<a name="l00366"></a>00366 debounceButton = button;
<a name="l00367"></a>00367 <span class="keywordflow">if</span> ((currentTime - lastDebounce) &lt; DEBOUNCE_DELAY)
<a name="l00368"></a>00368 button = prevButton;
<a name="l00369"></a>00369
<a name="l00370"></a>00370 <span class="comment">// Process the button event if the state has changed.</span>
<a name="l00371"></a>00371 <span class="keywordflow">if</span> (prevButton == LCD_BUTTON_NONE &amp;&amp; button != LCD_BUTTON_NONE) {
<a name="l00372"></a>00372 prevButton = button;
<a name="l00373"></a>00373 <span class="keywordflow">if</span> (screenSaved) {
<a name="l00374"></a>00374 <span class="comment">// Button pressed when screen saver active.</span>
<a name="l00375"></a>00375 <span class="keywordflow">if</span> (mode == <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35" title="Same as BacklightOff but the screen saver is only deactivated when Select is pressed; other buttons h...">BacklightOnSelect</a>) {
<a name="l00376"></a>00376 <span class="comment">// Turn on the back light only if Select was pressed.</span>
<a name="l00377"></a>00377 <span class="keywordflow">if</span> (button == LCD_BUTTON_SELECT) {
<a name="l00378"></a>00378 pinMode(_backlightPin, OUTPUT);
<a name="l00379"></a>00379 digitalWrite(_backlightPin, HIGH);
<a name="l00380"></a>00380 screenSaved = <span class="keyword">false</span>;
<a name="l00381"></a>00381 backlightInit = <span class="keyword">true</span>;
<a name="l00382"></a>00382 }
<a name="l00383"></a>00383 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (mode == <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f" title="Turn off both the display and the backlight when the screen saver is activated.">DisplayOff</a>) {
<a name="l00384"></a>00384 <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display</a>();
<a name="l00385"></a>00385 eatRelease = <span class="keyword">true</span>;
<a name="l00386"></a>00386 <span class="keywordflow">return</span> LCD_BUTTON_NONE;
<a name="l00387"></a>00387 } <span class="keywordflow">else</span> {
<a name="l00388"></a>00388 <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display</a>();
<a name="l00389"></a>00389 }
<a name="l00390"></a>00390 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (mode == <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35" title="Same as BacklightOff but the screen saver is only deactivated when Select is pressed; other buttons h...">BacklightOnSelect</a> &amp;&amp; button != LCD_BUTTON_SELECT) {
<a name="l00391"></a>00391 eatRelease = <span class="keyword">false</span>;
<a name="l00392"></a>00392 <span class="keywordflow">return</span> button;
<a name="l00393"></a>00393 }
<a name="l00394"></a>00394 eatRelease = <span class="keyword">false</span>;
<a name="l00395"></a>00395 lastRestore = currentTime;
<a name="l00396"></a>00396 <span class="keywordflow">return</span> button;
<a name="l00397"></a>00397 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (prevButton != LCD_BUTTON_NONE &amp;&amp; button == LCD_BUTTON_NONE) {
<a name="l00398"></a>00398 button = -prevButton;
<a name="l00399"></a>00399 prevButton = LCD_BUTTON_NONE;
<a name="l00400"></a>00400 lastRestore = currentTime;
<a name="l00401"></a>00401 <span class="keywordflow">if</span> (eatRelease) {
<a name="l00402"></a>00402 eatRelease = <span class="keyword">false</span>;
<a name="l00403"></a>00403 <span class="keywordflow">return</span> LCD_BUTTON_NONE;
<a name="l00404"></a>00404 }
<a name="l00405"></a>00405 <span class="keywordflow">return</span> button;
<a name="l00406"></a>00406 } <span class="keywordflow">else</span> {
<a name="l00407"></a>00407 <span class="keywordflow">if</span> (!screenSaved &amp;&amp; prevButton == LCD_BUTTON_NONE &amp;&amp;
<a name="l00408"></a>00408 timeout != 0 &amp;&amp; (currentTime - lastRestore) &gt;= timeout)
<a name="l00409"></a>00409 <a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108" title="Turns off the display of text on the LCD and the back light.">noDisplay</a>(); <span class="comment">// Activate screen saver.</span>
<a name="l00410"></a>00410 <span class="keywordflow">return</span> LCD_BUTTON_NONE;
<a name="l00411"></a>00411 }
<a name="l00412"></a>00412 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -265,8 +77,211 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">LCD.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;LCD.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define LCD_BACK_LIGHT 3 // Default LCD backlight is on D3</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_PIN A0 // Button state is on A0</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#define DEBOUNCE_DELAY 10 // Delay in ms to debounce buttons</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keywordtype">void</span> LCD::init()</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;{</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="comment">// The Freetronics display is 16x2.</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; begin(16, 2);</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// Configure the backlight pin, but don&#39;t activate it yet in</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// case the application sets it to something else during setup().</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// Initialization will be forced in the first call to getButton().</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; _backlightPin = LCD_BACK_LIGHT;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; backlightInit = <span class="keyword">false</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; <span class="comment">// Initialise button input.</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; pinMode(LCD_BUTTON_PIN, INPUT);</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; digitalWrite(LCD_BUTTON_PIN, LOW);</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; prevButton = LCD_BUTTON_NONE;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; debounceButton = LCD_BUTTON_NONE;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; lastDebounce = 0;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; eatRelease = <span class="keyword">false</span>;</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="comment">// Initialize screen saver.</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; timeout = 0;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; lastRestore = millis();</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; screenSaved = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; mode = <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f" title="Turn off both the display and the backlight when the screen saver is activated.">DisplayOff</a>;</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;</div>
<div class="line"><a name="l00182"></a><span class="lineno"><a class="code" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8"> 182</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8" title="Sets the back light pin for the LCD shield.">LCD::setBacklightPin</a>(uint8_t pin)</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="keywordflow">if</span> (_backlightPin != pin) {</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (backlightInit) {</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="comment">// Restore the previous backlight pin to input, floating.</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; pinMode(_backlightPin, INPUT);</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; digitalWrite(_backlightPin, LOW);</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; <span class="comment">// Need to re-initialize the backlight at the earliest opportunity.</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; backlightInit = <span class="keyword">false</span>;</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; _backlightPin = pin;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</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;</div>
<div class="line"><a name="l00206"></a><span class="lineno"><a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89"> 206</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">LCD::display</a>()</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; <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">LiquidCrystal::display</a>();</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; pinMode(_backlightPin, OUTPUT);</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; digitalWrite(_backlightPin, HIGH);</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; screenSaved = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; backlightInit = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; lastRestore = millis();</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;</div>
<div class="line"><a name="l00223"></a><span class="lineno"><a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108"> 223</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108" title="Turns off the display of text on the LCD and the back light.">LCD::noDisplay</a>()</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"> 225</span>&#160; <span class="keywordflow">if</span> (mode == <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f" title="Turn off both the display and the backlight when the screen saver is activated.">DisplayOff</a>)</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108" title="Turns off the display of text on the LCD and the back light.">LiquidCrystal::noDisplay</a>();</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; pinMode(_backlightPin, OUTPUT);</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; digitalWrite(_backlightPin, LOW);</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; screenSaved = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; backlightInit = <span class="keyword">true</span>;</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="l00268"></a><span class="lineno"><a class="code" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801"> 268</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801" title="Sets the current screen saver mode.">LCD::setScreenSaverMode</a>(<a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28" title="Screen saver mode that controls the display and back light.">ScreenSaverMode</a> mode)</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;{</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span> (this-&gt;mode != mode) {</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; this-&gt;mode = mode;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">if</span> (screenSaved)</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108" title="Turns off the display of text on the LCD and the back light.">noDisplay</a>();</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display</a>();</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;}</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;</div>
<div class="line"><a name="l00294"></a><span class="lineno"><a class="code" href="classLCD.html#af9a2326d034fa159d384ec16223c924f"> 294</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">LCD::enableScreenSaver</a>(<span class="keywordtype">int</span> timeoutSecs)</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; <span class="keywordflow">if</span> (timeoutSecs &lt; 0)</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; timeout = 0;</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; timeout = ((<span class="keywordtype">unsigned</span> long)timeoutSecs) * 1000;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display</a>();</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;}</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div>
<div class="line"><a name="l00308"></a><span class="lineno"><a class="code" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e"> 308</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e" title="Disables the screen saver.">LCD::disableScreenSaver</a>()</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;{</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; timeout = 0;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display</a>();</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"> 313</span>&#160;</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="comment">// Button mapping table generated by genlookup.c</span></div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <span class="keyword">const</span> buttonMappings[] PROGMEM = {</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; 2, 0, 0, 0, 3, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 1,</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; 1, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;};</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="preprocessor">#define mapButton(value) (pgm_read_byte(&amp;(buttonMappings[(value) &gt;&gt; 5])))</span></div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00353"></a><span class="lineno"><a class="code" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292"> 353</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton</a>()</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; <span class="comment">// Initialize the backlight for the first time if necessary.</span></div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">if</span> (!backlightInit)</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display</a>();</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="comment">// Read the currently pressed button.</span></div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordtype">int</span> button = mapButton(analogRead(LCD_BUTTON_PIN));</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; <span class="comment">// Debounce the button state.</span></div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> currentTime = millis();</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">if</span> (button != debounceButton)</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; lastDebounce = currentTime;</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; debounceButton = button;</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">if</span> ((currentTime - lastDebounce) &lt; DEBOUNCE_DELAY)</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; button = prevButton;</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="comment">// Process the button event if the state has changed.</span></div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">if</span> (prevButton == LCD_BUTTON_NONE &amp;&amp; button != LCD_BUTTON_NONE) {</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; prevButton = button;</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">if</span> (screenSaved) {</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="comment">// Button pressed when screen saver active.</span></div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">if</span> (mode == <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35" title="Same as BacklightOff but the screen saver is only deactivated when Select is pressed; other buttons h...">BacklightOnSelect</a>) {</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="comment">// Turn on the back light only if Select was pressed.</span></div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">if</span> (button == LCD_BUTTON_SELECT) {</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; pinMode(_backlightPin, OUTPUT);</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; digitalWrite(_backlightPin, HIGH);</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; screenSaved = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; backlightInit = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (mode == <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f" title="Turn off both the display and the backlight when the screen saver is activated.">DisplayOff</a>) {</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display</a>();</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; eatRelease = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">return</span> LCD_BUTTON_NONE;</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display</a>();</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (mode == <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35" title="Same as BacklightOff but the screen saver is only deactivated when Select is pressed; other buttons h...">BacklightOnSelect</a> &amp;&amp; button != LCD_BUTTON_SELECT) {</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; eatRelease = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">return</span> button;</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; eatRelease = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; lastRestore = currentTime;</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">return</span> button;</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (prevButton != LCD_BUTTON_NONE &amp;&amp; button == LCD_BUTTON_NONE) {</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; button = -prevButton;</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; prevButton = LCD_BUTTON_NONE;</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; lastRestore = currentTime;</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">if</span> (eatRelease) {</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; eatRelease = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">return</span> LCD_BUTTON_NONE;</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">return</span> button;</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (!screenSaved &amp;&amp; prevButton == LCD_BUTTON_NONE &amp;&amp;</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; timeout != 0 &amp;&amp; (currentTime - lastRestore) &gt;= timeout)</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108" title="Turns off the display of text on the LCD and the back light.">noDisplay</a>(); <span class="comment">// Activate screen saver.</span></div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> LCD_BUTTON_NONE;</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: LCD.h Source File</title> <title>ArduinoLibs: LCD.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,109 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">LCD.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef LCD_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define LCD_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="comment">// Extended version of the LiquidCrystal library that works specifically</span>
<a name="l00027"></a>00027 <span class="comment">// with Freetronics&#39; 16x2 LCD display, including support for the back</span>
<a name="l00028"></a>00028 <span class="comment">// light and the Up/Down/Left/Right/Select buttons. More info:</span>
<a name="l00029"></a>00029 <span class="comment">//</span>
<a name="l00030"></a>00030 <span class="comment">// http://www.freetronics.com/pages/16x2-lcd-shield-quickstart-guide</span>
<a name="l00031"></a>00031
<a name="l00032"></a>00032 <span class="comment">// Include a copy of the standard LiquidCrystal library so we can extend it.</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include &quot;utility/LiquidCrystal.h&quot;</span>
<a name="l00034"></a>00034
<a name="l00035"></a>00035 <span class="comment">// Button event codes.</span>
<a name="l00036"></a>00036 <span class="preprocessor">#define LCD_BUTTON_NONE 0</span>
<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_LEFT 1</span>
<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_RIGHT 2</span>
<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_UP 3</span>
<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_DOWN 4</span>
<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_SELECT 5</span>
<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_LEFT_RELEASED -1</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_RIGHT_RELEASED -2</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_UP_RELEASED -3</span>
<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_DOWN_RELEASED -4</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_SELECT_RELEASED -5</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span>
<a name="l00048"></a><a class="code" href="classLCD.html">00048</a> <span class="keyword">class </span><a class="code" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> : <span class="keyword">public</span> LiquidCrystal {
<a name="l00049"></a>00049 <span class="keyword">public</span>:
<a name="l00050"></a><a class="code" href="classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8">00050</a> <a class="code" href="classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8" title="Initialize the Freetronics LCD display with the default pin assignment.">LCD</a>() : LiquidCrystal(8, 9, 4, 5, 6, 7) { init(); }
<a name="l00051"></a><a class="code" href="classLCD.html#a067bc741cf27f143aba5d9f147908401">00051</a> <a class="code" href="classLCD.html#a067bc741cf27f143aba5d9f147908401" title="Initialize the Freetronics LCD display for USBDroid.">LCD</a>(uint8_t pin9) : LiquidCrystal(8, pin9, 4, 5, 6, 7) { init(); }
<a name="l00052"></a>00052
<a name="l00053"></a><a class="code" href="classLCD.html#a171f59ba80e7775ebd3a399f56482a9c">00053</a> uint8_t <a class="code" href="classLCD.html#a171f59ba80e7775ebd3a399f56482a9c" title="Returns the pin that is being used to control the back light. The default is 3.">backlightPin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _backlightPin; }
<a name="l00054"></a>00054 <span class="keywordtype">void</span> <a class="code" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8" title="Sets the back light pin for the LCD shield.">setBacklightPin</a>(uint8_t pin);
<a name="l00055"></a>00055
<a name="l00056"></a>00056 <span class="keywordtype">void</span> <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display</a>();
<a name="l00057"></a>00057 <span class="keywordtype">void</span> <a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108" title="Turns off the display of text on the LCD and the back light.">noDisplay</a>();
<a name="l00058"></a>00058
<a name="l00059"></a><a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">00059</a> <span class="keyword">enum</span> <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28" title="Screen saver mode that controls the display and back light.">ScreenSaverMode</a>
<a name="l00060"></a>00060 {
<a name="l00061"></a><a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f">00061</a> <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f" title="Turn off both the display and the backlight when the screen saver is activated.">DisplayOff</a>,
<a name="l00062"></a><a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c">00062</a> <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c" title="Turn off the back light but leave the display on when the screen saver is activated.">BacklightOff</a>,
<a name="l00063"></a><a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35">00063</a> <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35" title="Same as BacklightOff but the screen saver is only deactivated when Select is pressed; other buttons h...">BacklightOnSelect</a>
<a name="l00064"></a>00064 };
<a name="l00065"></a>00065
<a name="l00066"></a><a class="code" href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8">00066</a> <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28" title="Screen saver mode that controls the display and back light.">ScreenSaverMode</a> <a class="code" href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8" title="Returns the current screen saver mode; default is DisplayOff.">screenSaverMode</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mode; }
<a name="l00067"></a>00067 <span class="keywordtype">void</span> <a class="code" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801" title="Sets the current screen saver mode.">setScreenSaverMode</a>(<a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28" title="Screen saver mode that controls the display and back light.">ScreenSaverMode</a> mode);
<a name="l00068"></a>00068
<a name="l00069"></a>00069 <span class="keywordtype">void</span> <a class="code" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver</a>(<span class="keywordtype">int</span> timeoutSecs = 10);
<a name="l00070"></a>00070 <span class="keywordtype">void</span> <a class="code" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e" title="Disables the screen saver.">disableScreenSaver</a>();
<a name="l00071"></a><a class="code" href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e">00071</a> <span class="keywordtype">bool</span> <a class="code" href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e" title="Returns true if the screen has been saved; false otherwise.">isScreenSaved</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> screenSaved; }
<a name="l00072"></a>00072
<a name="l00073"></a>00073 <span class="keywordtype">int</span> <a class="code" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">getButton</a>();
<a name="l00074"></a>00074
<a name="l00075"></a>00075 <span class="keyword">private</span>:
<a name="l00076"></a>00076 uint8_t _backlightPin;
<a name="l00077"></a>00077 <span class="keywordtype">bool</span> backlightInit;
<a name="l00078"></a>00078 <span class="keywordtype">int</span> prevButton;
<a name="l00079"></a>00079 <span class="keywordtype">int</span> debounceButton;
<a name="l00080"></a>00080 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> timeout;
<a name="l00081"></a>00081 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> lastRestore;
<a name="l00082"></a>00082 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> lastDebounce;
<a name="l00083"></a>00083 <span class="keywordtype">bool</span> screenSaved;
<a name="l00084"></a>00084 <span class="keywordtype">bool</span> eatRelease;
<a name="l00085"></a>00085 <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28" title="Screen saver mode that controls the display and back light.">ScreenSaverMode</a> mode;
<a name="l00086"></a>00086
<a name="l00087"></a>00087 <span class="keywordtype">void</span> init();
<a name="l00088"></a>00088 };
<a name="l00089"></a>00089
<a name="l00090"></a>00090 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -166,8 +77,112 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">LCD.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef LCD_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LCD_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// Extended version of the LiquidCrystal library that works specifically</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// with Freetronics&#39; 16x2 LCD display, including support for the back</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// light and the Up/Down/Left/Right/Select buttons. More info:</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">// http://www.freetronics.com/pages/16x2-lcd-shield-quickstart-guide</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">// Include a copy of the standard LiquidCrystal library so we can extend it.</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;utility/LiquidCrystal.h&quot;</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="comment">// Button event codes.</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#define LCD_BUTTON_NONE 0</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_LEFT 1</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_RIGHT 2</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_UP 3</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_DOWN 4</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_SELECT 5</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_LEFT_RELEASED -1</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_RIGHT_RELEASED -2</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_UP_RELEASED -3</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_DOWN_RELEASED -4</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LCD_BUTTON_SELECT_RELEASED -5</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="classLCD.html"> 48</a></span>&#160;<span class="keyword">class </span><a class="code" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> : <span class="keyword">public</span> LiquidCrystal {</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8"> 50</a></span>&#160; <a class="code" href="classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8" title="Initialize the Freetronics LCD display with the default pin assignment.">LCD</a>() : LiquidCrystal(8, 9, 4, 5, 6, 7) { init(); }</div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="classLCD.html#a067bc741cf27f143aba5d9f147908401"> 51</a></span>&#160; <a class="code" href="classLCD.html#a067bc741cf27f143aba5d9f147908401" title="Initialize the Freetronics LCD display for USBDroid.">LCD</a>(uint8_t pin9) : LiquidCrystal(8, pin9, 4, 5, 6, 7) { init(); }</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="classLCD.html#a171f59ba80e7775ebd3a399f56482a9c"> 53</a></span>&#160; uint8_t <a class="code" href="classLCD.html#a171f59ba80e7775ebd3a399f56482a9c" title="Returns the pin that is being used to control the back light. The default is 3.">backlightPin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _backlightPin; }</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8" title="Sets the back light pin for the LCD shield.">setBacklightPin</a>(uint8_t pin);</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display</a>();</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108" title="Turns off the display of text on the LCD and the back light.">noDisplay</a>();</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"><a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28"> 59</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28" title="Screen saver mode that controls the display and back light.">ScreenSaverMode</a></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f"> 61</a></span>&#160; <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f" title="Turn off both the display and the backlight when the screen saver is activated.">DisplayOff</a>,</div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c"> 62</a></span>&#160; <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c" title="Turn off the back light but leave the display on when the screen saver is activated.">BacklightOff</a>,</div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35"> 63</a></span>&#160; <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35" title="Same as BacklightOff but the screen saver is only deactivated when Select is pressed; other buttons h...">BacklightOnSelect</a></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"> 65</span>&#160;</div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8"> 66</a></span>&#160; <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28" title="Screen saver mode that controls the display and back light.">ScreenSaverMode</a> <a class="code" href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8" title="Returns the current screen saver mode; default is DisplayOff.">screenSaverMode</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mode; }</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801" title="Sets the current screen saver mode.">setScreenSaverMode</a>(<a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28" title="Screen saver mode that controls the display and back light.">ScreenSaverMode</a> mode);</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver</a>(<span class="keywordtype">int</span> timeoutSecs = 10);</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e" title="Disables the screen saver.">disableScreenSaver</a>();</div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e"> 71</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e" title="Returns true if the screen has been saved; false otherwise.">isScreenSaved</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> screenSaved; }</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"> 73</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">getButton</a>();</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; uint8_t _backlightPin;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordtype">bool</span> backlightInit;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">int</span> prevButton;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">int</span> debounceButton;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> timeout;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> lastRestore;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> lastDebounce;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">bool</span> screenSaved;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">bool</span> eatRelease;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28" title="Screen saver mode that controls the display and back light.">ScreenSaverMode</a> mode;</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; <span class="keywordtype">void</span> init();</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"> 90</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: ListField.cpp Source File</title> <title>ArduinoLibs: ListField.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,137 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">ListField.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;ListField.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;string.h&gt;</span>
<a name="l00025"></a>00025
<a name="l00064"></a><a class="code" href="classListField.html#a118501da7edb0b0bc6b493734975b4e9">00064</a> <a class="code" href="classListField.html#a118501da7edb0b0bc6b493734975b4e9" title="Constructs a new list field with a specific label.">ListField::ListField</a>(<span class="keyword">const</span> String &amp;label)
<a name="l00065"></a>00065 : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(label)
<a name="l00066"></a>00066 , _items(0)
<a name="l00067"></a>00067 , _itemCount(0)
<a name="l00068"></a>00068 , _value(-1)
<a name="l00069"></a>00069 , _printLen(0)
<a name="l00070"></a>00070 {
<a name="l00071"></a>00071 }
<a name="l00072"></a>00072
<a name="l00077"></a><a class="code" href="classListField.html#aa303898a1f74b52c1c4982653de488b7">00077</a> <a class="code" href="classListField.html#a118501da7edb0b0bc6b493734975b4e9" title="Constructs a new list field with a specific label.">ListField::ListField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label, ListItems items, <span class="keywordtype">int</span> value)
<a name="l00078"></a>00078 : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(form, label)
<a name="l00079"></a>00079 , _items(0)
<a name="l00080"></a>00080 , _itemCount(0)
<a name="l00081"></a>00081 , _value(value)
<a name="l00082"></a>00082 , _printLen(0)
<a name="l00083"></a>00083 {
<a name="l00084"></a>00084 <a class="code" href="classListField.html#ae6709bce9355451b651893691456704e" title="Sets the array of items for this list.">setItems</a>(items);
<a name="l00085"></a>00085 }
<a name="l00086"></a>00086
<a name="l00087"></a><a class="code" href="classListField.html#a5d752bd561cde735b175bcdfda55832a">00087</a> <span class="keywordtype">int</span> <a class="code" href="classListField.html#a5d752bd561cde735b175bcdfda55832a" title="Dispatches event via this field.">ListField::dispatch</a>(<span class="keywordtype">int</span> event)
<a name="l00088"></a>00088 {
<a name="l00089"></a>00089 <span class="keywordflow">if</span> (event == LCD_BUTTON_DOWN) {
<a name="l00090"></a>00090 <span class="keywordflow">if</span> (_value &gt;= (_itemCount - 1))
<a name="l00091"></a>00091 <a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24" title="Sets the value of this list; i.e. the index within items() of the selected item.">setValue</a>(0);
<a name="l00092"></a>00092 <span class="keywordflow">else</span>
<a name="l00093"></a>00093 <a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24" title="Sets the value of this list; i.e. the index within items() of the selected item.">setValue</a>(_value + 1);
<a name="l00094"></a>00094 <span class="keywordflow">return</span> FORM_CHANGED;
<a name="l00095"></a>00095 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == LCD_BUTTON_UP) {
<a name="l00096"></a>00096 <span class="keywordflow">if</span> (_value &lt;= 0)
<a name="l00097"></a>00097 <a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24" title="Sets the value of this list; i.e. the index within items() of the selected item.">setValue</a>(_itemCount - 1);
<a name="l00098"></a>00098 <span class="keywordflow">else</span>
<a name="l00099"></a>00099 <a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24" title="Sets the value of this list; i.e. the index within items() of the selected item.">setValue</a>(_value - 1);
<a name="l00100"></a>00100 <span class="keywordflow">return</span> FORM_CHANGED;
<a name="l00101"></a>00101 }
<a name="l00102"></a>00102 <span class="keywordflow">return</span> -1;
<a name="l00103"></a>00103 }
<a name="l00104"></a>00104
<a name="l00105"></a><a class="code" href="classListField.html#a191b79b460e45cf48e04b04eface2888">00105</a> <span class="keywordtype">void</span> <a class="code" href="classListField.html#a191b79b460e45cf48e04b04eface2888" title="Enters the field due to form navigation.">ListField::enterField</a>(<span class="keywordtype">bool</span> reverse)
<a name="l00106"></a>00106 {
<a name="l00107"></a>00107 <a class="code" href="classListField.html#a191b79b460e45cf48e04b04eface2888" title="Enters the field due to form navigation.">Field::enterField</a>(reverse);
<a name="l00108"></a>00108 _printLen = 0;
<a name="l00109"></a>00109 printValue();
<a name="l00110"></a>00110 }
<a name="l00111"></a>00111
<a name="l00141"></a><a class="code" href="classListField.html#ae6709bce9355451b651893691456704e">00141</a> <span class="keywordtype">void</span> <a class="code" href="classListField.html#ae6709bce9355451b651893691456704e" title="Sets the array of items for this list.">ListField::setItems</a>(ListItems items)
<a name="l00142"></a>00142 {
<a name="l00143"></a>00143 _items = <a class="code" href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0" title="Returns the array of items in this list.">items</a>;
<a name="l00144"></a>00144 _itemCount = 0;
<a name="l00145"></a>00145 <span class="keywordflow">if</span> (items) {
<a name="l00146"></a>00146 <span class="keywordflow">for</span> (;;) {
<a name="l00147"></a>00147 ListItem item = (ListItem)pgm_read_word(items);
<a name="l00148"></a>00148 <span class="keywordflow">if</span> (!item)
<a name="l00149"></a>00149 <span class="keywordflow">break</span>;
<a name="l00150"></a>00150 ++<a class="code" href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0" title="Returns the array of items in this list.">items</a>;
<a name="l00151"></a>00151 ++_itemCount;
<a name="l00152"></a>00152 }
<a name="l00153"></a>00153 }
<a name="l00154"></a>00154 <span class="keywordflow">if</span> (_value &gt;= _itemCount)
<a name="l00155"></a>00155 _value = _itemCount - 1;
<a name="l00156"></a>00156 <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())
<a name="l00157"></a>00157 printValue();
<a name="l00158"></a>00158 }
<a name="l00159"></a>00159
<a name="l00178"></a><a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24">00178</a> <span class="keywordtype">void</span> <a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24" title="Sets the value of this list; i.e. the index within items() of the selected item.">ListField::setValue</a>(<span class="keywordtype">int</span> value)
<a name="l00179"></a>00179 {
<a name="l00180"></a>00180 <span class="keywordflow">if</span> (_value != value) {
<a name="l00181"></a>00181 _value = <a class="code" href="classListField.html#aab8477757cd89bacd242c85bac2dccb1" title="Returns the value of this list; i.e. the index within items() of the selected item.">value</a>;
<a name="l00182"></a>00182 <span class="keywordflow">if</span> (_value &lt; 0)
<a name="l00183"></a>00183 _value = 0;
<a name="l00184"></a>00184 <span class="keywordflow">if</span> (_value &gt;= _itemCount)
<a name="l00185"></a>00185 _value = _itemCount - 1;
<a name="l00186"></a>00186 <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())
<a name="l00187"></a>00187 printValue();
<a name="l00188"></a>00188 }
<a name="l00189"></a>00189 }
<a name="l00190"></a>00190
<a name="l00191"></a>00191 <span class="keywordtype">void</span> ListField::printValue()
<a name="l00192"></a>00192 {
<a name="l00193"></a>00193 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(0, 1);
<a name="l00194"></a>00194 <span class="keywordtype">int</span> len = 0;
<a name="l00195"></a>00195 <span class="keywordflow">if</span> (_value &gt;= 0) {
<a name="l00196"></a>00196 ListItem str = (ListItem)pgm_read_word(&amp;(_items[_value]));
<a name="l00197"></a>00197 <span class="keywordtype">char</span> ch;
<a name="l00198"></a>00198 <span class="keywordflow">while</span> ((ch = pgm_read_byte(str)) != 0) {
<a name="l00199"></a>00199 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(ch);
<a name="l00200"></a>00200 ++len;
<a name="l00201"></a>00201 ++str;
<a name="l00202"></a>00202 }
<a name="l00203"></a>00203 }
<a name="l00204"></a>00204 <span class="keywordflow">while</span> (_printLen-- &gt; len)
<a name="l00205"></a>00205 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39; &#39;</span>);
<a name="l00206"></a>00206 _printLen = len;
<a name="l00207"></a>00207 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -194,8 +77,140 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ListField.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;ListField.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="classListField.html#a118501da7edb0b0bc6b493734975b4e9"> 64</a></span>&#160;<a class="code" href="classListField.html#a118501da7edb0b0bc6b493734975b4e9" title="Constructs a new list field with a specific label.">ListField::ListField</a>(<span class="keyword">const</span> String &amp;label)</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(label)</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; , _items(0)</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; , _itemCount(0)</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; , _value(-1)</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; , _printLen(0)</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</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="l00077"></a><span class="lineno"><a class="code" href="classListField.html#aa303898a1f74b52c1c4982653de488b7"> 77</a></span>&#160;<a class="code" href="classListField.html#a118501da7edb0b0bc6b493734975b4e9" title="Constructs a new list field with a specific label.">ListField::ListField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label, ListItems items, <span class="keywordtype">int</span> value)</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(form, label)</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; , _items(0)</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; , _itemCount(0)</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; , _value(value)</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; , _printLen(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; <a class="code" href="classListField.html#ae6709bce9355451b651893691456704e" title="Sets the array of items for this list.">setItems</a>(items);</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"> 86</span>&#160;</div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="classListField.html#a5d752bd561cde735b175bcdfda55832a"> 87</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classListField.html#a5d752bd561cde735b175bcdfda55832a" title="Dispatches event via this field.">ListField::dispatch</a>(<span class="keywordtype">int</span> event)</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; <span class="keywordflow">if</span> (event == LCD_BUTTON_DOWN) {</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">if</span> (_value &gt;= (_itemCount - 1))</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24" title="Sets the value of this list; i.e. the index within items() of the selected item.">setValue</a>(0);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24" title="Sets the value of this list; i.e. the index within items() of the selected item.">setValue</a>(_value + 1);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> FORM_CHANGED;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == LCD_BUTTON_UP) {</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span> (_value &lt;= 0)</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24" title="Sets the value of this list; i.e. the index within items() of the selected item.">setValue</a>(_itemCount - 1);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24" title="Sets the value of this list; i.e. the index within items() of the selected item.">setValue</a>(_value - 1);</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> FORM_CHANGED;</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="keywordflow">return</span> -1;</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"><a class="code" href="classListField.html#a191b79b460e45cf48e04b04eface2888"> 105</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classListField.html#a191b79b460e45cf48e04b04eface2888" title="Enters the field due to form navigation.">ListField::enterField</a>(<span class="keywordtype">bool</span> reverse)</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; <a class="code" href="classListField.html#a191b79b460e45cf48e04b04eface2888" title="Enters the field due to form navigation.">Field::enterField</a>(reverse);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; _printLen = 0;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; printValue();</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;</div>
<div class="line"><a name="l00141"></a><span class="lineno"><a class="code" href="classListField.html#ae6709bce9355451b651893691456704e"> 141</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classListField.html#ae6709bce9355451b651893691456704e" title="Sets the array of items for this list.">ListField::setItems</a>(ListItems items)</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; _items = <a class="code" href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0" title="Returns the array of items in this list.">items</a>;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; _itemCount = 0;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span> (items) {</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">for</span> (;;) {</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; ListItem item = (ListItem)pgm_read_word(items);</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span> (!item)</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; ++<a class="code" href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0" title="Returns the array of items in this list.">items</a>;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; ++_itemCount;</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; }</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">if</span> (_value &gt;= _itemCount)</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; _value = _itemCount - 1;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; printValue();</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;}</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00178"></a><span class="lineno"><a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24"> 178</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24" title="Sets the value of this list; i.e. the index within items() of the selected item.">ListField::setValue</a>(<span class="keywordtype">int</span> value)</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; <span class="keywordflow">if</span> (_value != value) {</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; _value = <a class="code" href="classListField.html#aab8477757cd89bacd242c85bac2dccb1" title="Returns the value of this list; i.e. the index within items() of the selected item.">value</a>;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span> (_value &lt; 0)</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; _value = 0;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (_value &gt;= _itemCount)</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; _value = _itemCount - 1;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; printValue();</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</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;</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="keywordtype">void</span> ListField::printValue()</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; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(0, 1);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordtype">int</span> len = 0;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (_value &gt;= 0) {</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; ListItem str = (ListItem)pgm_read_word(&amp;(_items[_value]));</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">char</span> ch;</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">while</span> ((ch = pgm_read_byte(str)) != 0) {</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(ch);</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; ++len;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; ++str;</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; }</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">while</span> (_printLen-- &gt; len)</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39; &#39;</span>);</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; _printLen = len;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: ListField.h Source File</title> <title>ArduinoLibs: ListField.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,75 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">ListField.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef ListField_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define ListField_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;Field.h&quot;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span>
<a name="l00028"></a>00028
<a name="l00029"></a>00029 <span class="keyword">typedef</span> <span class="keyword">const</span> prog_char *ListItem;
<a name="l00030"></a>00030 <span class="keyword">typedef</span> <span class="keyword">const</span> PROGMEM ListItem *ListItems;
<a name="l00031"></a>00031
<a name="l00032"></a><a class="code" href="classListField.html">00032</a> <span class="keyword">class </span><a class="code" href="classListField.html" title="Field that manages selection from a static list of items.">ListField</a> : <span class="keyword">public</span> <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> {
<a name="l00033"></a>00033 <span class="keyword">public</span>:
<a name="l00034"></a>00034 <span class="keyword">explicit</span> <a class="code" href="classListField.html#a118501da7edb0b0bc6b493734975b4e9" title="Constructs a new list field with a specific label.">ListField</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>);
<a name="l00035"></a>00035 <a class="code" href="classListField.html#a118501da7edb0b0bc6b493734975b4e9" title="Constructs a new list field with a specific label.">ListField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5" title="Returns the Form that owns this field; null if not associated with a Form.">form</a>, <span class="keyword">const</span> String &amp;label, ListItems <a class="code" href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0" title="Returns the array of items in this list.">items</a>, <span class="keywordtype">int</span> <a class="code" href="classListField.html#aab8477757cd89bacd242c85bac2dccb1" title="Returns the value of this list; i.e. the index within items() of the selected item.">value</a> = 0);
<a name="l00036"></a>00036
<a name="l00037"></a>00037 <span class="keywordtype">int</span> <a class="code" href="classListField.html#a5d752bd561cde735b175bcdfda55832a" title="Dispatches event via this field.">dispatch</a>(<span class="keywordtype">int</span> event);
<a name="l00038"></a>00038
<a name="l00039"></a>00039 <span class="keywordtype">void</span> <a class="code" href="classListField.html#a191b79b460e45cf48e04b04eface2888" title="Enters the field due to form navigation.">enterField</a>(<span class="keywordtype">bool</span> reverse);
<a name="l00040"></a>00040
<a name="l00041"></a><a class="code" href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0">00041</a> ListItems <a class="code" href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0" title="Returns the array of items in this list.">items</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _items; }
<a name="l00042"></a>00042 <span class="keywordtype">void</span> <a class="code" href="classListField.html#ae6709bce9355451b651893691456704e" title="Sets the array of items for this list.">setItems</a>(ListItems items);
<a name="l00043"></a>00043
<a name="l00044"></a><a class="code" href="classListField.html#aab8477757cd89bacd242c85bac2dccb1">00044</a> <span class="keywordtype">int</span> <a class="code" href="classListField.html#aab8477757cd89bacd242c85bac2dccb1" title="Returns the value of this list; i.e. the index within items() of the selected item.">value</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _value; }
<a name="l00045"></a>00045 <span class="keywordtype">void</span> <a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24" title="Sets the value of this list; i.e. the index within items() of the selected item.">setValue</a>(<span class="keywordtype">int</span> <a class="code" href="classListField.html#aab8477757cd89bacd242c85bac2dccb1" title="Returns the value of this list; i.e. the index within items() of the selected item.">value</a>);
<a name="l00046"></a>00046
<a name="l00047"></a>00047 <span class="keyword">private</span>:
<a name="l00048"></a>00048 ListItems _items;
<a name="l00049"></a>00049 <span class="keywordtype">int</span> _itemCount;
<a name="l00050"></a>00050 <span class="keywordtype">int</span> _value;
<a name="l00051"></a>00051 <span class="keywordtype">int</span> _printLen;
<a name="l00052"></a>00052
<a name="l00053"></a>00053 <span class="keywordtype">void</span> printValue();
<a name="l00054"></a>00054 };
<a name="l00055"></a>00055
<a name="l00056"></a>00056 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -132,8 +77,78 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ListField.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef ListField_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ListField_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;Field.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">typedef</span> PGM_P ListItem;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">typedef</span> <span class="keyword">const</span> PROGMEM ListItem *ListItems;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="classListField.html"> 32</a></span>&#160;<span class="keyword">class </span><a class="code" href="classListField.html" title="Field that manages selection from a static list of items.">ListField</a> : <span class="keyword">public</span> <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> {</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classListField.html#a118501da7edb0b0bc6b493734975b4e9" title="Constructs a new list field with a specific label.">ListField</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="classListField.html#a118501da7edb0b0bc6b493734975b4e9" title="Constructs a new list field with a specific label.">ListField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5" title="Returns the Form that owns this field; null if not associated with a Form.">form</a>, <span class="keyword">const</span> String &amp;label, ListItems <a class="code" href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0" title="Returns the array of items in this list.">items</a>, <span class="keywordtype">int</span> <a class="code" href="classListField.html#aab8477757cd89bacd242c85bac2dccb1" title="Returns the value of this list; i.e. the index within items() of the selected item.">value</a> = 0);</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="keywordtype">int</span> <a class="code" href="classListField.html#a5d752bd561cde735b175bcdfda55832a" title="Dispatches event via this field.">dispatch</a>(<span class="keywordtype">int</span> event);</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classListField.html#a191b79b460e45cf48e04b04eface2888" title="Enters the field due to form navigation.">enterField</a>(<span class="keywordtype">bool</span> reverse);</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"><a class="code" href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0"> 41</a></span>&#160; ListItems <a class="code" href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0" title="Returns the array of items in this list.">items</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _items; }</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classListField.html#ae6709bce9355451b651893691456704e" title="Sets the array of items for this list.">setItems</a>(ListItems items);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classListField.html#aab8477757cd89bacd242c85bac2dccb1"> 44</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classListField.html#aab8477757cd89bacd242c85bac2dccb1" title="Returns the value of this list; i.e. the index within items() of the selected item.">value</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _value; }</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24" title="Sets the value of this list; i.e. the index within items() of the selected item.">setValue</a>(<span class="keywordtype">int</span> <a class="code" href="classListField.html#aab8477757cd89bacd242c85bac2dccb1" title="Returns the value of this list; i.e. the index within items() of the selected item.">value</a>);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; ListItems _items;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">int</span> _itemCount;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">int</span> _value;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">int</span> _printLen;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">void</span> printValue();</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;};</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Melody.cpp Source File</title> <title>ArduinoLibs: Melody.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,136 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">Melody.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;Melody.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#else</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#endif</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span>
<a name="l00085"></a><a class="code" href="classMelody.html#a9edc4165a49368dd5d78eedf982c38b9">00085</a> <a class="code" href="classMelody.html#a9edc4165a49368dd5d78eedf982c38b9" title="Constructs a new melody playing object for pin.">Melody::Melody</a>(uint8_t pin)
<a name="l00086"></a>00086 : _pin(pin)
<a name="l00087"></a>00087 , playing(false)
<a name="l00088"></a>00088 , _loopCount(0)
<a name="l00089"></a>00089 , loopsLeft(0)
<a name="l00090"></a>00090 , notes(0)
<a name="l00091"></a>00091 , lengths(0)
<a name="l00092"></a>00092 , size(0)
<a name="l00093"></a>00093 , posn(0)
<a name="l00094"></a>00094 , duration(0)
<a name="l00095"></a>00095 , startNote(0)
<a name="l00096"></a>00096 {
<a name="l00097"></a>00097 }
<a name="l00098"></a>00098
<a name="l00131"></a><a class="code" href="classMelody.html#ae88ad06c2acb728f56dd213d5dad6006">00131</a> <span class="keywordtype">void</span> <a class="code" href="classMelody.html#ae88ad06c2acb728f56dd213d5dad6006" title="Sets the maximum number of loops to last no longer than ms milliseconds.">Melody::setLoopDuration</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ms)
<a name="l00132"></a>00132 {
<a name="l00133"></a>00133 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> duration = 0;
<a name="l00134"></a>00134 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0; index &lt; size; ++index)
<a name="l00135"></a>00135 duration += (1000 / lengths[index]) * 13 / 10;
<a name="l00136"></a>00136 _loopCount = (int)(ms / duration);
<a name="l00137"></a>00137 <span class="keywordflow">if</span> (!_loopCount)
<a name="l00138"></a>00138 _loopCount = 1; <span class="comment">// Play the melody at least once.</span>
<a name="l00139"></a>00139 }
<a name="l00140"></a>00140
<a name="l00146"></a><a class="code" href="classMelody.html#a9fd8e0d48833d8da3cd3b3b58408b0b5">00146</a> <span class="keywordtype">void</span> <a class="code" href="classMelody.html#a9fd8e0d48833d8da3cd3b3b58408b0b5" title="Starts playing the melody, or restarts it if already playing.">Melody::play</a>()
<a name="l00147"></a>00147 {
<a name="l00148"></a>00148 <a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b" title="Stops playing the melody.">stop</a>();
<a name="l00149"></a>00149 <span class="keywordflow">if</span> (size == 0)
<a name="l00150"></a>00150 <span class="keywordflow">return</span>; <span class="comment">// No melody to play.</span>
<a name="l00151"></a>00151 loopsLeft = _loopCount;
<a name="l00152"></a>00152 posn = 0;
<a name="l00153"></a>00153 playing = <span class="keyword">true</span>;
<a name="l00154"></a>00154 nextNote();
<a name="l00155"></a>00155 }
<a name="l00156"></a>00156
<a name="l00162"></a><a class="code" href="classMelody.html#aecc9185c9cb1246e8a55521b17d72932">00162</a> <span class="keywordtype">void</span> <a class="code" href="classMelody.html#aecc9185c9cb1246e8a55521b17d72932" title="Plays the melody once and then stops.">Melody::playOnce</a>()
<a name="l00163"></a>00163 {
<a name="l00164"></a>00164 <a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b" title="Stops playing the melody.">stop</a>();
<a name="l00165"></a>00165 <span class="keywordflow">if</span> (size == 0)
<a name="l00166"></a>00166 <span class="keywordflow">return</span>; <span class="comment">// No melody to play.</span>
<a name="l00167"></a>00167 loopsLeft = 1;
<a name="l00168"></a>00168 posn = 0;
<a name="l00169"></a>00169 playing = <span class="keyword">true</span>;
<a name="l00170"></a>00170 nextNote();
<a name="l00171"></a>00171 }
<a name="l00172"></a>00172
<a name="l00178"></a><a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b">00178</a> <span class="keywordtype">void</span> <a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b" title="Stops playing the melody.">Melody::stop</a>()
<a name="l00179"></a>00179 {
<a name="l00180"></a>00180 <span class="keywordflow">if</span> (!playing)
<a name="l00181"></a>00181 <span class="keywordflow">return</span>;
<a name="l00182"></a>00182 playing = <span class="keyword">false</span>;
<a name="l00183"></a>00183 noTone(_pin);
<a name="l00184"></a>00184 }
<a name="l00185"></a>00185
<a name="l00199"></a><a class="code" href="classMelody.html#adb6ad8e8cfe8c9a137e470f4e85c7254">00199</a> <span class="keywordtype">void</span> <a class="code" href="classMelody.html#adb6ad8e8cfe8c9a137e470f4e85c7254" title="Sets the melody to the size elements of notes and lengths.">Melody::setMelody</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> *notes, <span class="keyword">const</span> uint8_t *lengths, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size)
<a name="l00200"></a>00200 {
<a name="l00201"></a>00201 <a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b" title="Stops playing the melody.">stop</a>();
<a name="l00202"></a>00202 this-&gt;notes = notes;
<a name="l00203"></a>00203 this-&gt;lengths = lengths;
<a name="l00204"></a>00204 this-&gt;size = size;
<a name="l00205"></a>00205 }
<a name="l00206"></a>00206
<a name="l00214"></a><a class="code" href="classMelody.html#ad1103b970be1f59058cc7d927be68955">00214</a> <span class="keywordtype">void</span> <a class="code" href="classMelody.html#ad1103b970be1f59058cc7d927be68955" title="Runs the melody control loop.">Melody::run</a>()
<a name="l00215"></a>00215 {
<a name="l00216"></a>00216 <span class="keywordflow">if</span> (!playing)
<a name="l00217"></a>00217 <span class="keywordflow">return</span>;
<a name="l00218"></a>00218 <span class="keywordflow">if</span> ((millis() - startNote) &gt;= duration) {
<a name="l00219"></a>00219 noTone(_pin);
<a name="l00220"></a>00220 nextNote();
<a name="l00221"></a>00221 }
<a name="l00222"></a>00222 }
<a name="l00223"></a>00223
<a name="l00224"></a>00224 <span class="keywordtype">void</span> Melody::nextNote()
<a name="l00225"></a>00225 {
<a name="l00226"></a>00226 <span class="keywordflow">if</span> (posn &gt;= size) {
<a name="l00227"></a>00227 <span class="keywordflow">if</span> (loopsLeft != 0 &amp;&amp; --loopsLeft &lt;= 0) {
<a name="l00228"></a>00228 <a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b" title="Stops playing the melody.">stop</a>();
<a name="l00229"></a>00229 <span class="keywordflow">return</span>;
<a name="l00230"></a>00230 }
<a name="l00231"></a>00231 posn = 0;
<a name="l00232"></a>00232 }
<a name="l00233"></a>00233 duration = 1000 / lengths[posn];
<a name="l00234"></a>00234 <span class="keywordflow">if</span> (notes[posn] != NOTE_REST)
<a name="l00235"></a>00235 tone(_pin, notes[posn], duration);
<a name="l00236"></a>00236 ++posn;
<a name="l00237"></a>00237 duration = duration * 13 / 10; <span class="comment">// i.e., duration * 1.3</span>
<a name="l00238"></a>00238 startNote = millis();
<a name="l00239"></a>00239 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -193,8 +77,139 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_be059bf9978ae156837504b1b8a7568c.html">Melody</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Melody.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;Melody.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="classMelody.html#a9edc4165a49368dd5d78eedf982c38b9"> 85</a></span>&#160;<a class="code" href="classMelody.html#a9edc4165a49368dd5d78eedf982c38b9" title="Constructs a new melody playing object for pin.">Melody::Melody</a>(uint8_t pin)</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; : _pin(pin)</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; , playing(false)</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; , _loopCount(0)</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; , loopsLeft(0)</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; , notes(0)</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; , lengths(0)</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; , size(0)</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; , posn(0)</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; , duration(0)</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; , startNote(0)</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;}</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
<div class="line"><a name="l00131"></a><span class="lineno"><a class="code" href="classMelody.html#ae88ad06c2acb728f56dd213d5dad6006"> 131</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classMelody.html#ae88ad06c2acb728f56dd213d5dad6006" title="Sets the maximum number of loops to last no longer than ms milliseconds.">Melody::setLoopDuration</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ms)</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;{</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> duration = 0;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0; index &lt; size; ++index)</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; duration += (1000 / lengths[index]) * 13 / 10;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; _loopCount = (int)(ms / duration);</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (!_loopCount)</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; _loopCount = 1; <span class="comment">// Play the melody at least once.</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;</div>
<div class="line"><a name="l00146"></a><span class="lineno"><a class="code" href="classMelody.html#a9fd8e0d48833d8da3cd3b3b58408b0b5"> 146</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classMelody.html#a9fd8e0d48833d8da3cd3b3b58408b0b5" title="Starts playing the melody, or restarts it if already playing.">Melody::play</a>()</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; <a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b" title="Stops playing the melody.">stop</a>();</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">if</span> (size == 0)</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No melody to play.</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; loopsLeft = _loopCount;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; posn = 0;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; playing = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; nextNote();</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;}</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
<div class="line"><a name="l00162"></a><span class="lineno"><a class="code" href="classMelody.html#aecc9185c9cb1246e8a55521b17d72932"> 162</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classMelody.html#aecc9185c9cb1246e8a55521b17d72932" title="Plays the melody once and then stops.">Melody::playOnce</a>()</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; <a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b" title="Stops playing the melody.">stop</a>();</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span> (size == 0)</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No melody to play.</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; loopsLeft = 1;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; posn = 0;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; playing = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; nextNote();</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;}</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div>
<div class="line"><a name="l00178"></a><span class="lineno"><a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b"> 178</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b" title="Stops playing the melody.">Melody::stop</a>()</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; <span class="keywordflow">if</span> (!playing)</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; playing = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; noTone(_pin);</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;</div>
<div class="line"><a name="l00199"></a><span class="lineno"><a class="code" href="classMelody.html#adb6ad8e8cfe8c9a137e470f4e85c7254"> 199</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classMelody.html#adb6ad8e8cfe8c9a137e470f4e85c7254" title="Sets the melody to the size elements of notes and lengths.">Melody::setMelody</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> *notes, <span class="keyword">const</span> uint8_t *lengths, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size)</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; <a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b" title="Stops playing the melody.">stop</a>();</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; this-&gt;notes = notes;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; this-&gt;lengths = lengths;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; this-&gt;size = size;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;}</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
<div class="line"><a name="l00214"></a><span class="lineno"><a class="code" href="classMelody.html#ad1103b970be1f59058cc7d927be68955"> 214</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classMelody.html#ad1103b970be1f59058cc7d927be68955" title="Runs the melody control loop.">Melody::run</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> (!playing)</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">if</span> ((millis() - startNote) &gt;= duration) {</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; noTone(_pin);</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; nextNote();</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</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;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="keywordtype">void</span> Melody::nextNote()</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;{</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (posn &gt;= size) {</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> (loopsLeft != 0 &amp;&amp; --loopsLeft &lt;= 0) {</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b" title="Stops playing the melody.">stop</a>();</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span>;</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; posn = 0;</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; duration = 1000 / lengths[posn];</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span> (notes[posn] != NOTE_REST)</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; tone(_pin, notes[posn], duration);</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; ++posn;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; duration = duration * 13 / 10; <span class="comment">// i.e., duration * 1.3</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; startNote = millis();</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Melody.h Source File</title> <title>ArduinoLibs: Melody.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,175 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">Melody.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef Melody_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define Melody_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
<a name="l00027"></a>00027
<a name="l00028"></a>00028 <span class="comment">// Note frequencies from http://arduino.cc/en/Tutorial/Tone</span>
<a name="l00029"></a>00029 <span class="preprocessor">#define NOTE_B0 31</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_C1 33</span>
<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS1 35</span>
<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_D1 37</span>
<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS1 39</span>
<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_E1 41</span>
<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_F1 44</span>
<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_FS1 46</span>
<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_G1 49</span>
<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_GS1 52</span>
<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_A1 55</span>
<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_AS1 58</span>
<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_B1 62</span>
<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_C2 65</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS2 69</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_D2 73</span>
<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS2 78</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_E2 82</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_F2 87</span>
<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_FS2 93</span>
<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_G2 98</span>
<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_GS2 104</span>
<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_A2 110</span>
<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_AS2 117</span>
<a name="l00053"></a>00053 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_B2 123</span>
<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_C3 131</span>
<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS3 139</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_D3 147</span>
<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS3 156</span>
<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_E3 165</span>
<a name="l00059"></a>00059 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_F3 175</span>
<a name="l00060"></a>00060 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_FS3 185</span>
<a name="l00061"></a>00061 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_G3 196</span>
<a name="l00062"></a>00062 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_GS3 208</span>
<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_A3 220</span>
<a name="l00064"></a>00064 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_AS3 233</span>
<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_B3 247</span>
<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_C4 262</span>
<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS4 277</span>
<a name="l00068"></a>00068 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_D4 294</span>
<a name="l00069"></a>00069 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS4 311</span>
<a name="l00070"></a>00070 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_E4 330</span>
<a name="l00071"></a>00071 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_F4 349</span>
<a name="l00072"></a>00072 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_FS4 370</span>
<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_G4 392</span>
<a name="l00074"></a>00074 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_GS4 415</span>
<a name="l00075"></a>00075 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_A4 440</span>
<a name="l00076"></a>00076 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_AS4 466</span>
<a name="l00077"></a>00077 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_B4 494</span>
<a name="l00078"></a>00078 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_C5 523</span>
<a name="l00079"></a>00079 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS5 554</span>
<a name="l00080"></a>00080 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_D5 587</span>
<a name="l00081"></a>00081 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS5 622</span>
<a name="l00082"></a>00082 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_E5 659</span>
<a name="l00083"></a>00083 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_F5 698</span>
<a name="l00084"></a>00084 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_FS5 740</span>
<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_G5 784</span>
<a name="l00086"></a>00086 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_GS5 831</span>
<a name="l00087"></a>00087 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_A5 880</span>
<a name="l00088"></a>00088 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_AS5 932</span>
<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_B5 988</span>
<a name="l00090"></a>00090 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_C6 1047</span>
<a name="l00091"></a>00091 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS6 1109</span>
<a name="l00092"></a>00092 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_D6 1175</span>
<a name="l00093"></a>00093 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS6 1245</span>
<a name="l00094"></a>00094 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_E6 1319</span>
<a name="l00095"></a>00095 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_F6 1397</span>
<a name="l00096"></a>00096 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_FS6 1480</span>
<a name="l00097"></a>00097 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_G6 1568</span>
<a name="l00098"></a>00098 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_GS6 1661</span>
<a name="l00099"></a>00099 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_A6 1760</span>
<a name="l00100"></a>00100 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_AS6 1865</span>
<a name="l00101"></a>00101 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_B6 1976</span>
<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_C7 2093</span>
<a name="l00103"></a>00103 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS7 2217</span>
<a name="l00104"></a>00104 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_D7 2349</span>
<a name="l00105"></a>00105 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS7 2489</span>
<a name="l00106"></a>00106 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_E7 2637</span>
<a name="l00107"></a>00107 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_F7 2794</span>
<a name="l00108"></a>00108 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_FS7 2960</span>
<a name="l00109"></a>00109 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_G7 3136</span>
<a name="l00110"></a>00110 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_GS7 3322</span>
<a name="l00111"></a>00111 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_A7 3520</span>
<a name="l00112"></a>00112 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_AS7 3729</span>
<a name="l00113"></a>00113 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_B7 3951</span>
<a name="l00114"></a>00114 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_C8 4186</span>
<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS8 4435</span>
<a name="l00116"></a>00116 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_D8 4699</span>
<a name="l00117"></a>00117 <span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS8 4978</span>
<a name="l00118"></a>00118 <span class="preprocessor"></span>
<a name="l00119"></a>00119 <span class="comment">// Special note value that indicates a rest.</span>
<a name="l00120"></a>00120 <span class="preprocessor">#define NOTE_REST 0</span>
<a name="l00121"></a>00121 <span class="preprocessor"></span>
<a name="l00122"></a><a class="code" href="classMelody.html">00122</a> <span class="keyword">class </span><a class="code" href="classMelody.html" title="Plays a melody on a digital output pin using tone().">Melody</a> {
<a name="l00123"></a>00123 <span class="keyword">public</span>:
<a name="l00124"></a>00124 <a class="code" href="classMelody.html#a9edc4165a49368dd5d78eedf982c38b9" title="Constructs a new melody playing object for pin.">Melody</a>(uint8_t pin);
<a name="l00125"></a>00125
<a name="l00126"></a><a class="code" href="classMelody.html#ad38db3338ed87d72238c0ea9440c633c">00126</a> <span class="keywordtype">bool</span> <a class="code" href="classMelody.html#ad38db3338ed87d72238c0ea9440c633c" title="Returns true if the melody is currently playing; false if not.">isPlaying</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> playing; }
<a name="l00127"></a>00127
<a name="l00128"></a><a class="code" href="classMelody.html#ab78253ae9abc8478b05f415f5d878a60">00128</a> <span class="keywordtype">int</span> <a class="code" href="classMelody.html#ab78253ae9abc8478b05f415f5d878a60" title="Returns the number of times the melody should loop before stopping.">loopCount</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _loopCount; }
<a name="l00129"></a><a class="code" href="classMelody.html#a507097a2e8ff51a5e9157e3a320ae35b">00129</a> <span class="keywordtype">void</span> <a class="code" href="classMelody.html#a507097a2e8ff51a5e9157e3a320ae35b" title="Sets the number of times the melody should loop to count.">setLoopCount</a>(<span class="keywordtype">int</span> count) { _loopCount = count; }
<a name="l00130"></a>00130
<a name="l00131"></a>00131 <span class="keywordtype">void</span> <a class="code" href="classMelody.html#ae88ad06c2acb728f56dd213d5dad6006" title="Sets the maximum number of loops to last no longer than ms milliseconds.">setLoopDuration</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ms);
<a name="l00132"></a>00132
<a name="l00133"></a>00133 <span class="keywordtype">void</span> <a class="code" href="classMelody.html#a9fd8e0d48833d8da3cd3b3b58408b0b5" title="Starts playing the melody, or restarts it if already playing.">play</a>();
<a name="l00134"></a>00134 <span class="keywordtype">void</span> <a class="code" href="classMelody.html#aecc9185c9cb1246e8a55521b17d72932" title="Plays the melody once and then stops.">playOnce</a>();
<a name="l00135"></a>00135 <span class="keywordtype">void</span> <a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b" title="Stops playing the melody.">stop</a>();
<a name="l00136"></a>00136
<a name="l00137"></a>00137 <span class="keywordtype">void</span> <a class="code" href="classMelody.html#adb6ad8e8cfe8c9a137e470f4e85c7254" title="Sets the melody to the size elements of notes and lengths.">setMelody</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> *notes, <span class="keyword">const</span> uint8_t *lengths, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size);
<a name="l00138"></a>00138
<a name="l00139"></a>00139 <span class="keywordtype">void</span> <a class="code" href="classMelody.html#ad1103b970be1f59058cc7d927be68955" title="Runs the melody control loop.">run</a>();
<a name="l00140"></a>00140
<a name="l00141"></a>00141 <span class="keyword">private</span>:
<a name="l00142"></a>00142 uint8_t _pin;
<a name="l00143"></a>00143 <span class="keywordtype">bool</span> playing;
<a name="l00144"></a>00144 <span class="keywordtype">int</span> _loopCount;
<a name="l00145"></a>00145 <span class="keywordtype">int</span> loopsLeft;
<a name="l00146"></a>00146 <span class="keyword">const</span> <span class="keywordtype">int</span> *notes;
<a name="l00147"></a>00147 <span class="keyword">const</span> uint8_t *lengths;
<a name="l00148"></a>00148 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size;
<a name="l00149"></a>00149 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> posn;
<a name="l00150"></a>00150 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> duration;
<a name="l00151"></a>00151 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> startNote;
<a name="l00152"></a>00152
<a name="l00153"></a>00153 <span class="keywordtype">void</span> nextNote();
<a name="l00154"></a>00154 };
<a name="l00155"></a>00155
<a name="l00156"></a>00156 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -232,8 +77,178 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_be059bf9978ae156837504b1b8a7568c.html">Melody</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Melody.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef Melody_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define Melody_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// Note frequencies from http://arduino.cc/en/Tutorial/Tone</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#define NOTE_B0 31</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_C1 33</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS1 35</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_D1 37</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS1 39</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_E1 41</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_F1 44</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_FS1 46</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_G1 49</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_GS1 52</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_A1 55</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_AS1 58</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_B1 62</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_C2 65</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS2 69</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_D2 73</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS2 78</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_E2 82</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_F2 87</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_FS2 93</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_G2 98</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_GS2 104</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_A2 110</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_AS2 117</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_B2 123</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_C3 131</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS3 139</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_D3 147</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS3 156</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_E3 165</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_F3 175</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_FS3 185</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_G3 196</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_GS3 208</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_A3 220</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_AS3 233</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_B3 247</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_C4 262</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS4 277</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_D4 294</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS4 311</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_E4 330</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_F4 349</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_FS4 370</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_G4 392</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_GS4 415</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_A4 440</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_AS4 466</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_B4 494</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_C5 523</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS5 554</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_D5 587</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS5 622</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_E5 659</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_F5 698</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_FS5 740</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_G5 784</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_GS5 831</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_A5 880</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_AS5 932</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_B5 988</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_C6 1047</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS6 1109</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_D6 1175</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS6 1245</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_E6 1319</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_F6 1397</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_FS6 1480</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_G6 1568</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_GS6 1661</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_A6 1760</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_AS6 1865</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_B6 1976</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_C7 2093</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS7 2217</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_D7 2349</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS7 2489</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_E7 2637</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_F7 2794</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_FS7 2960</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_G7 3136</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_GS7 3322</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_A7 3520</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_AS7 3729</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_B7 3951</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_C8 4186</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_CS8 4435</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_D8 4699</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define NOTE_DS8 4978</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment">// Special note value that indicates a rest.</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor">#define NOTE_REST 0</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00122"></a><span class="lineno"><a class="code" href="classMelody.html"> 122</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMelody.html" title="Plays a melody on a digital output pin using tone().">Melody</a> {</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="classMelody.html#a9edc4165a49368dd5d78eedf982c38b9" title="Constructs a new melody playing object for pin.">Melody</a>(uint8_t pin);</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"><a class="code" href="classMelody.html#ad38db3338ed87d72238c0ea9440c633c"> 126</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classMelody.html#ad38db3338ed87d72238c0ea9440c633c" title="Returns true if the melody is currently playing; false if not.">isPlaying</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> playing; }</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"><a class="code" href="classMelody.html#ab78253ae9abc8478b05f415f5d878a60"> 128</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classMelody.html#ab78253ae9abc8478b05f415f5d878a60" title="Returns the number of times the melody should loop before stopping.">loopCount</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _loopCount; }</div>
<div class="line"><a name="l00129"></a><span class="lineno"><a class="code" href="classMelody.html#a507097a2e8ff51a5e9157e3a320ae35b"> 129</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classMelody.html#a507097a2e8ff51a5e9157e3a320ae35b" title="Sets the number of times the melody should loop to count.">setLoopCount</a>(<span class="keywordtype">int</span> count) { _loopCount = count; }</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classMelody.html#ae88ad06c2acb728f56dd213d5dad6006" title="Sets the maximum number of loops to last no longer than ms milliseconds.">setLoopDuration</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ms);</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classMelody.html#a9fd8e0d48833d8da3cd3b3b58408b0b5" title="Starts playing the melody, or restarts it if already playing.">play</a>();</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classMelody.html#aecc9185c9cb1246e8a55521b17d72932" title="Plays the melody once and then stops.">playOnce</a>();</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b" title="Stops playing the melody.">stop</a>();</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classMelody.html#adb6ad8e8cfe8c9a137e470f4e85c7254" title="Sets the melody to the size elements of notes and lengths.">setMelody</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> *notes, <span class="keyword">const</span> uint8_t *lengths, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size);</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="keywordtype">void</span> <a class="code" href="classMelody.html#ad1103b970be1f59058cc7d927be68955" title="Runs the melody control loop.">run</a>();</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;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; uint8_t _pin;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordtype">bool</span> playing;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">int</span> _loopCount;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordtype">int</span> loopsLeft;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> *notes;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">const</span> uint8_t *lengths;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> posn;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> duration;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> startNote;</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; <span class="keywordtype">void</span> nextNote();</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;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Mono5x7.h Source File</title> <title>ArduinoLibs: Mono5x7.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,174 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">Mono5x7.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002
<a name="l00003"></a>00003 <span class="comment">/*</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
<a name="l00005"></a>00005 <span class="comment"> * Mono5x7</span>
<a name="l00006"></a>00006 <span class="comment"> *</span>
<a name="l00007"></a>00007 <span class="comment"> * created with FontCreator</span>
<a name="l00008"></a>00008 <span class="comment"> * written by F. Maximilian Thiele</span>
<a name="l00009"></a>00009 <span class="comment"> *</span>
<a name="l00010"></a>00010 <span class="comment"> * http://www.apetech.de/fontCreator</span>
<a name="l00011"></a>00011 <span class="comment"> * me@apetech.de</span>
<a name="l00012"></a>00012 <span class="comment"> *</span>
<a name="l00013"></a>00013 <span class="comment"> * File Name : Mono5x7.h</span>
<a name="l00014"></a>00014 <span class="comment"> * Date : 29.05.2012</span>
<a name="l00015"></a>00015 <span class="comment"> * Font size in bytes : 3462</span>
<a name="l00016"></a>00016 <span class="comment"> * Font width : 5</span>
<a name="l00017"></a>00017 <span class="comment"> * Font height : 7</span>
<a name="l00018"></a>00018 <span class="comment"> * Font first char : 32</span>
<a name="l00019"></a>00019 <span class="comment"> * Font last char : 128</span>
<a name="l00020"></a>00020 <span class="comment"> * Font used chars : 96</span>
<a name="l00021"></a>00021 <span class="comment"> *</span>
<a name="l00022"></a>00022 <span class="comment"> * The font data are defined as</span>
<a name="l00023"></a>00023 <span class="comment"> *</span>
<a name="l00024"></a>00024 <span class="comment"> * struct _FONT_ {</span>
<a name="l00025"></a>00025 <span class="comment"> * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self;</span>
<a name="l00026"></a>00026 <span class="comment"> * uint8_t font_Width_in_Pixel_for_fixed_drawing;</span>
<a name="l00027"></a>00027 <span class="comment"> * uint8_t font_Height_in_Pixel_for_all_characters;</span>
<a name="l00028"></a>00028 <span class="comment"> * unit8_t font_First_Char;</span>
<a name="l00029"></a>00029 <span class="comment"> * uint8_t font_Char_Count;</span>
<a name="l00030"></a>00030 <span class="comment"> *</span>
<a name="l00031"></a>00031 <span class="comment"> * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1];</span>
<a name="l00032"></a>00032 <span class="comment"> * // for each character the separate width in pixels,</span>
<a name="l00033"></a>00033 <span class="comment"> * // characters &lt; 128 have an implicit virtual right empty row</span>
<a name="l00034"></a>00034 <span class="comment"> *</span>
<a name="l00035"></a>00035 <span class="comment"> * uint8_t font_data[];</span>
<a name="l00036"></a>00036 <span class="comment"> * // bit field of all characters</span>
<a name="l00037"></a>00037 <span class="comment"> */</span>
<a name="l00038"></a>00038
<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span>
<a name="l00041"></a>00041
<a name="l00042"></a>00042 <span class="preprocessor">#ifndef MONO5X7_H</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#define MONO5X7_H</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span>
<a name="l00045"></a>00045 <span class="preprocessor">#define MONO5X7_WIDTH 5</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#define MONO5X7_HEIGHT 7</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span>
<a name="l00048"></a>00048 <span class="keyword">static</span> uint8_t Mono5x7[] PROGMEM = {
<a name="l00049"></a>00049 0x00, 0x00, <span class="comment">// size</span>
<a name="l00050"></a>00050 0x05, <span class="comment">// width</span>
<a name="l00051"></a>00051 0x07, <span class="comment">// height</span>
<a name="l00052"></a>00052 0x20, <span class="comment">// first char</span>
<a name="l00053"></a>00053 0x60, <span class="comment">// char count</span>
<a name="l00054"></a>00054
<a name="l00055"></a>00055 <span class="comment">// font data</span>
<a name="l00056"></a>00056 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 32</span>
<a name="l00057"></a>00057 0x00, 0x00, 0x5F, 0x00, 0x00, <span class="comment">// 33</span>
<a name="l00058"></a>00058 0x00, 0x07, 0x00, 0x07, 0x00, <span class="comment">// 34</span>
<a name="l00059"></a>00059 0x14, 0x7F, 0x14, 0x7F, 0x14, <span class="comment">// 35</span>
<a name="l00060"></a>00060 0x24, 0x2A, 0x7F, 0x2A, 0x12, <span class="comment">// 36</span>
<a name="l00061"></a>00061 0x23, 0x13, 0x08, 0x64, 0x62, <span class="comment">// 37</span>
<a name="l00062"></a>00062 0x36, 0x49, 0x55, 0x22, 0x50, <span class="comment">// 38</span>
<a name="l00063"></a>00063 0x00, 0x05, 0x03, 0x00, 0x00, <span class="comment">// 39</span>
<a name="l00064"></a>00064 0x00, 0x1C, 0x22, 0x41, 0x00, <span class="comment">// 40</span>
<a name="l00065"></a>00065 0x00, 0x41, 0x22, 0x1C, 0x00, <span class="comment">// 41</span>
<a name="l00066"></a>00066 0x14, 0x08, 0x3E, 0x08, 0x14, <span class="comment">// 42</span>
<a name="l00067"></a>00067 0x08, 0x08, 0x3E, 0x08, 0x08, <span class="comment">// 43</span>
<a name="l00068"></a>00068 0x00, 0x50, 0x30, 0x00, 0x00, <span class="comment">// 44</span>
<a name="l00069"></a>00069 0x08, 0x08, 0x08, 0x08, 0x08, <span class="comment">// 45</span>
<a name="l00070"></a>00070 0x00, 0x60, 0x60, 0x00, 0x00, <span class="comment">// 46</span>
<a name="l00071"></a>00071 0x20, 0x10, 0x08, 0x04, 0x02, <span class="comment">// 47</span>
<a name="l00072"></a>00072 0x3E, 0x51, 0x49, 0x45, 0x3E, <span class="comment">// 48</span>
<a name="l00073"></a>00073 0x00, 0x42, 0x7F, 0x40, 0x00, <span class="comment">// 49</span>
<a name="l00074"></a>00074 0x42, 0x61, 0x51, 0x49, 0x46, <span class="comment">// 50</span>
<a name="l00075"></a>00075 0x21, 0x41, 0x45, 0x4B, 0x31, <span class="comment">// 51</span>
<a name="l00076"></a>00076 0x18, 0x14, 0x12, 0x7F, 0x10, <span class="comment">// 52</span>
<a name="l00077"></a>00077 0x27, 0x45, 0x45, 0x45, 0x39, <span class="comment">// 53</span>
<a name="l00078"></a>00078 0x3C, 0x4A, 0x49, 0x49, 0x30, <span class="comment">// 54</span>
<a name="l00079"></a>00079 0x01, 0x71, 0x09, 0x05, 0x03, <span class="comment">// 55</span>
<a name="l00080"></a>00080 0x36, 0x49, 0x49, 0x49, 0x36, <span class="comment">// 56</span>
<a name="l00081"></a>00081 0x06, 0x49, 0x49, 0x29, 0x1E, <span class="comment">// 57</span>
<a name="l00082"></a>00082 0x00, 0x36, 0x36, 0x00, 0x00, <span class="comment">// 58</span>
<a name="l00083"></a>00083 0x00, 0x56, 0x36, 0x00, 0x00, <span class="comment">// 59</span>
<a name="l00084"></a>00084 0x08, 0x14, 0x22, 0x41, 0x00, <span class="comment">// 60</span>
<a name="l00085"></a>00085 0x14, 0x14, 0x14, 0x14, 0x14, <span class="comment">// 61</span>
<a name="l00086"></a>00086 0x00, 0x41, 0x22, 0x14, 0x08, <span class="comment">// 62</span>
<a name="l00087"></a>00087 0x02, 0x01, 0x51, 0x09, 0x06, <span class="comment">// 63</span>
<a name="l00088"></a>00088 0x32, 0x49, 0x79, 0x41, 0x3E, <span class="comment">// 64</span>
<a name="l00089"></a>00089 0x7E, 0x11, 0x11, 0x11, 0x7E, <span class="comment">// 65</span>
<a name="l00090"></a>00090 0x7F, 0x49, 0x49, 0x49, 0x36, <span class="comment">// 66</span>
<a name="l00091"></a>00091 0x3E, 0x41, 0x41, 0x41, 0x22, <span class="comment">// 67</span>
<a name="l00092"></a>00092 0x7F, 0x41, 0x41, 0x22, 0x1C, <span class="comment">// 68</span>
<a name="l00093"></a>00093 0x7F, 0x49, 0x49, 0x49, 0x41, <span class="comment">// 69</span>
<a name="l00094"></a>00094 0x7F, 0x09, 0x09, 0x09, 0x01, <span class="comment">// 70</span>
<a name="l00095"></a>00095 0x3E, 0x41, 0x49, 0x49, 0x78, <span class="comment">// 71</span>
<a name="l00096"></a>00096 0x7F, 0x08, 0x08, 0x08, 0x7F, <span class="comment">// 72</span>
<a name="l00097"></a>00097 0x00, 0x41, 0x7F, 0x41, 0x00, <span class="comment">// 73</span>
<a name="l00098"></a>00098 0x20, 0x40, 0x41, 0x3F, 0x01, <span class="comment">// 74</span>
<a name="l00099"></a>00099 0x7F, 0x08, 0x14, 0x22, 0x41, <span class="comment">// 75</span>
<a name="l00100"></a>00100 0x7F, 0x40, 0x40, 0x40, 0x40, <span class="comment">// 76</span>
<a name="l00101"></a>00101 0x7F, 0x02, 0x0C, 0x02, 0x7F, <span class="comment">// 77</span>
<a name="l00102"></a>00102 0x7F, 0x04, 0x08, 0x10, 0x7F, <span class="comment">// 78</span>
<a name="l00103"></a>00103 0x3E, 0x41, 0x41, 0x41, 0x3E, <span class="comment">// 79</span>
<a name="l00104"></a>00104 0x7F, 0x09, 0x09, 0x09, 0x06, <span class="comment">// 80</span>
<a name="l00105"></a>00105 0x3E, 0x41, 0x51, 0x21, 0x5E, <span class="comment">// 81</span>
<a name="l00106"></a>00106 0x7F, 0x09, 0x19, 0x29, 0x46, <span class="comment">// 82</span>
<a name="l00107"></a>00107 0x46, 0x49, 0x49, 0x49, 0x31, <span class="comment">// 83</span>
<a name="l00108"></a>00108 0x01, 0x01, 0x7F, 0x01, 0x01, <span class="comment">// 84</span>
<a name="l00109"></a>00109 0x3F, 0x40, 0x40, 0x40, 0x3F, <span class="comment">// 85</span>
<a name="l00110"></a>00110 0x1F, 0x20, 0x40, 0x20, 0x1F, <span class="comment">// 86</span>
<a name="l00111"></a>00111 0x3F, 0x40, 0x38, 0x40, 0x3F, <span class="comment">// 87</span>
<a name="l00112"></a>00112 0x63, 0x14, 0x08, 0x14, 0x63, <span class="comment">// 88</span>
<a name="l00113"></a>00113 0x07, 0x08, 0x70, 0x08, 0x07, <span class="comment">// 89</span>
<a name="l00114"></a>00114 0x61, 0x51, 0x49, 0x45, 0x43, <span class="comment">// 90</span>
<a name="l00115"></a>00115 0x00, 0x7F, 0x41, 0x41, 0x00, <span class="comment">// 91</span>
<a name="l00116"></a>00116 0x02, 0x04, 0x08, 0x10, 0x20, <span class="comment">// 92</span>
<a name="l00117"></a>00117 0x00, 0x41, 0x41, 0x7F, 0x00, <span class="comment">// 93</span>
<a name="l00118"></a>00118 0x04, 0x02, 0x01, 0x02, 0x04, <span class="comment">// 94</span>
<a name="l00119"></a>00119 0x40, 0x40, 0x40, 0x40, 0x40, <span class="comment">// 95</span>
<a name="l00120"></a>00120 0x00, 0x02, 0x04, 0x08, 0x00, <span class="comment">// 96</span>
<a name="l00121"></a>00121 0x20, 0x54, 0x54, 0x54, 0x78, <span class="comment">// 97</span>
<a name="l00122"></a>00122 0x7F, 0x48, 0x44, 0x44, 0x38, <span class="comment">// 98</span>
<a name="l00123"></a>00123 0x38, 0x44, 0x44, 0x44, 0x20, <span class="comment">// 99</span>
<a name="l00124"></a>00124 0x38, 0x44, 0x44, 0x48, 0x7F, <span class="comment">// 100</span>
<a name="l00125"></a>00125 0x38, 0x54, 0x54, 0x54, 0x18, <span class="comment">// 101</span>
<a name="l00126"></a>00126 0x08, 0x7E, 0x09, 0x01, 0x02, <span class="comment">// 102</span>
<a name="l00127"></a>00127 0x0C, 0x52, 0x52, 0x52, 0x3E, <span class="comment">// 103</span>
<a name="l00128"></a>00128 0x7F, 0x08, 0x04, 0x04, 0x78, <span class="comment">// 104</span>
<a name="l00129"></a>00129 0x00, 0x44, 0x7D, 0x40, 0x00, <span class="comment">// 105</span>
<a name="l00130"></a>00130 0x20, 0x40, 0x44, 0x3D, 0x00, <span class="comment">// 106</span>
<a name="l00131"></a>00131 0x7F, 0x10, 0x28, 0x44, 0x00, <span class="comment">// 107</span>
<a name="l00132"></a>00132 0x00, 0x41, 0x7F, 0x40, 0x00, <span class="comment">// 108</span>
<a name="l00133"></a>00133 0x7C, 0x04, 0x18, 0x04, 0x78, <span class="comment">// 109</span>
<a name="l00134"></a>00134 0x7C, 0x08, 0x04, 0x04, 0x78, <span class="comment">// 110</span>
<a name="l00135"></a>00135 0x38, 0x44, 0x44, 0x44, 0x38, <span class="comment">// 111</span>
<a name="l00136"></a>00136 0x7C, 0x14, 0x14, 0x14, 0x08, <span class="comment">// 112</span>
<a name="l00137"></a>00137 0x08, 0x14, 0x14, 0x18, 0x7C, <span class="comment">// 113</span>
<a name="l00138"></a>00138 0x7C, 0x08, 0x04, 0x04, 0x08, <span class="comment">// 114</span>
<a name="l00139"></a>00139 0x48, 0x54, 0x54, 0x54, 0x20, <span class="comment">// 115</span>
<a name="l00140"></a>00140 0x04, 0x3F, 0x44, 0x40, 0x00, <span class="comment">// 116</span>
<a name="l00141"></a>00141 0x3C, 0x40, 0x40, 0x20, 0x7C, <span class="comment">// 117</span>
<a name="l00142"></a>00142 0x1C, 0x20, 0x40, 0x20, 0x1C, <span class="comment">// 118</span>
<a name="l00143"></a>00143 0x3C, 0x40, 0x30, 0x40, 0x3C, <span class="comment">// 119</span>
<a name="l00144"></a>00144 0x44, 0x28, 0x10, 0x28, 0x44, <span class="comment">// 120</span>
<a name="l00145"></a>00145 0x0C, 0x50, 0x50, 0x50, 0x3C, <span class="comment">// 121</span>
<a name="l00146"></a>00146 0x44, 0x64, 0x54, 0x4C, 0x44, <span class="comment">// 122</span>
<a name="l00147"></a>00147 0x00, 0x08, 0x36, 0x41, 0x00, <span class="comment">// 123</span>
<a name="l00148"></a>00148 0x00, 0x00, 0x7F, 0x00, 0x00, <span class="comment">// 124</span>
<a name="l00149"></a>00149 0x00, 0x41, 0x36, 0x08, 0x00, <span class="comment">// 125</span>
<a name="l00150"></a>00150 0x08, 0x04, 0x08, 0x10, 0x08, <span class="comment">// 126</span>
<a name="l00151"></a>00151 0x00, 0x00, 0x00, 0x00, 0x00 <span class="comment">// 127</span>
<a name="l00152"></a>00152
<a name="l00153"></a>00153 };
<a name="l00154"></a>00154
<a name="l00155"></a>00155 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -231,8 +77,177 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_6591a2127a29f6cea3994dcb5b0596d1.html">DMD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Mono5x7.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</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"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Mono5x7</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"> * created with FontCreator</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * written by F. Maximilian Thiele</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * http://www.apetech.de/fontCreator</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * me@apetech.de</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"> * File Name : Mono5x7.h</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * Date : 29.05.2012</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * Font size in bytes : 3462</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * Font width : 5</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * Font height : 7</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * Font first char : 32</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Font last char : 128</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Font used chars : 96</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;<span class="comment"> * The font data are defined as</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * struct _FONT_ {</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * uint8_t font_Width_in_Pixel_for_fixed_drawing;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * uint8_t font_Height_in_Pixel_for_all_characters;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * unit8_t font_First_Char;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * uint8_t font_Char_Count;</span></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"> * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1];</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * // for each character the separate width in pixels,</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * // characters &lt; 128 have an implicit virtual right empty row</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"> * uint8_t font_data[];</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * // bit field of all characters</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</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="preprocessor">#ifndef MONO5X7_H</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define MONO5X7_H</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define MONO5X7_WIDTH 5</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define MONO5X7_HEIGHT 7</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">static</span> uint8_t <span class="keyword">const</span> Mono5x7[] PROGMEM = {</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; 0x00, 0x00, <span class="comment">// size</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; 0x05, <span class="comment">// width</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; 0x07, <span class="comment">// height</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; 0x20, <span class="comment">// first char</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; 0x60, <span class="comment">// char count</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// font data</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; 0x00, 0x00, 0x00, 0x00, 0x00, <span class="comment">// 32</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; 0x00, 0x00, 0x5F, 0x00, 0x00, <span class="comment">// 33</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; 0x00, 0x07, 0x00, 0x07, 0x00, <span class="comment">// 34</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; 0x14, 0x7F, 0x14, 0x7F, 0x14, <span class="comment">// 35</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; 0x24, 0x2A, 0x7F, 0x2A, 0x12, <span class="comment">// 36</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; 0x23, 0x13, 0x08, 0x64, 0x62, <span class="comment">// 37</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; 0x36, 0x49, 0x55, 0x22, 0x50, <span class="comment">// 38</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; 0x00, 0x05, 0x03, 0x00, 0x00, <span class="comment">// 39</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; 0x00, 0x1C, 0x22, 0x41, 0x00, <span class="comment">// 40</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; 0x00, 0x41, 0x22, 0x1C, 0x00, <span class="comment">// 41</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; 0x14, 0x08, 0x3E, 0x08, 0x14, <span class="comment">// 42</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; 0x08, 0x08, 0x3E, 0x08, 0x08, <span class="comment">// 43</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; 0x00, 0x50, 0x30, 0x00, 0x00, <span class="comment">// 44</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; 0x08, 0x08, 0x08, 0x08, 0x08, <span class="comment">// 45</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; 0x00, 0x60, 0x60, 0x00, 0x00, <span class="comment">// 46</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; 0x20, 0x10, 0x08, 0x04, 0x02, <span class="comment">// 47</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; 0x3E, 0x51, 0x49, 0x45, 0x3E, <span class="comment">// 48</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; 0x00, 0x42, 0x7F, 0x40, 0x00, <span class="comment">// 49</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; 0x42, 0x61, 0x51, 0x49, 0x46, <span class="comment">// 50</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; 0x21, 0x41, 0x45, 0x4B, 0x31, <span class="comment">// 51</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; 0x18, 0x14, 0x12, 0x7F, 0x10, <span class="comment">// 52</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; 0x27, 0x45, 0x45, 0x45, 0x39, <span class="comment">// 53</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; 0x3C, 0x4A, 0x49, 0x49, 0x30, <span class="comment">// 54</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; 0x01, 0x71, 0x09, 0x05, 0x03, <span class="comment">// 55</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; 0x36, 0x49, 0x49, 0x49, 0x36, <span class="comment">// 56</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; 0x06, 0x49, 0x49, 0x29, 0x1E, <span class="comment">// 57</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; 0x00, 0x36, 0x36, 0x00, 0x00, <span class="comment">// 58</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; 0x00, 0x56, 0x36, 0x00, 0x00, <span class="comment">// 59</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; 0x08, 0x14, 0x22, 0x41, 0x00, <span class="comment">// 60</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; 0x14, 0x14, 0x14, 0x14, 0x14, <span class="comment">// 61</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; 0x00, 0x41, 0x22, 0x14, 0x08, <span class="comment">// 62</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; 0x02, 0x01, 0x51, 0x09, 0x06, <span class="comment">// 63</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; 0x32, 0x49, 0x79, 0x41, 0x3E, <span class="comment">// 64</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; 0x7E, 0x11, 0x11, 0x11, 0x7E, <span class="comment">// 65</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; 0x7F, 0x49, 0x49, 0x49, 0x36, <span class="comment">// 66</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; 0x3E, 0x41, 0x41, 0x41, 0x22, <span class="comment">// 67</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; 0x7F, 0x41, 0x41, 0x22, 0x1C, <span class="comment">// 68</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; 0x7F, 0x49, 0x49, 0x49, 0x41, <span class="comment">// 69</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; 0x7F, 0x09, 0x09, 0x09, 0x01, <span class="comment">// 70</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; 0x3E, 0x41, 0x49, 0x49, 0x78, <span class="comment">// 71</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; 0x7F, 0x08, 0x08, 0x08, 0x7F, <span class="comment">// 72</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; 0x00, 0x41, 0x7F, 0x41, 0x00, <span class="comment">// 73</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; 0x20, 0x40, 0x41, 0x3F, 0x01, <span class="comment">// 74</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; 0x7F, 0x08, 0x14, 0x22, 0x41, <span class="comment">// 75</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; 0x7F, 0x40, 0x40, 0x40, 0x40, <span class="comment">// 76</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; 0x7F, 0x02, 0x0C, 0x02, 0x7F, <span class="comment">// 77</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; 0x7F, 0x04, 0x08, 0x10, 0x7F, <span class="comment">// 78</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; 0x3E, 0x41, 0x41, 0x41, 0x3E, <span class="comment">// 79</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; 0x7F, 0x09, 0x09, 0x09, 0x06, <span class="comment">// 80</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; 0x3E, 0x41, 0x51, 0x21, 0x5E, <span class="comment">// 81</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; 0x7F, 0x09, 0x19, 0x29, 0x46, <span class="comment">// 82</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; 0x46, 0x49, 0x49, 0x49, 0x31, <span class="comment">// 83</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; 0x01, 0x01, 0x7F, 0x01, 0x01, <span class="comment">// 84</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; 0x3F, 0x40, 0x40, 0x40, 0x3F, <span class="comment">// 85</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; 0x1F, 0x20, 0x40, 0x20, 0x1F, <span class="comment">// 86</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; 0x3F, 0x40, 0x38, 0x40, 0x3F, <span class="comment">// 87</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; 0x63, 0x14, 0x08, 0x14, 0x63, <span class="comment">// 88</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; 0x07, 0x08, 0x70, 0x08, 0x07, <span class="comment">// 89</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; 0x61, 0x51, 0x49, 0x45, 0x43, <span class="comment">// 90</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; 0x00, 0x7F, 0x41, 0x41, 0x00, <span class="comment">// 91</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; 0x02, 0x04, 0x08, 0x10, 0x20, <span class="comment">// 92</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; 0x00, 0x41, 0x41, 0x7F, 0x00, <span class="comment">// 93</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; 0x04, 0x02, 0x01, 0x02, 0x04, <span class="comment">// 94</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; 0x40, 0x40, 0x40, 0x40, 0x40, <span class="comment">// 95</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; 0x00, 0x02, 0x04, 0x08, 0x00, <span class="comment">// 96</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; 0x20, 0x54, 0x54, 0x54, 0x78, <span class="comment">// 97</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; 0x7F, 0x48, 0x44, 0x44, 0x38, <span class="comment">// 98</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; 0x38, 0x44, 0x44, 0x44, 0x20, <span class="comment">// 99</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; 0x38, 0x44, 0x44, 0x48, 0x7F, <span class="comment">// 100</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; 0x38, 0x54, 0x54, 0x54, 0x18, <span class="comment">// 101</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; 0x08, 0x7E, 0x09, 0x01, 0x02, <span class="comment">// 102</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; 0x0C, 0x52, 0x52, 0x52, 0x3E, <span class="comment">// 103</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; 0x7F, 0x08, 0x04, 0x04, 0x78, <span class="comment">// 104</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; 0x00, 0x44, 0x7D, 0x40, 0x00, <span class="comment">// 105</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; 0x20, 0x40, 0x44, 0x3D, 0x00, <span class="comment">// 106</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; 0x7F, 0x10, 0x28, 0x44, 0x00, <span class="comment">// 107</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; 0x00, 0x41, 0x7F, 0x40, 0x00, <span class="comment">// 108</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; 0x7C, 0x04, 0x18, 0x04, 0x78, <span class="comment">// 109</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; 0x7C, 0x08, 0x04, 0x04, 0x78, <span class="comment">// 110</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; 0x38, 0x44, 0x44, 0x44, 0x38, <span class="comment">// 111</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; 0x7C, 0x14, 0x14, 0x14, 0x08, <span class="comment">// 112</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; 0x08, 0x14, 0x14, 0x18, 0x7C, <span class="comment">// 113</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; 0x7C, 0x08, 0x04, 0x04, 0x08, <span class="comment">// 114</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; 0x48, 0x54, 0x54, 0x54, 0x20, <span class="comment">// 115</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; 0x04, 0x3F, 0x44, 0x40, 0x00, <span class="comment">// 116</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; 0x3C, 0x40, 0x40, 0x20, 0x7C, <span class="comment">// 117</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; 0x1C, 0x20, 0x40, 0x20, 0x1C, <span class="comment">// 118</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; 0x3C, 0x40, 0x30, 0x40, 0x3C, <span class="comment">// 119</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; 0x44, 0x28, 0x10, 0x28, 0x44, <span class="comment">// 120</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; 0x0C, 0x50, 0x50, 0x50, 0x3C, <span class="comment">// 121</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; 0x44, 0x64, 0x54, 0x4C, 0x44, <span class="comment">// 122</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; 0x00, 0x08, 0x36, 0x41, 0x00, <span class="comment">// 123</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; 0x00, 0x00, 0x7F, 0x00, 0x00, <span class="comment">// 124</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; 0x00, 0x41, 0x36, 0x08, 0x00, <span class="comment">// 125</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; 0x08, 0x04, 0x08, 0x10, 0x08, <span class="comment">// 126</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; 0x00, 0x00, 0x00, 0x00, 0x00 <span class="comment">// 127</span></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;};</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="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: PowerSave.cpp Source File</title> <title>ArduinoLibs: PowerSave.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,81 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">PowerSave.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;PowerSave.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;avr/wdt.h&gt;</span>
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;avr/sleep.h&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;avr/power.h&gt;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;avr/interrupt.h&gt;</span>
<a name="l00028"></a>00028
<a name="l00036"></a>00036 <span class="comment">/*\@{*/</span>
<a name="l00037"></a>00037
<a name="l00048"></a>00048 ISR(WDT_vect)
<a name="l00049"></a>00049 {
<a name="l00050"></a>00050 wdt_disable();
<a name="l00051"></a>00051 }
<a name="l00132"></a><a class="code" href="group__power__save.html#ga95c1666038493a7f95be6768882eebad">00132</a> <span class="keywordtype">void</span> <a class="code" href="group__power__save.html#ga95c1666038493a7f95be6768882eebad" title="Puts the CPU to sleep for a specific duration.The analog to digital converter and the brown out detec...">sleepFor</a>(<a class="code" href="group__power__save.html#gabdc6266a040b28c4d79028ddb0ceae36" title="Duration to put the CPU to sleep with sleepFor().">SleepDuration</a> duration, uint8_t mode)
<a name="l00133"></a>00133 {
<a name="l00134"></a>00134 <span class="comment">// Turn off the analog to digital converter.</span>
<a name="l00135"></a>00135 ADCSRA &amp;= ~(1 &lt;&lt; ADEN);
<a name="l00136"></a>00136 power_adc_disable();
<a name="l00137"></a>00137
<a name="l00138"></a>00138 <span class="comment">// Turn on the watchdog timer for the desired duration.</span>
<a name="l00139"></a>00139 wdt_enable(duration);
<a name="l00140"></a>00140 WDTCSR |= (1 &lt;&lt; WDIE);
<a name="l00141"></a>00141
<a name="l00142"></a>00142 <span class="comment">// Put the device to sleep, including turning off the Brown Out Detector.</span>
<a name="l00143"></a>00143 set_sleep_mode(mode);
<a name="l00144"></a>00144 cli();
<a name="l00145"></a>00145 sleep_enable();
<a name="l00146"></a>00146 <span class="preprocessor">#if defined(sleep_bod_disable)</span>
<a name="l00147"></a>00147 <span class="preprocessor"></span> sleep_bod_disable();
<a name="l00148"></a>00148 <span class="preprocessor">#endif</span>
<a name="l00149"></a>00149 <span class="preprocessor"></span> sei();
<a name="l00150"></a>00150 sleep_cpu();
<a name="l00151"></a>00151 sleep_disable();
<a name="l00152"></a>00152 sei();
<a name="l00153"></a>00153
<a name="l00154"></a>00154 <span class="comment">// Turn the analog to digital converter back on.</span>
<a name="l00155"></a>00155 power_adc_enable();
<a name="l00156"></a>00156 ADCSRA |= (1 &lt;&lt; ADEN);
<a name="l00157"></a>00157 }
<a name="l00158"></a>00158
<a name="l00159"></a>00159 <span class="comment">/*\@}*/</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -138,8 +77,84 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_5e87a7229a108582288ef7eda1233dc3.html">PowerSave</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">PowerSave.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;PowerSave.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;avr/wdt.h&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;avr/sleep.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;avr/power.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;avr/interrupt.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</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;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;ISR(WDT_vect)</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; wdt_disable();</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div>
<div class="line"><a name="l00132"></a><span class="lineno"><a class="code" href="group__power__save.html#ga95c1666038493a7f95be6768882eebad"> 132</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__power__save.html#ga95c1666038493a7f95be6768882eebad" title="Puts the CPU to sleep for a specific duration.The analog to digital converter and the brown out detec...">sleepFor</a>(<a class="code" href="group__power__save.html#gabdc6266a040b28c4d79028ddb0ceae36" title="Duration to put the CPU to sleep with sleepFor().">SleepDuration</a> duration, uint8_t mode)</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; <span class="comment">// Turn off the analog to digital converter.</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; ADCSRA &amp;= ~(1 &lt;&lt; ADEN);</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; power_adc_disable();</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; <span class="comment">// Turn on the watchdog timer for the desired duration.</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; wdt_enable(duration);</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; WDTCSR |= (1 &lt;&lt; WDIE);</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="comment">// Put the device to sleep, including turning off the Brown Out Detector.</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; set_sleep_mode(mode);</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; cli();</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; sleep_enable();</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="preprocessor">#if defined(sleep_bod_disable)</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="preprocessor"></span> sleep_bod_disable();</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="preprocessor"></span> sei();</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; sleep_cpu();</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; sleep_disable();</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; sei();</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; <span class="comment">// Turn the analog to digital converter back on.</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; power_adc_enable();</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; ADCSRA |= (1 &lt;&lt; ADEN);</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;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment">/*\@}*/</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: PowerSave.h Source File</title> <title>ArduinoLibs: PowerSave.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,73 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">PowerSave.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef PowerSave_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define PowerSave_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#else</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#endif</span>
<a name="l00031"></a>00031 <span class="preprocessor"></span>
<a name="l00032"></a><a class="code" href="group__power__save.html#ga6dbe8e20a70e83cf5b068177675ec792">00032</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__power__save.html#ga6dbe8e20a70e83cf5b068177675ec792" title="Marks an I/O pin as unused.This function sets pin to be an input with pullups enabled, which will reduce power consumption compared to pins that are left floating.">unusedPin</a>(uint8_t pin)
<a name="l00033"></a>00033 {
<a name="l00034"></a>00034 pinMode(pin, INPUT);
<a name="l00035"></a>00035 digitalWrite(pin, HIGH);
<a name="l00036"></a>00036 }
<a name="l00037"></a>00037
<a name="l00038"></a><a class="code" href="group__power__save.html#gabdc6266a040b28c4d79028ddb0ceae36">00038</a> <span class="keyword">enum</span> <a class="code" href="group__power__save.html#gabdc6266a040b28c4d79028ddb0ceae36" title="Duration to put the CPU to sleep with sleepFor().">SleepDuration</a>
<a name="l00039"></a>00039 {
<a name="l00040"></a><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a3d16487a7386c6348f1c1d886564e3c4">00040</a> <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a3d16487a7386c6348f1c1d886564e3c4" title="Sleep for 15 milliseconds.">SLEEP_15_MS</a>,
<a name="l00041"></a><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36af31050c5ef733b3e231920143b041825">00041</a> <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36af31050c5ef733b3e231920143b041825" title="Sleep for 30 milliseconds.">SLEEP_30_MS</a>,
<a name="l00042"></a><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a716f5a9f35e77a2d334ad71f05bd5fdc">00042</a> <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a716f5a9f35e77a2d334ad71f05bd5fdc" title="Sleep for 60 milliseconds.">SLEEP_60_MS</a>,
<a name="l00043"></a><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a96fa577b54aa6f2341ea5ddd839aa8bc">00043</a> <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a96fa577b54aa6f2341ea5ddd839aa8bc" title="Sleep for 120 milliseconds.">SLEEP_120_MS</a>,
<a name="l00044"></a><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36abcbf68cfdb688220da61ac98b1a2ec69">00044</a> <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36abcbf68cfdb688220da61ac98b1a2ec69" title="Sleep for 250 milliseconds.">SLEEP_250_MS</a>,
<a name="l00045"></a><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36aa49e4d5f92a5f48070dde0babf75a9b0">00045</a> <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36aa49e4d5f92a5f48070dde0babf75a9b0" title="Sleep for 500 milliseconds.">SLEEP_500_MS</a>,
<a name="l00046"></a><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a92310daf29e5899770b80c1c4e850b9b">00046</a> <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a92310daf29e5899770b80c1c4e850b9b" title="Sleep for 1 second.">SLEEP_1_SEC</a>,
<a name="l00047"></a><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a04571aa0b801c28cd756513303b229cd">00047</a> <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a04571aa0b801c28cd756513303b229cd" title="Sleep for 2 seconds.">SLEEP_2_SEC</a>,
<a name="l00048"></a><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a4cba1036d7a69225110b68b372f10410">00048</a> <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a4cba1036d7a69225110b68b372f10410" title="Sleep for 4 seconds.">SLEEP_4_SEC</a>,
<a name="l00049"></a><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a8c47dd1ef81c2f41da7525b5ee4bfc3a">00049</a> <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a8c47dd1ef81c2f41da7525b5ee4bfc3a" title="Sleep for 8 seconds.">SLEEP_8_SEC</a>
<a name="l00050"></a>00050 };
<a name="l00051"></a>00051
<a name="l00052"></a>00052 <span class="keywordtype">void</span> <a class="code" href="group__power__save.html#ga95c1666038493a7f95be6768882eebad" title="Puts the CPU to sleep for a specific duration.The analog to digital converter and the brown out detec...">sleepFor</a>(<a class="code" href="group__power__save.html#gabdc6266a040b28c4d79028ddb0ceae36" title="Duration to put the CPU to sleep with sleepFor().">SleepDuration</a> duration, uint8_t mode = 0);
<a name="l00053"></a>00053
<a name="l00054"></a>00054 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -130,8 +77,76 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_5e87a7229a108582288ef7eda1233dc3.html">PowerSave</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">PowerSave.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef PowerSave_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define PowerSave_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="group__power__save.html#ga6dbe8e20a70e83cf5b068177675ec792"> 32</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__power__save.html#ga6dbe8e20a70e83cf5b068177675ec792" title="Marks an I/O pin as unused.This function sets pin to be an input with pullups enabled, which will reduce power consumption compared to pins that are left floating.">unusedPin</a>(uint8_t pin)</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; pinMode(pin, INPUT);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; digitalWrite(pin, HIGH);</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;</div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="group__power__save.html#gabdc6266a040b28c4d79028ddb0ceae36"> 38</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="group__power__save.html#gabdc6266a040b28c4d79028ddb0ceae36" title="Duration to put the CPU to sleep with sleepFor().">SleepDuration</a></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a3d16487a7386c6348f1c1d886564e3c4"> 40</a></span>&#160; <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a3d16487a7386c6348f1c1d886564e3c4" title="Sleep for 15 milliseconds.">SLEEP_15_MS</a>,</div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36af31050c5ef733b3e231920143b041825"> 41</a></span>&#160; <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36af31050c5ef733b3e231920143b041825" title="Sleep for 30 milliseconds.">SLEEP_30_MS</a>,</div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a716f5a9f35e77a2d334ad71f05bd5fdc"> 42</a></span>&#160; <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a716f5a9f35e77a2d334ad71f05bd5fdc" title="Sleep for 60 milliseconds.">SLEEP_60_MS</a>,</div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a96fa577b54aa6f2341ea5ddd839aa8bc"> 43</a></span>&#160; <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a96fa577b54aa6f2341ea5ddd839aa8bc" title="Sleep for 120 milliseconds.">SLEEP_120_MS</a>,</div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36abcbf68cfdb688220da61ac98b1a2ec69"> 44</a></span>&#160; <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36abcbf68cfdb688220da61ac98b1a2ec69" title="Sleep for 250 milliseconds.">SLEEP_250_MS</a>,</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36aa49e4d5f92a5f48070dde0babf75a9b0"> 45</a></span>&#160; <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36aa49e4d5f92a5f48070dde0babf75a9b0" title="Sleep for 500 milliseconds.">SLEEP_500_MS</a>,</div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a92310daf29e5899770b80c1c4e850b9b"> 46</a></span>&#160; <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a92310daf29e5899770b80c1c4e850b9b" title="Sleep for 1 second.">SLEEP_1_SEC</a>,</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a04571aa0b801c28cd756513303b229cd"> 47</a></span>&#160; <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a04571aa0b801c28cd756513303b229cd" title="Sleep for 2 seconds.">SLEEP_2_SEC</a>,</div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a4cba1036d7a69225110b68b372f10410"> 48</a></span>&#160; <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a4cba1036d7a69225110b68b372f10410" title="Sleep for 4 seconds.">SLEEP_4_SEC</a>,</div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a8c47dd1ef81c2f41da7525b5ee4bfc3a"> 49</a></span>&#160; <a class="code" href="group__power__save.html#ggabdc6266a040b28c4d79028ddb0ceae36a8c47dd1ef81c2f41da7525b5ee4bfc3a" title="Sleep for 8 seconds.">SLEEP_8_SEC</a></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;};</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="keywordtype">void</span> <a class="code" href="group__power__save.html#ga95c1666038493a7f95be6768882eebad" title="Puts the CPU to sleep for a specific duration.The analog to digital converter and the brown out detec...">sleepFor</a>(<a class="code" href="group__power__save.html#gabdc6266a040b28c4d79028ddb0ceae36" title="Duration to put the CPU to sleep with sleepFor().">SleepDuration</a> duration, uint8_t mode = 0);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: RC5.h Source File</title> <title>ArduinoLibs: RC5.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,363 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">RC5.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef RC5_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define RC5_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="comment">// http://en.wikipedia.org/wiki/RC-5#System_Number_Allocations</span>
<a name="l00027"></a>00027 <span class="preprocessor">#define RC5_SYS_TV 0 // TV receiver 1</span>
<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_TV2 1 // TV receiver 2</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_TXT 2 // Teletext</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_TV_EXT 3 // Extension to TV 1 &amp; 2</span>
<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_LV 4 // Laservision player</span>
<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_VCR 5 // VCR 1</span>
<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_VCR2 6 // VCR 2</span>
<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_SAT 8 // Satellite receiver 1</span>
<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_VCR_EXT 9 // Extension to VCR 1 &amp; 2</span>
<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_SAT2 10 // Satellite receiver 2</span>
<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_CD_VIDEO 12 // CD video player</span>
<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_CD_PHOTO 14 // CD photo player</span>
<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_PREAMP 16 // Audio preamplifier 1</span>
<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_RADIO 17 // Radio tuner</span>
<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_REC 18 // Casette recorder 1</span>
<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_PREAMP2 19 // Audio preamplifier 2</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_CD 20 // CD player</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_COMBI 21 // Audio stack or record player</span>
<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_AUDIO_SAT 22 // Audio satellite</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_REC2 23 // Casette recorder 2</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_CD_R 26 // CD recorder</span>
<a name="l00048"></a>00048 <span class="preprocessor"></span>
<a name="l00049"></a>00049 <span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span>
<a name="l00050"></a>00050 <span class="comment">// Table 2, Common commands:</span>
<a name="l00051"></a>00051 <span class="preprocessor">#define RC5_0 0 // Digit 0</span>
<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="preprocessor">#define RC5_1 1 // Digit 1</span>
<a name="l00053"></a>00053 <span class="preprocessor"></span><span class="preprocessor">#define RC5_2 2 // Digit 2</span>
<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor">#define RC5_3 3 // Digit 3</span>
<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#define RC5_4 4 // Digit 4</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor">#define RC5_5 5 // Digit 5</span>
<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="preprocessor">#define RC5_6 6 // Digit 6</span>
<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="preprocessor">#define RC5_7 7 // Digit 7</span>
<a name="l00059"></a>00059 <span class="preprocessor"></span><span class="preprocessor">#define RC5_8 8 // Digit 8</span>
<a name="l00060"></a>00060 <span class="preprocessor"></span><span class="preprocessor">#define RC5_9 9 // Digit 9</span>
<a name="l00061"></a>00061 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_VOLUME 16 // Increase sound volume</span>
<a name="l00062"></a>00062 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_VOLUME 17 // Decrease sound volume</span>
<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_BRIGHTNESS 18 // Increase display brightness</span>
<a name="l00064"></a>00064 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_BRIGHTNESS 19 // Decrease display brightness</span>
<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_BASS 22 // Increase bass response</span>
<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_BASS 23 // Decrease bass response</span>
<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_TREBLE 24 // Increase treble response</span>
<a name="l00068"></a>00068 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_TREBLE 25 // Decrease treble response</span>
<a name="l00069"></a>00069 <span class="preprocessor"></span><span class="preprocessor">#define RC5_BALANCE_LEFT 26 // Shift sound balance to left</span>
<a name="l00070"></a>00070 <span class="preprocessor"></span><span class="preprocessor">#define RC5_BALANCE_RIGHT 27 // Shift sound balance to right</span>
<a name="l00071"></a>00071 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TRANSMIT_MODE 63 // Select remote transmit mode</span>
<a name="l00072"></a>00072 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DIM 71 // Dim local display</span>
<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_LINEAR 77 // Increase linear control</span>
<a name="l00074"></a>00074 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_LINEAR 78 // Decrease linear control</span>
<a name="l00075"></a>00075 <span class="preprocessor"></span><span class="preprocessor">#define RC5_UP 80 // Move cursor up</span>
<a name="l00076"></a>00076 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DOWN 81 // Move cursor down</span>
<a name="l00077"></a>00077 <span class="preprocessor"></span><span class="preprocessor">#define RC5_MENU_ON 82 // Switch display/screen menu on</span>
<a name="l00078"></a>00078 <span class="preprocessor"></span><span class="preprocessor">#define RC5_MENU_OFF 83 // Switch display/screen menu off</span>
<a name="l00079"></a>00079 <span class="preprocessor"></span><span class="preprocessor">#define RC5_AV_STATUS 84 // Display A/V system status</span>
<a name="l00080"></a>00080 <span class="preprocessor"></span><span class="preprocessor">#define RC5_LEFT 85 // Move cursor left</span>
<a name="l00081"></a>00081 <span class="preprocessor"></span><span class="preprocessor">#define RC5_RIGHT 86 // Move cursor right</span>
<a name="l00082"></a>00082 <span class="preprocessor"></span><span class="preprocessor">#define RC5_OK 87 // Acknowledge function at cursor</span>
<a name="l00083"></a>00083 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SUBMODE 118 // Select sub-mode</span>
<a name="l00084"></a>00084 <span class="preprocessor"></span><span class="preprocessor">#define RC5_OPTIONS 119 // Select options sub-mode</span>
<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="preprocessor">#define RC5_CONNECT_EURO 123 // Connect items via Euroconnector</span>
<a name="l00086"></a>00086 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DISCONNECT_EURO 124 // Disconnect items via Euroconnector</span>
<a name="l00087"></a>00087 <span class="preprocessor"></span>
<a name="l00088"></a>00088 <span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span>
<a name="l00089"></a>00089 <span class="comment">// Table 3, Common video system commands:</span>
<a name="l00090"></a>00090 <span class="preprocessor">#define RC5_INC_SATURATION 20 // Increase color saturation</span>
<a name="l00091"></a>00091 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_SATURATION 21 // Decrease color saturation</span>
<a name="l00092"></a>00092 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP 88 // Picture-in-picture on/off</span>
<a name="l00093"></a>00093 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_SHIFT 89 // Picture-in-picture shift</span>
<a name="l00094"></a>00094 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_SWAP 90 // Picture-in-picture swap</span>
<a name="l00095"></a>00095 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_STROBE 91 // Strobe main picture on/off</span>
<a name="l00096"></a>00096 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_MULTI_STROBE 92 // Multi-strobe</span>
<a name="l00097"></a>00097 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_FREEZE_MAIN 93 // Main picture frame frozen</span>
<a name="l00098"></a>00098 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_MULTI_SCAN 94 // 3/9 multi-scan</span>
<a name="l00099"></a>00099 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_SOURCE 95 // Select picture-in-picture source</span>
<a name="l00100"></a>00100 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_MOSAIC 96 // Mosaic/multi-PIP</span>
<a name="l00101"></a>00101 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_NOISE 97 // Digital noise reduction of picture</span>
<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_STORE 98 // Store main picture</span>
<a name="l00103"></a>00103 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_PHOTO_FINISH 99 // PIP strobe; display photo-finish</span>
<a name="l00104"></a>00104 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_RECALL 100 // Recall main stored picture</span>
<a name="l00105"></a>00105 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_FREEZE 101 // Freeze PIP</span>
<a name="l00106"></a>00106 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_UP 102 // Step up PIP options/source</span>
<a name="l00107"></a>00107 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_DOWN 103 // Step down PIP options/source</span>
<a name="l00108"></a>00108 <span class="preprocessor"></span>
<a name="l00109"></a>00109 <span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span>
<a name="l00110"></a>00110 <span class="comment">// Table 4a, TV and VCR commands:</span>
<a name="l00111"></a>00111 <span class="preprocessor">#define RC5_123 10 // 1/2/3 digit entry</span>
<a name="l00112"></a>00112 <span class="preprocessor"></span><span class="preprocessor">#define RC5_11 11 // Channel/program/frequency 11</span>
<a name="l00113"></a>00113 <span class="preprocessor"></span><span class="preprocessor">#define RC5_STANDBY 12 // Standby</span>
<a name="l00114"></a>00114 <span class="preprocessor"></span><span class="preprocessor">#define RC5_MUTE 13 // Master mute/de-mute</span>
<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PREFERENCES 14 // Personal preference settings</span>
<a name="l00116"></a>00116 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DISPLAY_INFO 15 // Display user info on screen</span>
<a name="l00117"></a>00117 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_CONTRAST 28 // Increase picture contrast</span>
<a name="l00118"></a>00118 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_CONTRAST 29 // Decrease picture contrast</span>
<a name="l00119"></a>00119 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SEARCH_UP 30 // Search up</span>
<a name="l00120"></a>00120 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_TINT 31 // Decrease tint/hue</span>
<a name="l00121"></a>00121 <span class="preprocessor"></span><span class="preprocessor">#define RC5_CHANNEL_UP 32 // Channel/program up</span>
<a name="l00122"></a>00122 <span class="preprocessor"></span><span class="preprocessor">#define RC5_CHANNEL_DOWN 33 // Channel/program down</span>
<a name="l00123"></a>00123 <span class="preprocessor"></span><span class="preprocessor">#define RC5_CHANNEL_LAST 34 // Last viewed channel/program</span>
<a name="l00124"></a>00124 <span class="preprocessor"></span><span class="preprocessor">#define RC5_STEREO_SELECT 35 // Select stereo channel/language</span>
<a name="l00125"></a>00125 <span class="preprocessor"></span><span class="preprocessor">#define RC5_STEREO_SPATIAL 36 // Spatial stereo</span>
<a name="l00126"></a>00126 <span class="preprocessor"></span><span class="preprocessor">#define RC5_STEREO_TOGGLE 37 // Toggle stereo/mono</span>
<a name="l00127"></a>00127 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SLEEP_TIMER 38 // Sleep timer</span>
<a name="l00128"></a>00128 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_TINT 39 // Increase tint/hue</span>
<a name="l00129"></a>00129 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SWITCH_RF 40 // Switch RF inputs</span>
<a name="l00130"></a>00130 <span class="preprocessor"></span><span class="preprocessor">#define RC5_STORE 41 // Store/vote</span>
<a name="l00131"></a>00131 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TIME 42 // Display time</span>
<a name="l00132"></a>00132 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_SCAN 43 // Scan forward/increment</span>
<a name="l00133"></a>00133 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_SCAN 44 // Scan backward/decrement</span>
<a name="l00134"></a>00134 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SECONDARY_MENU 46 // Secondary menu</span>
<a name="l00135"></a>00135 <span class="preprocessor"></span><span class="preprocessor">#define RC5_CLOCK 47 // Show clock</span>
<a name="l00136"></a>00136 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PAUSE 48 // Pause</span>
<a name="l00137"></a>00137 <span class="preprocessor"></span><span class="preprocessor">#define RC5_ERASE 49 // Erase/correct entry</span>
<a name="l00138"></a>00138 <span class="preprocessor"></span><span class="preprocessor">#define RC5_REWIND 50 // Rewind</span>
<a name="l00139"></a>00139 <span class="preprocessor"></span><span class="preprocessor">#define RC5_GOTO 51 // Go to</span>
<a name="l00140"></a>00140 <span class="preprocessor"></span><span class="preprocessor">#define RC5_WIND 52 // Wind (fast forward)</span>
<a name="l00141"></a>00141 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PLAY 53 // Play</span>
<a name="l00142"></a>00142 <span class="preprocessor"></span><span class="preprocessor">#define RC5_STOP 54 // Stop</span>
<a name="l00143"></a>00143 <span class="preprocessor"></span><span class="preprocessor">#define RC5_RECORD 55 // Record</span>
<a name="l00144"></a>00144 <span class="preprocessor"></span><span class="preprocessor">#define RC5_EXTERNAL1 56 // External 1</span>
<a name="l00145"></a>00145 <span class="preprocessor"></span><span class="preprocessor">#define RC5_EXTERNAL2 57 // External 2</span>
<a name="l00146"></a>00146 <span class="preprocessor"></span><span class="preprocessor">#define RC5_VIEW_DATA 59 // View data, advance</span>
<a name="l00147"></a>00147 <span class="preprocessor"></span><span class="preprocessor">#define RC5_12 60 // Channel 12 (or TXT/TV toggle)</span>
<a name="l00148"></a>00148 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SYSTEM_STANDBY 61 // System standby</span>
<a name="l00149"></a>00149 <span class="preprocessor"></span><span class="preprocessor">#define RC5_CRISP 62 // Picture crispener (coutour boost)</span>
<a name="l00150"></a>00150 <span class="preprocessor"></span><span class="preprocessor">#define RC5_AUDIO_RESPONSE 70 // Audio response for speech/music</span>
<a name="l00151"></a>00151 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SOUND_FUNCTIONS 79 // Select sound functions in sequence</span>
<a name="l00152"></a>00152 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_SIZE 104 // Alter PIP size step-by-step</span>
<a name="l00153"></a>00153 <span class="preprocessor"></span><span class="preprocessor">#define RC5_VISION_FUNCTIONS 105 // Select vision functions in sequence</span>
<a name="l00154"></a>00154 <span class="preprocessor"></span><span class="preprocessor">#define RC5_COLOR_KEY 106 // Colored or other special key</span>
<a name="l00155"></a>00155 <span class="preprocessor"></span><span class="preprocessor">#define RC5_RED 107 // Red button</span>
<a name="l00156"></a>00156 <span class="preprocessor"></span><span class="preprocessor">#define RC5_GREEN 108 // Green button</span>
<a name="l00157"></a>00157 <span class="preprocessor"></span><span class="preprocessor">#define RC5_YELLOW 109 // Yellow button</span>
<a name="l00158"></a>00158 <span class="preprocessor"></span><span class="preprocessor">#define RC5_CYAN 110 // Cyan button</span>
<a name="l00159"></a>00159 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INDEX 111 // Index page/white function</span>
<a name="l00160"></a>00160 <span class="preprocessor"></span><span class="preprocessor">#define RC5_NEXT_OPTION 112 // Next option</span>
<a name="l00161"></a>00161 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PREVIOUS_OPTION 113 // Previous option</span>
<a name="l00162"></a>00162 <span class="preprocessor"></span><span class="preprocessor">#define RC5_STORE_OPEN_CLOSE 122 // Store open/close</span>
<a name="l00163"></a>00163 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PARENTAL_ACCESS 123 // Parental access via PIN code</span>
<a name="l00164"></a>00164 <span class="preprocessor"></span>
<a name="l00165"></a>00165 <span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span>
<a name="l00166"></a>00166 <span class="comment">// Table 4b, TV1 and TV2 extension</span>
<a name="l00167"></a>00167 <span class="preprocessor">#define RC5_DEFAULT_VIDEO 10 // Default video settings (TV1)</span>
<a name="l00168"></a>00168 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEFAULT_AUDIO 11 // Default audio settings (TV1)</span>
<a name="l00169"></a>00169 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PAYTV_CHANNEL_UP 28 // Pay TV channel up (TV1)</span>
<a name="l00170"></a>00170 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PAYTV_CHANNEL_DOWN 29 // Pay TV channel down (TV1)</span>
<a name="l00171"></a>00171 <span class="preprocessor"></span><span class="preprocessor">#define RC5_RADIO_CHANNEL_UP 30 // Radio channel up (TV1)</span>
<a name="l00172"></a>00172 <span class="preprocessor"></span><span class="preprocessor">#define RC5_RADIO_CHANNEL_DOWN 31 // Radio channel down (TV1)</span>
<a name="l00173"></a>00173 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TILT_FORWARD 32 // Tilt cabinet forward (TV1)</span>
<a name="l00174"></a>00174 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TILT_BACKWARD 33 // Tilt cabinet backward (TV1)</span>
<a name="l00175"></a>00175 <span class="preprocessor"></span><span class="preprocessor">#define RC5_EXTERNAL3 56 // External 3 (TV1)</span>
<a name="l00176"></a>00176 <span class="preprocessor"></span><span class="preprocessor">#define RC5_EXTERNAL4 56 // External 4 (TV1)</span>
<a name="l00177"></a>00177 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PICTURE_FORMAT 62 // 4:3 vs 16:9 (TV1)</span>
<a name="l00178"></a>00178 <span class="preprocessor"></span><span class="preprocessor">#define RC5_CHANNEL_10 67 // Channel 10</span>
<a name="l00179"></a>00179 <span class="preprocessor"></span><span class="preprocessor">#define RC5_CHANNEL_11 68 // Channel 11</span>
<a name="l00180"></a>00180 <span class="preprocessor"></span><span class="preprocessor">#define RC5_CHANNEL_12 69 // Channel 12</span>
<a name="l00181"></a>00181 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEFAULT_VIDEO2 72 // Default video settings (TV2)</span>
<a name="l00182"></a>00182 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEFAULT_AUDIO2 73 // Default audio settings (TV2)</span>
<a name="l00183"></a>00183 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PAYTV_CHANNEL_UP2 88 // Pay TV channel up (TV2)</span>
<a name="l00184"></a>00184 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PAYTV_CHANNEL_DOWN2 89 // Pay TV channel down (TV2)</span>
<a name="l00185"></a>00185 <span class="preprocessor"></span><span class="preprocessor">#define RC5_RADIO_CHANNEL_UP2 90 // Radio channel up (TV2)</span>
<a name="l00186"></a>00186 <span class="preprocessor"></span><span class="preprocessor">#define RC5_RADIO_CHANNEL_DOWN2 91 // Radio channel down (TV2)</span>
<a name="l00187"></a>00187 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TILT_FORWARD2 104 // Tilt cabinet forward (TV2)</span>
<a name="l00188"></a>00188 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TILT_BACKWARD2 105 // Tilt cabinet backward (TV2)</span>
<a name="l00189"></a>00189 <span class="preprocessor"></span><span class="preprocessor">#define RC5_EXTERNAL3_2 120 // External 3 (TV2)</span>
<a name="l00190"></a>00190 <span class="preprocessor"></span><span class="preprocessor">#define RC5_EXTERNAL4_2 121 // External 4 (TV2)</span>
<a name="l00191"></a>00191 <span class="preprocessor"></span><span class="preprocessor">#define RC5_CHANNEL_MENU 122 // Channel setting menu</span>
<a name="l00192"></a>00192 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PICTURE_FORMAT2 126 // 4:3 vs 16:9 (TV2)</span>
<a name="l00193"></a>00193 <span class="preprocessor"></span>
<a name="l00194"></a>00194 <span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span>
<a name="l00195"></a>00195 <span class="comment">// Table 5, Teletext commands</span>
<a name="l00196"></a>00196 <span class="preprocessor">#define RC5_NEXT_PAGE 10 // Next page</span>
<a name="l00197"></a>00197 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PREVIOUS_PAGE 11 // Previous page</span>
<a name="l00198"></a>00198 <span class="preprocessor"></span><span class="comment">// RC5_STANDBY 12 // Standby</span>
<a name="l00199"></a>00199 <span class="preprocessor">#define RC5_ENTER_PAGE_NUMBER 28 // Enter page number in memory</span>
<a name="l00200"></a>00200 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SEQ_DISPLAY 29 // Sequential display of pages</span>
<a name="l00201"></a>00201 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SEQ_DELETE 30 // Sequential display/deletion of pages</span>
<a name="l00202"></a>00202 <span class="preprocessor"></span><span class="preprocessor">#define RC5_EXCHANGE 32 // Exchange (Antiope function)</span>
<a name="l00203"></a>00203 <span class="preprocessor"></span><span class="preprocessor">#define RC5_MAIN_INDEX 33 // Main index</span>
<a name="l00204"></a>00204 <span class="preprocessor"></span><span class="preprocessor">#define RC5_ROW_ZERO 34 // Row zero (Antiope function)</span>
<a name="l00205"></a>00205 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PRINT 38 // Print displayed page</span>
<a name="l00206"></a>00206 <span class="preprocessor"></span><span class="preprocessor">#define RC5_MIX 39 // Mix Antiope/TV pictures</span>
<a name="l00207"></a>00207 <span class="preprocessor"></span><span class="preprocessor">#define RC5_HOLD_PAGE 41 // Page hold</span>
<a name="l00208"></a>00208 <span class="preprocessor"></span><span class="comment">// RC5_TIME 42 // Display time</span>
<a name="l00209"></a>00209 <span class="preprocessor">#define RC5_LARGE 43 // Large top/bottom/normal</span>
<a name="l00210"></a>00210 <span class="preprocessor"></span><span class="preprocessor">#define RC5_REVEAL 44 // Reveal/conceal</span>
<a name="l00211"></a>00211 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TV_TXT 45 // TV/TXT</span>
<a name="l00212"></a>00212 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TV_TXT_SUBTITLE 46 // TV + TXT/subtitle</span>
<a name="l00213"></a>00213 <span class="preprocessor"></span><span class="comment">// RC5_ERASE 49 // Erase/correct entry</span>
<a name="l00214"></a>00214 <span class="preprocessor">#define RC5_NEWS_FLASH 62 // News flash (Antiope function)</span>
<a name="l00215"></a>00215 <span class="preprocessor"></span>
<a name="l00216"></a>00216 <span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span>
<a name="l00217"></a>00217 <span class="comment">// Table 6, LaserVision commands</span>
<a name="l00218"></a>00218 <span class="preprocessor">#define RC5_PICTURE_NUMBER 10 // Display picture number/time</span>
<a name="l00219"></a>00219 <span class="preprocessor"></span><span class="preprocessor">#define RC5_CHAPTER_NUMBER 11 // Display chapter number</span>
<a name="l00220"></a>00220 <span class="preprocessor"></span><span class="comment">// RC5_STANDBY 12 // Standby</span>
<a name="l00221"></a>00221 <span class="comment">// RC5_MUTE 13 // Master mute/de-mute</span>
<a name="l00222"></a>00222 <span class="comment">// RC5_DISPLAY_INFO 15 // Display user info on screen</span>
<a name="l00223"></a>00223 <span class="preprocessor">#define RC5_SHUFFLE 28 // Total shuffle play/repeat once</span>
<a name="l00224"></a>00224 <span class="preprocessor"></span><span class="preprocessor">#define RC5_REPEAT 29 // Repeat continuously</span>
<a name="l00225"></a>00225 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SELECT_NEXT 30 // Select next option</span>
<a name="l00226"></a>00226 <span class="preprocessor"></span><span class="preprocessor">#define RC5_FAST_REVERSE 31 // Fast run reverse</span>
<a name="l00227"></a>00227 <span class="preprocessor"></span><span class="preprocessor">#define RC5_ENTRY 32 // Entry (prepare to program)</span>
<a name="l00228"></a>00228 <span class="preprocessor"></span><span class="preprocessor">#define RC5_AUTO_STOP 33 // Auto-stop at pre-programmed point</span>
<a name="l00229"></a>00229 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SLOW_REVERSE 34 // Slow run reverse</span>
<a name="l00230"></a>00230 <span class="preprocessor"></span><span class="preprocessor">#define RC5_STEREO_CHANNEL1 35 // Select stereo sound channel 1/language 1</span>
<a name="l00231"></a>00231 <span class="preprocessor"></span><span class="preprocessor">#define RC5_STEREO_CHANNEL2 36 // Select stereo sound channel 2/language 2</span>
<a name="l00232"></a>00232 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_STILL 37 // Still increment reverse</span>
<a name="l00233"></a>00233 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_SPEED 38 // Increase speed</span>
<a name="l00234"></a>00234 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_SPEED 39 // Decrease speed</span>
<a name="l00235"></a>00235 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SLOW_FORWARD 40 // Slow run forward</span>
<a name="l00236"></a>00236 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_STILL 41 // Still increment forward</span>
<a name="l00237"></a>00237 <span class="preprocessor"></span><span class="preprocessor">#define RC5_FAST_FORWARD 42 // Fast run forward</span>
<a name="l00238"></a>00238 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SEARCH_USER_CHOICE 43 // Automatic search for user choice</span>
<a name="l00239"></a>00239 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SEARCH_REVERSE 44 // Search in reverse</span>
<a name="l00240"></a>00240 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TRAY 45 // Open/close tray</span>
<a name="l00241"></a>00241 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SEARCH_FORWARD 46 // Search forward</span>
<a name="l00242"></a>00242 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PLAY_REVERSE 47 // Play reverse/play opposite sound track</span>
<a name="l00243"></a>00243 <span class="preprocessor"></span><span class="comment">// RC5_PAUSE 48 // Pause</span>
<a name="l00244"></a>00244 <span class="comment">// RC5_ERASE 49 // Erase/correct entry</span>
<a name="l00245"></a>00245 <span class="comment">// RC5_PLAY 53 // Play</span>
<a name="l00246"></a>00246 <span class="comment">// RC5_STOP 54 // Stop</span>
<a name="l00247"></a>00247 <span class="preprocessor">#define RC5_CLEAR_MEMORY 58 // Clear memory all</span>
<a name="l00248"></a>00248 <span class="preprocessor"></span><span class="preprocessor">#define RC5_FREEZE_SEGMENT 59 // Freeze segment(s) indicated by picture numbers.</span>
<a name="l00249"></a>00249 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TV_TXT_ALT 60 // TV/TXT toggle; RF switch (USA only)</span>
<a name="l00250"></a>00250 <span class="preprocessor"></span><span class="preprocessor">#define RC5_CX 62 // CX 1, 2, 3; toggle for CX noise reduction</span>
<a name="l00251"></a>00251 <span class="preprocessor"></span>
<a name="l00252"></a>00252 <span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span>
<a name="l00253"></a>00253 <span class="comment">// Table 11, Preamplifier commands</span>
<a name="l00254"></a>00254 <span class="preprocessor">#define RC5_GEQ_L 10 // Graphic equalizer left</span>
<a name="l00255"></a>00255 <span class="preprocessor"></span><span class="preprocessor">#define RC5_GEQ_R 11 // Graphic equalizer right</span>
<a name="l00256"></a>00256 <span class="preprocessor"></span><span class="comment">// RC5_STANDBY 12 // Standby</span>
<a name="l00257"></a>00257 <span class="comment">// RC5_MUTE 13 // Master mute/de-mute</span>
<a name="l00258"></a>00258 <span class="comment">// RC5_PREFERENCES 14 // Personal preference settings</span>
<a name="l00259"></a>00259 <span class="comment">// RC5_DISPLAY_INFO 15 // Display user info on screen</span>
<a name="l00260"></a>00260 <span class="preprocessor">#define RC5_GEQ_L_AND_R 28 // Graphic equalizer left and right</span>
<a name="l00261"></a>00261 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SPEAKER_SELECT 29 // Speaker select</span>
<a name="l00262"></a>00262 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SCRATCH_FILTER 30 // Scratch filter on/off</span>
<a name="l00263"></a>00263 <span class="preprocessor"></span><span class="preprocessor">#define RC5_RUMBLE_FILTER 31 // Rumble filter on/off</span>
<a name="l00264"></a>00264 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_STEP 32 // Step function +</span>
<a name="l00265"></a>00265 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_STEP 33 // Step function -</span>
<a name="l00266"></a>00266 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SIGNAL_PATH 34 // Signal path options</span>
<a name="l00267"></a>00267 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SPEAKER_A 35 // Speaker A on/off</span>
<a name="l00268"></a>00268 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SURROUND_OPTIONS 37 // Surround sound options</span>
<a name="l00269"></a>00269 <span class="preprocessor"></span><span class="comment">// RC5_SLEEP_TIMER 38 // Sleep timer</span>
<a name="l00270"></a>00270 <span class="preprocessor">#define RC5_SPEAKER_B 39 // Speaker B on/off</span>
<a name="l00271"></a>00271 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SPEAKER_C 40 // Speaker C on/off</span>
<a name="l00272"></a>00272 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TIMER_PROGRAM 41 // Timer program mode</span>
<a name="l00273"></a>00273 <span class="preprocessor"></span><span class="comment">// RC5_TIME 42 // Display time</span>
<a name="l00274"></a>00274 <span class="preprocessor">#define RC5_INC_TIMER 43 // Timer +</span>
<a name="l00275"></a>00275 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_TIMER 44 // Timer -</span>
<a name="l00276"></a>00276 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TIMER_MEMORY 45 // Open timer memory</span>
<a name="l00277"></a>00277 <span class="preprocessor"></span><span class="preprocessor">#define RC5_ACOUSTIC_CONTROL 46 // Open acoustic control setting memory</span>
<a name="l00278"></a>00278 <span class="preprocessor"></span><span class="preprocessor">#define RC5_ACOUSTIC_SELECT 47 // Select acoustic settings in memory</span>
<a name="l00279"></a>00279 <span class="preprocessor"></span><span class="comment">// RC5_ERASE 49 // Erase/correct entry</span>
<a name="l00280"></a>00280 <span class="comment">// RC5_CLEAR_MEMORY 58 // Clear memory all</span>
<a name="l00281"></a>00281 <span class="preprocessor">#define RC5_DYNAMIC_EXPAND 60 // Dynamic range expand</span>
<a name="l00282"></a>00282 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DYNAMIC_COMPRESS 62 // Dynamic range compress</span>
<a name="l00283"></a>00283 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SURROUND_SOUND 64 // Surround sound on/off</span>
<a name="l00284"></a>00284 <span class="preprocessor"></span><span class="preprocessor">#define RC5_BALANCE_FRONT 65 // Balance front</span>
<a name="l00285"></a>00285 <span class="preprocessor"></span><span class="preprocessor">#define RC5_BALANCE_REAR 66 // Balance rear</span>
<a name="l00286"></a>00286 <span class="preprocessor"></span><span class="preprocessor">#define RC5_LINEAR_SOUND 79 // Scroll linear sound functions</span>
<a name="l00287"></a>00287 <span class="preprocessor"></span><span class="preprocessor">#define RC5_RANDOM_NOISE 88 // Random noise generator on/off</span>
<a name="l00288"></a>00288 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TIMER 89 // Timer on/off</span>
<a name="l00289"></a>00289 <span class="preprocessor"></span><span class="preprocessor">#define RC5_NEWS_TIMER 90 // News timer on/off</span>
<a name="l00290"></a>00290 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_CENTER_VOLUME 102 // Increase center channel volume</span>
<a name="l00291"></a>00291 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_CENTER_VOLUME 103 // Decrease center channel volume</span>
<a name="l00292"></a>00292 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_DELAY_SURROUND 104 // Increase delay front to surround</span>
<a name="l00293"></a>00293 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_DELAY_SURROUND 105 // Decrease delay front to surround</span>
<a name="l00294"></a>00294 <span class="preprocessor"></span><span class="preprocessor">#define RC5_LINEAR_PHASE 106 // Linear phase</span>
<a name="l00295"></a>00295 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TAPE_MONITOR 122 // Tape monitor</span>
<a name="l00296"></a>00296 <span class="preprocessor"></span>
<a name="l00297"></a>00297 <span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span>
<a name="l00298"></a>00298 <span class="comment">// Table 14, Compact disc player commands</span>
<a name="l00299"></a>00299 <span class="preprocessor">#define RC5_LOCAL_CURSOR 10 // Scroll local display cursor</span>
<a name="l00300"></a>00300 <span class="preprocessor"></span><span class="preprocessor">#define RC5_LOCAL_FUNCTION 11 // Scroll local display function</span>
<a name="l00301"></a>00301 <span class="preprocessor"></span><span class="comment">// RC5_STANDBY 12 // Standby</span>
<a name="l00302"></a>00302 <span class="comment">// RC5_MUTE 13 // Master mute/de-mute</span>
<a name="l00303"></a>00303 <span class="comment">// RC5_DISPLAY_INFO 15 // Display user info on screen</span>
<a name="l00304"></a>00304 <span class="comment">// RC5_SHUFFLE 28 // Total shuffle play/repeat once</span>
<a name="l00305"></a>00305 <span class="comment">// RC5_REPEAT 29 // Repeat continuously</span>
<a name="l00306"></a>00306 <span class="preprocessor">#define RC5_INC_SELECT 30 // Select increment</span>
<a name="l00307"></a>00307 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_SELECT 31 // Select decrement</span>
<a name="l00308"></a>00308 <span class="preprocessor"></span><span class="preprocessor">#define RC5_NEXT 32 // Next</span>
<a name="l00309"></a>00309 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PREVIOUS 33 // Previous</span>
<a name="l00310"></a>00310 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INDEX_NEXT 34 // Index next</span>
<a name="l00311"></a>00311 <span class="preprocessor"></span><span class="preprocessor">#define RC5_INDEX_PREVIOUS 35 // Index previous</span>
<a name="l00312"></a>00312 <span class="preprocessor"></span><span class="preprocessor">#define RC5_PLAY_PROGRAM 36 // Play/program</span>
<a name="l00313"></a>00313 <span class="preprocessor"></span><span class="preprocessor">#define RC5_NOMINAL_SPEED 37 // Speed nominal</span>
<a name="l00314"></a>00314 <span class="preprocessor"></span><span class="comment">// RC5_INC_SPEED 38 // Increase speed</span>
<a name="l00315"></a>00315 <span class="comment">// RC5_DEC_SPEED 39 // Decrease speed</span>
<a name="l00316"></a>00316 <span class="comment">// RC5_STORE 41 // Store/vote</span>
<a name="l00317"></a>00317 <span class="comment">// RC5_INC_SCAN 43 // Scan forward/increment</span>
<a name="l00318"></a>00318 <span class="comment">// RC5_TRAY 45 // Open/close tray</span>
<a name="l00319"></a>00319 <span class="preprocessor">#define RC5_CARTRIDGE 47 // Fast/select disc from catridge</span>
<a name="l00320"></a>00320 <span class="preprocessor"></span><span class="comment">// RC5_PAUSE 48 // Pause</span>
<a name="l00321"></a>00321 <span class="comment">// RC5_ERASE 49 // Erase/correct entry</span>
<a name="l00322"></a>00322 <span class="comment">// RC5_REWIND 50 // Rewind</span>
<a name="l00323"></a>00323 <span class="comment">// RC5_GOTO 51 // Go to</span>
<a name="l00324"></a>00324 <span class="comment">// RC5_WIND 52 // Wind (fast forward)</span>
<a name="l00325"></a>00325 <span class="comment">// RC5_PLAY 53 // Play</span>
<a name="l00326"></a>00326 <span class="comment">// RC5_STOP 54 // Stop</span>
<a name="l00327"></a>00327 <span class="comment">// RC5_CLEAR_MEMORY 58 // Clear memory all</span>
<a name="l00328"></a>00328 <span class="preprocessor">#define RC5_REPEAT_AB 59 // Repeat program marked A/B</span>
<a name="l00329"></a>00329 <span class="preprocessor"></span><span class="comment">// RC5_DYNAMIC_EXPAND 60 // Dynamic range expand</span>
<a name="l00330"></a>00330 <span class="comment">// RC5_DYNAMIC_COMPRESS 62 // Dynamic range compress</span>
<a name="l00331"></a>00331 <span class="preprocessor">#define RC5_DSP 91 // Digital signal processing on/off</span>
<a name="l00332"></a>00332 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DSP_MUSIC 92 // Music mode (DSP)</span>
<a name="l00333"></a>00333 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DSP_ACOUSTICS 93 // Select room acoustics (DSP)</span>
<a name="l00334"></a>00334 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DSP_JAZZ 94 // Jazz/s-hall effect (DSP)</span>
<a name="l00335"></a>00335 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DSP_POP 95 // Pop/s-hall effect (DSP)</span>
<a name="l00336"></a>00336 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DSP_CLASSIC 96 // Classic/church music for music/room mode (DSP)</span>
<a name="l00337"></a>00337 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DSP_EASY 97 // Easy/club music for music/room mode (DSP)</span>
<a name="l00338"></a>00338 <span class="preprocessor"></span><span class="preprocessor">#define RC5_DSP_DISCO 98 // Disco/stadium music for music/room mode (DSP)</span>
<a name="l00339"></a>00339 <span class="preprocessor"></span><span class="preprocessor">#define RC5_SECOND_FAVORITE 107 // Second favorite track selection</span>
<a name="l00340"></a>00340 <span class="preprocessor"></span><span class="preprocessor">#define RC5_FAVORITE 108 // Favorite track selection</span>
<a name="l00341"></a>00341 <span class="preprocessor"></span><span class="preprocessor">#define RC5_TITLE_INTO_MEMORY 109 // Title into memory</span>
<a name="l00342"></a>00342 <span class="preprocessor"></span><span class="preprocessor">#define RC5_FADE 120 // Fade in/out audio</span>
<a name="l00343"></a>00343 <span class="preprocessor"></span>
<a name="l00344"></a>00344 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -420,8 +77,366 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9a34040863d1190c0e01b23e6b44de01.html">IR</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">RC5.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef RC5_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// http://en.wikipedia.org/wiki/RC-5#System_Number_Allocations</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#define RC5_SYS_TV 0 // TV receiver 1</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_TV2 1 // TV receiver 2</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_TXT 2 // Teletext</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_TV_EXT 3 // Extension to TV 1 &amp; 2</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_LV 4 // Laservision player</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_VCR 5 // VCR 1</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_VCR2 6 // VCR 2</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_SAT 8 // Satellite receiver 1</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_VCR_EXT 9 // Extension to VCR 1 &amp; 2</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_SAT2 10 // Satellite receiver 2</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_CD_VIDEO 12 // CD video player</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_CD_PHOTO 14 // CD photo player</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_PREAMP 16 // Audio preamplifier 1</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_RADIO 17 // Radio tuner</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_REC 18 // Casette recorder 1</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_PREAMP2 19 // Audio preamplifier 2</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_CD 20 // CD player</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_COMBI 21 // Audio stack or record player</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_AUDIO_SAT 22 // Audio satellite</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_REC2 23 // Casette recorder 2</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYS_CD_R 26 // CD recorder</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">// Table 2, Common commands:</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#define RC5_0 0 // Digit 0</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_1 1 // Digit 1</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_2 2 // Digit 2</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_3 3 // Digit 3</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_4 4 // Digit 4</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_5 5 // Digit 5</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_6 6 // Digit 6</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_7 7 // Digit 7</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_8 8 // Digit 8</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_9 9 // Digit 9</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_VOLUME 16 // Increase sound volume</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_VOLUME 17 // Decrease sound volume</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_BRIGHTNESS 18 // Increase display brightness</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_BRIGHTNESS 19 // Decrease display brightness</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_BASS 22 // Increase bass response</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_BASS 23 // Decrease bass response</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_TREBLE 24 // Increase treble response</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_TREBLE 25 // Decrease treble response</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_BALANCE_LEFT 26 // Shift sound balance to left</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_BALANCE_RIGHT 27 // Shift sound balance to right</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TRANSMIT_MODE 63 // Select remote transmit mode</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DIM 71 // Dim local display</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_LINEAR 77 // Increase linear control</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_LINEAR 78 // Decrease linear control</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_UP 80 // Move cursor up</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DOWN 81 // Move cursor down</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_MENU_ON 82 // Switch display/screen menu on</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_MENU_OFF 83 // Switch display/screen menu off</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_AV_STATUS 84 // Display A/V system status</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_LEFT 85 // Move cursor left</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_RIGHT 86 // Move cursor right</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_OK 87 // Acknowledge function at cursor</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SUBMODE 118 // Select sub-mode</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_OPTIONS 119 // Select options sub-mode</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_CONNECT_EURO 123 // Connect items via Euroconnector</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DISCONNECT_EURO 124 // Disconnect items via Euroconnector</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"> 88</span>&#160;<span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">// Table 3, Common video system commands:</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="preprocessor">#define RC5_INC_SATURATION 20 // Increase color saturation</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_SATURATION 21 // Decrease color saturation</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP 88 // Picture-in-picture on/off</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_SHIFT 89 // Picture-in-picture shift</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_SWAP 90 // Picture-in-picture swap</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_STROBE 91 // Strobe main picture on/off</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_MULTI_STROBE 92 // Multi-strobe</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_FREEZE_MAIN 93 // Main picture frame frozen</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_MULTI_SCAN 94 // 3/9 multi-scan</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_SOURCE 95 // Select picture-in-picture source</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_MOSAIC 96 // Mosaic/multi-PIP</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_NOISE 97 // Digital noise reduction of picture</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_STORE 98 // Store main picture</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_PHOTO_FINISH 99 // PIP strobe; display photo-finish</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_RECALL 100 // Recall main stored picture</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_FREEZE 101 // Freeze PIP</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_UP 102 // Step up PIP options/source</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_DOWN 103 // Step down PIP options/source</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment">// Table 4a, TV and VCR commands:</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor">#define RC5_123 10 // 1/2/3 digit entry</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_11 11 // Channel/program/frequency 11</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_STANDBY 12 // Standby</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_MUTE 13 // Master mute/de-mute</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PREFERENCES 14 // Personal preference settings</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DISPLAY_INFO 15 // Display user info on screen</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_CONTRAST 28 // Increase picture contrast</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_CONTRAST 29 // Decrease picture contrast</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SEARCH_UP 30 // Search up</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_TINT 31 // Decrease tint/hue</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_CHANNEL_UP 32 // Channel/program up</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_CHANNEL_DOWN 33 // Channel/program down</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_CHANNEL_LAST 34 // Last viewed channel/program</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_STEREO_SELECT 35 // Select stereo channel/language</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_STEREO_SPATIAL 36 // Spatial stereo</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_STEREO_TOGGLE 37 // Toggle stereo/mono</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SLEEP_TIMER 38 // Sleep timer</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_TINT 39 // Increase tint/hue</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SWITCH_RF 40 // Switch RF inputs</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_STORE 41 // Store/vote</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TIME 42 // Display time</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_SCAN 43 // Scan forward/increment</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_SCAN 44 // Scan backward/decrement</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SECONDARY_MENU 46 // Secondary menu</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_CLOCK 47 // Show clock</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PAUSE 48 // Pause</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_ERASE 49 // Erase/correct entry</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_REWIND 50 // Rewind</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_GOTO 51 // Go to</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_WIND 52 // Wind (fast forward)</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PLAY 53 // Play</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_STOP 54 // Stop</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_RECORD 55 // Record</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_EXTERNAL1 56 // External 1</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_EXTERNAL2 57 // External 2</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_VIEW_DATA 59 // View data, advance</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_12 60 // Channel 12 (or TXT/TV toggle)</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SYSTEM_STANDBY 61 // System standby</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_CRISP 62 // Picture crispener (coutour boost)</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_AUDIO_RESPONSE 70 // Audio response for speech/music</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SOUND_FUNCTIONS 79 // Select sound functions in sequence</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PIP_SIZE 104 // Alter PIP size step-by-step</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_VISION_FUNCTIONS 105 // Select vision functions in sequence</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_COLOR_KEY 106 // Colored or other special key</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_RED 107 // Red button</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_GREEN 108 // Green button</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_YELLOW 109 // Yellow button</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_CYAN 110 // Cyan button</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INDEX 111 // Index page/white function</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_NEXT_OPTION 112 // Next option</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PREVIOUS_OPTION 113 // Previous option</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_STORE_OPEN_CLOSE 122 // Store open/close</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PARENTAL_ACCESS 123 // Parental access via PIN code</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment">// Table 4b, TV1 and TV2 extension</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="preprocessor">#define RC5_DEFAULT_VIDEO 10 // Default video settings (TV1)</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEFAULT_AUDIO 11 // Default audio settings (TV1)</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PAYTV_CHANNEL_UP 28 // Pay TV channel up (TV1)</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PAYTV_CHANNEL_DOWN 29 // Pay TV channel down (TV1)</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_RADIO_CHANNEL_UP 30 // Radio channel up (TV1)</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_RADIO_CHANNEL_DOWN 31 // Radio channel down (TV1)</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TILT_FORWARD 32 // Tilt cabinet forward (TV1)</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TILT_BACKWARD 33 // Tilt cabinet backward (TV1)</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_EXTERNAL3 56 // External 3 (TV1)</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_EXTERNAL4 56 // External 4 (TV1)</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PICTURE_FORMAT 62 // 4:3 vs 16:9 (TV1)</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_CHANNEL_10 67 // Channel 10</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_CHANNEL_11 68 // Channel 11</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_CHANNEL_12 69 // Channel 12</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEFAULT_VIDEO2 72 // Default video settings (TV2)</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEFAULT_AUDIO2 73 // Default audio settings (TV2)</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PAYTV_CHANNEL_UP2 88 // Pay TV channel up (TV2)</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PAYTV_CHANNEL_DOWN2 89 // Pay TV channel down (TV2)</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_RADIO_CHANNEL_UP2 90 // Radio channel up (TV2)</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_RADIO_CHANNEL_DOWN2 91 // Radio channel down (TV2)</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TILT_FORWARD2 104 // Tilt cabinet forward (TV2)</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TILT_BACKWARD2 105 // Tilt cabinet backward (TV2)</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_EXTERNAL3_2 120 // External 3 (TV2)</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_EXTERNAL4_2 121 // External 4 (TV2)</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_CHANNEL_MENU 122 // Channel setting menu</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PICTURE_FORMAT2 126 // 4:3 vs 16:9 (TV2)</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment">// Table 5, Teletext commands</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="preprocessor">#define RC5_NEXT_PAGE 10 // Next page</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PREVIOUS_PAGE 11 // Previous page</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="preprocessor"></span><span class="comment">// RC5_STANDBY 12 // Standby</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="preprocessor">#define RC5_ENTER_PAGE_NUMBER 28 // Enter page number in memory</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SEQ_DISPLAY 29 // Sequential display of pages</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SEQ_DELETE 30 // Sequential display/deletion of pages</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_EXCHANGE 32 // Exchange (Antiope function)</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_MAIN_INDEX 33 // Main index</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_ROW_ZERO 34 // Row zero (Antiope function)</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PRINT 38 // Print displayed page</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_MIX 39 // Mix Antiope/TV pictures</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_HOLD_PAGE 41 // Page hold</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="preprocessor"></span><span class="comment">// RC5_TIME 42 // Display time</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="preprocessor">#define RC5_LARGE 43 // Large top/bottom/normal</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_REVEAL 44 // Reveal/conceal</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TV_TXT 45 // TV/TXT</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TV_TXT_SUBTITLE 46 // TV + TXT/subtitle</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="preprocessor"></span><span class="comment">// RC5_ERASE 49 // Erase/correct entry</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor">#define RC5_NEWS_FLASH 62 // News flash (Antiope function)</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment">// Table 6, LaserVision commands</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="preprocessor">#define RC5_PICTURE_NUMBER 10 // Display picture number/time</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_CHAPTER_NUMBER 11 // Display chapter number</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="preprocessor"></span><span class="comment">// RC5_STANDBY 12 // Standby</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment">// RC5_MUTE 13 // Master mute/de-mute</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment">// RC5_DISPLAY_INFO 15 // Display user info on screen</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="preprocessor">#define RC5_SHUFFLE 28 // Total shuffle play/repeat once</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_REPEAT 29 // Repeat continuously</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SELECT_NEXT 30 // Select next option</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_FAST_REVERSE 31 // Fast run reverse</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_ENTRY 32 // Entry (prepare to program)</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_AUTO_STOP 33 // Auto-stop at pre-programmed point</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SLOW_REVERSE 34 // Slow run reverse</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_STEREO_CHANNEL1 35 // Select stereo sound channel 1/language 1</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_STEREO_CHANNEL2 36 // Select stereo sound channel 2/language 2</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_STILL 37 // Still increment reverse</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_SPEED 38 // Increase speed</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_SPEED 39 // Decrease speed</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SLOW_FORWARD 40 // Slow run forward</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_STILL 41 // Still increment forward</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_FAST_FORWARD 42 // Fast run forward</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SEARCH_USER_CHOICE 43 // Automatic search for user choice</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SEARCH_REVERSE 44 // Search in reverse</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TRAY 45 // Open/close tray</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SEARCH_FORWARD 46 // Search forward</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PLAY_REVERSE 47 // Play reverse/play opposite sound track</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="preprocessor"></span><span class="comment">// RC5_PAUSE 48 // Pause</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment">// RC5_ERASE 49 // Erase/correct entry</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment">// RC5_PLAY 53 // Play</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="comment">// RC5_STOP 54 // Stop</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="preprocessor">#define RC5_CLEAR_MEMORY 58 // Clear memory all</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_FREEZE_SEGMENT 59 // Freeze segment(s) indicated by picture numbers.</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TV_TXT_ALT 60 // TV/TXT toggle; RF switch (USA only)</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_CX 62 // CX 1, 2, 3; toggle for CX noise reduction</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment">// Table 11, Preamplifier commands</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="preprocessor">#define RC5_GEQ_L 10 // Graphic equalizer left</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_GEQ_R 11 // Graphic equalizer right</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="preprocessor"></span><span class="comment">// RC5_STANDBY 12 // Standby</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment">// RC5_MUTE 13 // Master mute/de-mute</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment">// RC5_PREFERENCES 14 // Personal preference settings</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment">// RC5_DISPLAY_INFO 15 // Display user info on screen</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="preprocessor">#define RC5_GEQ_L_AND_R 28 // Graphic equalizer left and right</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SPEAKER_SELECT 29 // Speaker select</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SCRATCH_FILTER 30 // Scratch filter on/off</span></div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_RUMBLE_FILTER 31 // Rumble filter on/off</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_STEP 32 // Step function +</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_STEP 33 // Step function -</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SIGNAL_PATH 34 // Signal path options</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SPEAKER_A 35 // Speaker A on/off</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SURROUND_OPTIONS 37 // Surround sound options</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="preprocessor"></span><span class="comment">// RC5_SLEEP_TIMER 38 // Sleep timer</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="preprocessor">#define RC5_SPEAKER_B 39 // Speaker B on/off</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SPEAKER_C 40 // Speaker C on/off</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TIMER_PROGRAM 41 // Timer program mode</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="preprocessor"></span><span class="comment">// RC5_TIME 42 // Display time</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="preprocessor">#define RC5_INC_TIMER 43 // Timer +</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_TIMER 44 // Timer -</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TIMER_MEMORY 45 // Open timer memory</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_ACOUSTIC_CONTROL 46 // Open acoustic control setting memory</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_ACOUSTIC_SELECT 47 // Select acoustic settings in memory</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="preprocessor"></span><span class="comment">// RC5_ERASE 49 // Erase/correct entry</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment">// RC5_CLEAR_MEMORY 58 // Clear memory all</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="preprocessor">#define RC5_DYNAMIC_EXPAND 60 // Dynamic range expand</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DYNAMIC_COMPRESS 62 // Dynamic range compress</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SURROUND_SOUND 64 // Surround sound on/off</span></div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_BALANCE_FRONT 65 // Balance front</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_BALANCE_REAR 66 // Balance rear</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_LINEAR_SOUND 79 // Scroll linear sound functions</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_RANDOM_NOISE 88 // Random noise generator on/off</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TIMER 89 // Timer on/off</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_NEWS_TIMER 90 // News timer on/off</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_CENTER_VOLUME 102 // Increase center channel volume</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_CENTER_VOLUME 103 // Decrease center channel volume</span></div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INC_DELAY_SURROUND 104 // Increase delay front to surround</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_DELAY_SURROUND 105 // Decrease delay front to surround</span></div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_LINEAR_PHASE 106 // Linear phase</span></div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TAPE_MONITOR 122 // Tape monitor</span></div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="comment">// http://en.wikipedia.org/wiki/RC-5#Command_Tables</span></div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment">// Table 14, Compact disc player commands</span></div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="preprocessor">#define RC5_LOCAL_CURSOR 10 // Scroll local display cursor</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_LOCAL_FUNCTION 11 // Scroll local display function</span></div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="preprocessor"></span><span class="comment">// RC5_STANDBY 12 // Standby</span></div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="comment">// RC5_MUTE 13 // Master mute/de-mute</span></div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="comment">// RC5_DISPLAY_INFO 15 // Display user info on screen</span></div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment">// RC5_SHUFFLE 28 // Total shuffle play/repeat once</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment">// RC5_REPEAT 29 // Repeat continuously</span></div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="preprocessor">#define RC5_INC_SELECT 30 // Select increment</span></div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DEC_SELECT 31 // Select decrement</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_NEXT 32 // Next</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PREVIOUS 33 // Previous</span></div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INDEX_NEXT 34 // Index next</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_INDEX_PREVIOUS 35 // Index previous</span></div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_PLAY_PROGRAM 36 // Play/program</span></div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_NOMINAL_SPEED 37 // Speed nominal</span></div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="preprocessor"></span><span class="comment">// RC5_INC_SPEED 38 // Increase speed</span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="comment">// RC5_DEC_SPEED 39 // Decrease speed</span></div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="comment">// RC5_STORE 41 // Store/vote</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="comment">// RC5_INC_SCAN 43 // Scan forward/increment</span></div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="comment">// RC5_TRAY 45 // Open/close tray</span></div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="preprocessor">#define RC5_CARTRIDGE 47 // Fast/select disc from catridge</span></div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="preprocessor"></span><span class="comment">// RC5_PAUSE 48 // Pause</span></div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="comment">// RC5_ERASE 49 // Erase/correct entry</span></div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="comment">// RC5_REWIND 50 // Rewind</span></div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="comment">// RC5_GOTO 51 // Go to</span></div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment">// RC5_WIND 52 // Wind (fast forward)</span></div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="comment">// RC5_PLAY 53 // Play</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment">// RC5_STOP 54 // Stop</span></div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment">// RC5_CLEAR_MEMORY 58 // Clear memory all</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="preprocessor">#define RC5_REPEAT_AB 59 // Repeat program marked A/B</span></div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="preprocessor"></span><span class="comment">// RC5_DYNAMIC_EXPAND 60 // Dynamic range expand</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="comment">// RC5_DYNAMIC_COMPRESS 62 // Dynamic range compress</span></div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="preprocessor">#define RC5_DSP 91 // Digital signal processing on/off</span></div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DSP_MUSIC 92 // Music mode (DSP)</span></div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DSP_ACOUSTICS 93 // Select room acoustics (DSP)</span></div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DSP_JAZZ 94 // Jazz/s-hall effect (DSP)</span></div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DSP_POP 95 // Pop/s-hall effect (DSP)</span></div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DSP_CLASSIC 96 // Classic/church music for music/room mode (DSP)</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DSP_EASY 97 // Easy/club music for music/room mode (DSP)</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_DSP_DISCO 98 // Disco/stadium music for music/room mode (DSP)</span></div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_SECOND_FAVORITE 107 // Second favorite track selection</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_FAVORITE 108 // Favorite track selection</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_TITLE_INTO_MEMORY 109 // Title into memory</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RC5_FADE 120 // Fade in/out audio</span></div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: RTC.cpp Source File</title> <title>ArduinoLibs: RTC.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,274 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">RTC.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;RTC.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#else</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#endif</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#include &lt;stdlib.h&gt;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;string.h&gt;</span>
<a name="l00031"></a>00031
<a name="l00058"></a>00058 <span class="preprocessor">#define DEFAULT_BYTE_COUNT 43 // Default simulates DS1307 NVRAM size.</span>
<a name="l00059"></a>00059 <span class="preprocessor"></span>
<a name="l00060"></a>00060 <span class="preprocessor">#define MILLIS_PER_DAY 86400000UL</span>
<a name="l00061"></a>00061 <span class="preprocessor"></span><span class="preprocessor">#define MILLIS_PER_SECOND 1000UL</span>
<a name="l00062"></a>00062 <span class="preprocessor"></span><span class="preprocessor">#define MILLIS_PER_MINUTE 60000UL</span>
<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="preprocessor">#define MILLIS_PER_HOUR 3600000UL</span>
<a name="l00064"></a>00064 <span class="preprocessor"></span>
<a name="l00065"></a>00065 <span class="keyword">static</span> uint8_t monthLengths[] = {
<a name="l00066"></a>00066 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
<a name="l00067"></a>00067 };
<a name="l00068"></a>00068
<a name="l00069"></a>00069 <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> monthOffsets[] = {
<a name="l00070"></a>00070 0,
<a name="l00071"></a>00071 31,
<a name="l00072"></a>00072 31 + 28,
<a name="l00073"></a>00073 31 + 28 + 31,
<a name="l00074"></a>00074 31 + 28 + 31 + 30,
<a name="l00075"></a>00075 31 + 28 + 31 + 30 + 31,
<a name="l00076"></a>00076 31 + 28 + 31 + 30 + 31 + 30,
<a name="l00077"></a>00077 31 + 28 + 31 + 30 + 31 + 30 + 31,
<a name="l00078"></a>00078 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31,
<a name="l00079"></a>00079 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30,
<a name="l00080"></a>00080 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,
<a name="l00081"></a>00081 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30
<a name="l00082"></a>00082 };
<a name="l00083"></a>00083
<a name="l00084"></a>00084 <span class="keyword">inline</span> <span class="keywordtype">bool</span> isLeapYear(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> year)
<a name="l00085"></a>00085 {
<a name="l00086"></a>00086 <span class="keywordflow">if</span> ((year % 100) == 0)
<a name="l00087"></a>00087 <span class="keywordflow">return</span> (year % 400) == 0;
<a name="l00088"></a>00088 <span class="keywordflow">else</span>
<a name="l00089"></a>00089 <span class="keywordflow">return</span> (year % 4) == 0;
<a name="l00090"></a>00090 }
<a name="l00091"></a>00091
<a name="l00092"></a>00092 <span class="keyword">inline</span> uint8_t monthLength(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date)
<a name="l00093"></a>00093 {
<a name="l00094"></a>00094 <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> != 2 || !isLeapYear(date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a>))
<a name="l00095"></a>00095 <span class="keywordflow">return</span> monthLengths[date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> - 1];
<a name="l00096"></a>00096 <span class="keywordflow">else</span>
<a name="l00097"></a>00097 <span class="keywordflow">return</span> 29;
<a name="l00098"></a>00098 }
<a name="l00099"></a>00099
<a name="l00105"></a><a class="code" href="classRTC.html#ada31c5120d18d2dd2863b3d440308da2">00105</a> <a class="code" href="classRTC.html#ada31c5120d18d2dd2863b3d440308da2" title="Constructs a new realtime clock handler.">RTC::RTC</a>()
<a name="l00106"></a>00106 : midnight(millis() - 9 * MILLIS_PER_HOUR) <span class="comment">// Simulated clock starts at 9am</span>
<a name="l00107"></a>00107 , nvram(0)
<a name="l00108"></a>00108 {
<a name="l00109"></a>00109 <span class="comment">// Start the simulated date at 1 Jan, 2000.</span>
<a name="l00110"></a>00110 date.<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = 1;
<a name="l00111"></a>00111 date.<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = 1;
<a name="l00112"></a>00112 date.<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> = 2000;
<a name="l00113"></a>00113
<a name="l00114"></a>00114 <span class="comment">// Set all simulated alarms to 6am by default.</span>
<a name="l00115"></a>00115 <span class="keywordflow">for</span> (uint8_t index = 0; index &lt; <a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3" title="Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm().">ALARM_COUNT</a>; ++index) {
<a name="l00116"></a>00116 alarms[index].<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a> = 6;
<a name="l00117"></a>00117 alarms[index].<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a> = 0;
<a name="l00118"></a>00118 alarms[index].<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a> = 0;
<a name="l00119"></a>00119 }
<a name="l00120"></a>00120 }
<a name="l00121"></a>00121
<a name="l00122"></a>00122 RTC::~RTC()
<a name="l00123"></a>00123 {
<a name="l00124"></a>00124 <span class="keywordflow">if</span> (nvram)
<a name="l00125"></a>00125 free(nvram);
<a name="l00126"></a>00126 }
<a name="l00127"></a>00127
<a name="l00134"></a><a class="code" href="classRTC.html#a3690761f29654a2c9e676fcbfa32dd30">00134</a> <span class="keywordtype">bool</span> <a class="code" href="classRTC.html#a3690761f29654a2c9e676fcbfa32dd30" title="Returns true if the realtime clock has updated since the last call to this function.">RTC::hasUpdates</a>()
<a name="l00135"></a>00135 {
<a name="l00136"></a>00136 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00137"></a>00137 }
<a name="l00138"></a>00138
<a name="l00144"></a><a class="code" href="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec">00144</a> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec" title="Reads the current time from the realtime clock into value.">RTC::readTime</a>(<a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value)
<a name="l00145"></a>00145 {
<a name="l00146"></a>00146 <span class="comment">// Determine the number of seconds since the last midnight event.</span>
<a name="l00147"></a>00147 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sinceMidnight = millis() - midnight;
<a name="l00148"></a>00148 <span class="keywordflow">if</span> (sinceMidnight &gt;= MILLIS_PER_DAY) {
<a name="l00149"></a>00149 <span class="comment">// We have overflowed into the next day. Readjust midnight.</span>
<a name="l00150"></a>00150 midnight += MILLIS_PER_DAY;
<a name="l00151"></a>00151 sinceMidnight -= MILLIS_PER_DAY;
<a name="l00152"></a>00152
<a name="l00153"></a>00153 <span class="comment">// Increment the simulated date.</span>
<a name="l00154"></a>00154 <a class="code" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d" title="Adjusts date up or down one day according to flags.">adjustDays</a>(&amp;date, <a class="code" href="classRTC.html#aacbe3ebbf893685950b05327c11d5c37" title="Increment the day, month, or year in a call to adjustDays(), adjustMonths(), or adjustYears().">INCREMENT</a>);
<a name="l00155"></a>00155 }
<a name="l00156"></a>00156 value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a> = (uint8_t)(((sinceMidnight / MILLIS_PER_SECOND) % 60));
<a name="l00157"></a>00157 value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a> = (uint8_t)(((sinceMidnight / MILLIS_PER_MINUTE) % 60));
<a name="l00158"></a>00158 value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a> = (uint8_t)(sinceMidnight / MILLIS_PER_HOUR);
<a name="l00159"></a>00159 }
<a name="l00160"></a>00160
<a name="l00169"></a><a class="code" href="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e">00169</a> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e" title="Reads the current date from the realtime clock into value.">RTC::readDate</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value)
<a name="l00170"></a>00170 {
<a name="l00171"></a>00171 *value = date;
<a name="l00172"></a>00172 }
<a name="l00173"></a>00173
<a name="l00179"></a><a class="code" href="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e">00179</a> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e" title="Updates the time in the realtime clock to match value.">RTC::writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value)
<a name="l00180"></a>00180 {
<a name="l00181"></a>00181 <span class="comment">// Adjust the position of the last simulated midnight event.</span>
<a name="l00182"></a>00182 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sinceMidnight =
<a name="l00183"></a>00183 value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a> * MILLIS_PER_SECOND +
<a name="l00184"></a>00184 value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a> * MILLIS_PER_MINUTE +
<a name="l00185"></a>00185 value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a> * MILLIS_PER_HOUR;
<a name="l00186"></a>00186 midnight = millis() - sinceMidnight;
<a name="l00187"></a>00187 }
<a name="l00188"></a>00188
<a name="l00194"></a><a class="code" href="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7">00194</a> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7" title="Updates the date in the realtime clock to match value.">RTC::writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value)
<a name="l00195"></a>00195 {
<a name="l00196"></a>00196 date = *value;
<a name="l00197"></a>00197 }
<a name="l00198"></a>00198
<a name="l00209"></a><a class="code" href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66">00209</a> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66" title="Reads the details of the alarm with index alarmNum into value.">RTC::readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value)
<a name="l00210"></a>00210 {
<a name="l00211"></a>00211 *value = alarms[alarmNum];
<a name="l00212"></a>00212 }
<a name="l00213"></a>00213
<a name="l00224"></a><a class="code" href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e">00224</a> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e" title="Updates the details of the alarm with index alarmNum from value.">RTC::writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value)
<a name="l00225"></a>00225 {
<a name="l00226"></a>00226 alarms[alarmNum] = *value;
<a name="l00227"></a>00227 }
<a name="l00228"></a>00228
<a name="l00235"></a><a class="code" href="classRTC.html#acfdebfb449710e44e11f9a3675e14fd8">00235</a> <span class="keywordtype">int</span> <a class="code" href="classRTC.html#acfdebfb449710e44e11f9a3675e14fd8" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">RTC::byteCount</a>()<span class="keyword"> const</span>
<a name="l00236"></a>00236 <span class="keyword"></span>{
<a name="l00237"></a>00237 <span class="keywordflow">return</span> DEFAULT_BYTE_COUNT;
<a name="l00238"></a>00238 }
<a name="l00239"></a>00239
<a name="l00247"></a><a class="code" href="classRTC.html#a0f47b10b436e3f9d36e04ec907579431">00247</a> uint8_t <a class="code" href="classRTC.html#a0f47b10b436e3f9d36e04ec907579431" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">RTC::readByte</a>(uint8_t offset)
<a name="l00248"></a>00248 {
<a name="l00249"></a>00249 <span class="keywordflow">if</span> (nvram)
<a name="l00250"></a>00250 <span class="keywordflow">return</span> nvram[offset];
<a name="l00251"></a>00251 <span class="keywordflow">else</span>
<a name="l00252"></a>00252 <span class="keywordflow">return</span> 0;
<a name="l00253"></a>00253 }
<a name="l00254"></a>00254
<a name="l00262"></a><a class="code" href="classRTC.html#a1cab6397ec04b1e2b3feea5b3cd1f749">00262</a> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#a1cab6397ec04b1e2b3feea5b3cd1f749" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">RTC::writeByte</a>(uint8_t offset, uint8_t value)
<a name="l00263"></a>00263 {
<a name="l00264"></a>00264 <span class="keywordflow">if</span> (nvram) {
<a name="l00265"></a>00265 nvram[offset] = value;
<a name="l00266"></a>00266 } <span class="keywordflow">else</span> {
<a name="l00267"></a>00267 nvram = (uint8_t *)malloc(DEFAULT_BYTE_COUNT);
<a name="l00268"></a>00268 <span class="keywordflow">if</span> (nvram) {
<a name="l00269"></a>00269 memset(nvram, 0, DEFAULT_BYTE_COUNT);
<a name="l00270"></a>00270 nvram[offset] = value;
<a name="l00271"></a>00271 }
<a name="l00272"></a>00272 }
<a name="l00273"></a>00273 }
<a name="l00274"></a>00274
<a name="l00288"></a><a class="code" href="classRTC.html#aeca3c8387332e8cabfd09c1806276e5a">00288</a> <span class="keywordtype">int</span> <a class="code" href="classRTC.html#aeca3c8387332e8cabfd09c1806276e5a" title="Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius...">RTC::readTemperature</a>()
<a name="l00289"></a>00289 {
<a name="l00290"></a>00290 <span class="keywordflow">return</span> <a class="code" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8" title="Value that is returned from readTemperature() if the realtime clock chip cannot determine the tempera...">NO_TEMPERATURE</a>;
<a name="l00291"></a>00291 }
<a name="l00292"></a>00292
<a name="l00313"></a><a class="code" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d">00313</a> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d" title="Adjusts date up or down one day according to flags.">RTC::adjustDays</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date, uint8_t flags)
<a name="l00314"></a>00314 {
<a name="l00315"></a>00315 <span class="keywordflow">if</span> (flags &amp; <a class="code" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f" title="Decrement the day, month, or year in a call to adjustDays(), adjustMonths(), or adjustYears().">DECREMENT</a>) {
<a name="l00316"></a>00316 --(date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a>);
<a name="l00317"></a>00317 <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> == 0) {
<a name="l00318"></a>00318 <span class="keywordflow">if</span> (!(flags &amp; <a class="code" href="classRTC.html#a02ace2d775063be9a99035851c9274eb" title="Wrap around to the beginning of the current month/year rather than advance to the next one...">WRAP</a>)) {
<a name="l00319"></a>00319 --(date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a>);
<a name="l00320"></a>00320 <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> == 0)
<a name="l00321"></a>00321 date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = 12;
<a name="l00322"></a>00322 }
<a name="l00323"></a>00323 date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = monthLength(date);
<a name="l00324"></a>00324 }
<a name="l00325"></a>00325 } <span class="keywordflow">else</span> {
<a name="l00326"></a>00326 ++(date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a>);
<a name="l00327"></a>00327 <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> &gt; monthLength(date)) {
<a name="l00328"></a>00328 <span class="keywordflow">if</span> (!(flags &amp; <a class="code" href="classRTC.html#a02ace2d775063be9a99035851c9274eb" title="Wrap around to the beginning of the current month/year rather than advance to the next one...">WRAP</a>)) {
<a name="l00329"></a>00329 ++(date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a>);
<a name="l00330"></a>00330 <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> == 13)
<a name="l00331"></a>00331 date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = 1;
<a name="l00332"></a>00332 }
<a name="l00333"></a>00333 date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = 1;
<a name="l00334"></a>00334 }
<a name="l00335"></a>00335 }
<a name="l00336"></a>00336 }
<a name="l00337"></a>00337
<a name="l00343"></a><a class="code" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4">00343</a> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4" title="Adjusts date up or down one month according to flags.">RTC::adjustMonths</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date, uint8_t flags)
<a name="l00344"></a>00344 {
<a name="l00345"></a>00345 <span class="keywordflow">if</span> (flags &amp; <a class="code" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f" title="Decrement the day, month, or year in a call to adjustDays(), adjustMonths(), or adjustYears().">DECREMENT</a>) {
<a name="l00346"></a>00346 --(date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a>);
<a name="l00347"></a>00347 <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> == 0) {
<a name="l00348"></a>00348 date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = 12;
<a name="l00349"></a>00349 <span class="keywordflow">if</span> (!(flags &amp; <a class="code" href="classRTC.html#a02ace2d775063be9a99035851c9274eb" title="Wrap around to the beginning of the current month/year rather than advance to the next one...">WRAP</a>) &amp;&amp; date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> &gt; 2000)
<a name="l00350"></a>00350 --(date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a>);
<a name="l00351"></a>00351 }
<a name="l00352"></a>00352 } <span class="keywordflow">else</span> {
<a name="l00353"></a>00353 ++(date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a>);
<a name="l00354"></a>00354 <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> == 13) {
<a name="l00355"></a>00355 date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = 1;
<a name="l00356"></a>00356 <span class="keywordflow">if</span> (!(flags &amp; <a class="code" href="classRTC.html#a02ace2d775063be9a99035851c9274eb" title="Wrap around to the beginning of the current month/year rather than advance to the next one...">WRAP</a>) &amp;&amp; date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> &lt; 2099)
<a name="l00357"></a>00357 ++(date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a>);
<a name="l00358"></a>00358 }
<a name="l00359"></a>00359 }
<a name="l00360"></a>00360 uint8_t len = monthLength(date);
<a name="l00361"></a>00361 <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> &gt; len)
<a name="l00362"></a>00362 date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = len;
<a name="l00363"></a>00363 }
<a name="l00364"></a>00364
<a name="l00370"></a><a class="code" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d">00370</a> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d" title="Adjusts date up or down one year according to flags.">RTC::adjustYears</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date, uint8_t flags)
<a name="l00371"></a>00371 {
<a name="l00372"></a>00372 <span class="keywordflow">if</span> (flags &amp; <a class="code" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f" title="Decrement the day, month, or year in a call to adjustDays(), adjustMonths(), or adjustYears().">DECREMENT</a>) {
<a name="l00373"></a>00373 --(date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a>);
<a name="l00374"></a>00374 <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> &lt; 2000)
<a name="l00375"></a>00375 date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> = 2000;
<a name="l00376"></a>00376 } <span class="keywordflow">else</span> {
<a name="l00377"></a>00377 ++(date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a>);
<a name="l00378"></a>00378 <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> &gt; 2099)
<a name="l00379"></a>00379 date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> = 2099;
<a name="l00380"></a>00380 }
<a name="l00381"></a>00381 uint8_t len = monthLength(date);
<a name="l00382"></a>00382 <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> &gt; len)
<a name="l00383"></a>00383 date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = len;
<a name="l00384"></a>00384 }
<a name="l00385"></a>00385
<a name="l00399"></a><a class="code" href="classRTC.html#a525a9c1dad89613708f47a683eb316aa">00399</a> <a class="code" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11" title="Day of the week corresponding to a date.">RTC::DayOfWeek</a> <a class="code" href="classRTC.html#a525a9c1dad89613708f47a683eb316aa" title="Returns the day of the week corresponding to date.">RTC::dayOfWeek</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date)
<a name="l00400"></a>00400 {
<a name="l00401"></a>00401 <span class="comment">// The +4 here adjusts for Jan 1, 2000 being a Saturday.</span>
<a name="l00402"></a>00402 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> daynum = date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> + 4;
<a name="l00403"></a>00403 daynum += monthOffsets[date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> - 1];
<a name="l00404"></a>00404 <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> &gt; 2 &amp;&amp; isLeapYear(date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a>))
<a name="l00405"></a>00405 ++daynum;
<a name="l00406"></a>00406 daynum += 365UL * (date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> - 2000);
<a name="l00407"></a>00407 <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> &gt; 2000)
<a name="l00408"></a>00408 daynum += ((date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> - 2001) / 4) + 1;
<a name="l00409"></a>00409 <span class="keywordflow">return</span> (<a class="code" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11" title="Day of the week corresponding to a date.">DayOfWeek</a>)((daynum % 7) + 1);
<a name="l00410"></a>00410 }
<a name="l00411"></a>00411
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -331,8 +77,277 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_f34881fcf60f680b800190d5274dfaea.html">RTC</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">RTC.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;RTC.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#define DEFAULT_BYTE_COUNT 43 // Default simulates DS1307 NVRAM size.</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#define MILLIS_PER_DAY 86400000UL</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define MILLIS_PER_SECOND 1000UL</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define MILLIS_PER_MINUTE 60000UL</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define MILLIS_PER_HOUR 3600000UL</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="keyword">static</span> uint8_t monthLengths[] = {</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;};</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> monthOffsets[] = {</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; 0,</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; 31,</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; 31 + 28,</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; 31 + 28 + 31,</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; 31 + 28 + 31 + 30,</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; 31 + 28 + 31 + 30 + 31,</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; 31 + 28 + 31 + 30 + 31 + 30,</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; 31 + 28 + 31 + 30 + 31 + 30 + 31,</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31,</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30,</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;};</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="keyword">inline</span> <span class="keywordtype">bool</span> isLeapYear(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> year)</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"> 86</span>&#160; <span class="keywordflow">if</span> ((year % 100) == 0)</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> (year % 400) == 0;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> (year % 4) == 0;</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;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword">inline</span> uint8_t monthLength(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date)</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;{</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> != 2 || !isLeapYear(date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a>))</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> monthLengths[date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> - 1];</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> 29;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;}</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="code" href="classRTC.html#ada31c5120d18d2dd2863b3d440308da2"> 105</a></span>&#160;<a class="code" href="classRTC.html#ada31c5120d18d2dd2863b3d440308da2" title="Constructs a new realtime clock handler.">RTC::RTC</a>()</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; : midnight(millis() - 9 * MILLIS_PER_HOUR) <span class="comment">// Simulated clock starts at 9am</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; , nvram(0)</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">// Start the simulated date at 1 Jan, 2000.</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; date.<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = 1;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; date.<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = 1;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; date.<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> = 2000;</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">// Set all simulated alarms to 6am by default.</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span> (uint8_t index = 0; index &lt; <a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3" title="Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm().">ALARM_COUNT</a>; ++index) {</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; alarms[index].<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a> = 6;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; alarms[index].<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a> = 0;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; alarms[index].<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a> = 0;</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;}</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;RTC::~RTC()</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;{</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span> (nvram)</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; free(nvram);</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;</div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="code" href="classRTC.html#a3690761f29654a2c9e676fcbfa32dd30"> 134</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classRTC.html#a3690761f29654a2c9e676fcbfa32dd30" title="Returns true if the realtime clock has updated since the last call to this function.">RTC::hasUpdates</a>()</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="keywordflow">return</span> <span class="keyword">true</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="l00144"></a><span class="lineno"><a class="code" href="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec"> 144</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec" title="Reads the current time from the realtime clock into value.">RTC::readTime</a>(<a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value)</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="comment">// Determine the number of seconds since the last midnight event.</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sinceMidnight = millis() - midnight;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span> (sinceMidnight &gt;= MILLIS_PER_DAY) {</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// We have overflowed into the next day. Readjust midnight.</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; midnight += MILLIS_PER_DAY;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; sinceMidnight -= MILLIS_PER_DAY;</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; <span class="comment">// Increment the simulated date.</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d" title="Adjusts date up or down one day according to flags.">adjustDays</a>(&amp;date, <a class="code" href="classRTC.html#aacbe3ebbf893685950b05327c11d5c37" title="Increment the day, month, or year in a call to adjustDays(), adjustMonths(), or adjustYears().">INCREMENT</a>);</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a> = (uint8_t)(((sinceMidnight / MILLIS_PER_SECOND) % 60));</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a> = (uint8_t)(((sinceMidnight / MILLIS_PER_MINUTE) % 60));</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a> = (uint8_t)(sinceMidnight / MILLIS_PER_HOUR);</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;}</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div>
<div class="line"><a name="l00169"></a><span class="lineno"><a class="code" href="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e"> 169</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e" title="Reads the current date from the realtime clock into value.">RTC::readDate</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value)</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; *value = date;</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;</div>
<div class="line"><a name="l00179"></a><span class="lineno"><a class="code" href="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e"> 179</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e" title="Updates the time in the realtime clock to match value.">RTC::writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value)</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">// Adjust the position of the last simulated midnight event.</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sinceMidnight =</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a> * MILLIS_PER_SECOND +</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a> * MILLIS_PER_MINUTE +</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a> * MILLIS_PER_HOUR;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; midnight = millis() - sinceMidnight;</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;</div>
<div class="line"><a name="l00194"></a><span class="lineno"><a class="code" href="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7"> 194</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7" title="Updates the date in the realtime clock to match value.">RTC::writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value)</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; date = *value;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;}</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div>
<div class="line"><a name="l00209"></a><span class="lineno"><a class="code" href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66"> 209</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66" title="Reads the details of the alarm with index alarmNum into value.">RTC::readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value)</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;{</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; *value = alarms[alarmNum];</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;</div>
<div class="line"><a name="l00224"></a><span class="lineno"><a class="code" href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e"> 224</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e" title="Updates the details of the alarm with index alarmNum from value.">RTC::writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value)</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;{</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; alarms[alarmNum] = *value;</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;</div>
<div class="line"><a name="l00235"></a><span class="lineno"><a class="code" href="classRTC.html#acfdebfb449710e44e11f9a3675e14fd8"> 235</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classRTC.html#acfdebfb449710e44e11f9a3675e14fd8" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">RTC::byteCount</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> DEFAULT_BYTE_COUNT;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;}</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div>
<div class="line"><a name="l00247"></a><span class="lineno"><a class="code" href="classRTC.html#a0f47b10b436e3f9d36e04ec907579431"> 247</a></span>&#160;uint8_t <a class="code" href="classRTC.html#a0f47b10b436e3f9d36e04ec907579431" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">RTC::readByte</a>(uint8_t offset)</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;{</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (nvram)</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">return</span> nvram[offset];</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> 0;</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;</div>
<div class="line"><a name="l00262"></a><span class="lineno"><a class="code" href="classRTC.html#a1cab6397ec04b1e2b3feea5b3cd1f749"> 262</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRTC.html#a1cab6397ec04b1e2b3feea5b3cd1f749" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">RTC::writeByte</a>(uint8_t offset, uint8_t value)</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;{</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (nvram) {</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; nvram[offset] = value;</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; nvram = (uint8_t *)malloc(DEFAULT_BYTE_COUNT);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (nvram) {</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; memset(nvram, 0, DEFAULT_BYTE_COUNT);</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; nvram[offset] = value;</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"> 272</span>&#160; }</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;</div>
<div class="line"><a name="l00288"></a><span class="lineno"><a class="code" href="classRTC.html#aeca3c8387332e8cabfd09c1806276e5a"> 288</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classRTC.html#aeca3c8387332e8cabfd09c1806276e5a" title="Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius...">RTC::readTemperature</a>()</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">return</span> <a class="code" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8" title="Value that is returned from readTemperature() if the realtime clock chip cannot determine the tempera...">NO_TEMPERATURE</a>;</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;}</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div>
<div class="line"><a name="l00313"></a><span class="lineno"><a class="code" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d"> 313</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d" title="Adjusts date up or down one day according to flags.">RTC::adjustDays</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date, uint8_t flags)</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; <span class="keywordflow">if</span> (flags &amp; <a class="code" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f" title="Decrement the day, month, or year in a call to adjustDays(), adjustMonths(), or adjustYears().">DECREMENT</a>) {</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; --(date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a>);</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> == 0) {</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">if</span> (!(flags &amp; <a class="code" href="classRTC.html#a02ace2d775063be9a99035851c9274eb" title="Wrap around to the beginning of the current month/year rather than advance to the next one...">WRAP</a>)) {</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; --(date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a>);</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> == 0)</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = 12;</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; date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = monthLength(date);</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; }</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; ++(date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a>);</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> &gt; monthLength(date)) {</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span> (!(flags &amp; <a class="code" href="classRTC.html#a02ace2d775063be9a99035851c9274eb" title="Wrap around to the beginning of the current month/year rather than advance to the next one...">WRAP</a>)) {</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; ++(date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a>);</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> == 13)</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = 1;</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = 1;</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</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;</div>
<div class="line"><a name="l00343"></a><span class="lineno"><a class="code" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4"> 343</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4" title="Adjusts date up or down one month according to flags.">RTC::adjustMonths</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date, uint8_t flags)</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; <span class="keywordflow">if</span> (flags &amp; <a class="code" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f" title="Decrement the day, month, or year in a call to adjustDays(), adjustMonths(), or adjustYears().">DECREMENT</a>) {</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; --(date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a>);</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> == 0) {</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = 12;</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">if</span> (!(flags &amp; <a class="code" href="classRTC.html#a02ace2d775063be9a99035851c9274eb" title="Wrap around to the beginning of the current month/year rather than advance to the next one...">WRAP</a>) &amp;&amp; date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> &gt; 2000)</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; --(date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a>);</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; ++(date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a>);</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> == 13) {</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> = 1;</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">if</span> (!(flags &amp; <a class="code" href="classRTC.html#a02ace2d775063be9a99035851c9274eb" title="Wrap around to the beginning of the current month/year rather than advance to the next one...">WRAP</a>) &amp;&amp; date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> &lt; 2099)</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; ++(date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a>);</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; uint8_t len = monthLength(date);</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> &gt; len)</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = len;</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="l00370"></a><span class="lineno"><a class="code" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d"> 370</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d" title="Adjusts date up or down one year according to flags.">RTC::adjustYears</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date, uint8_t flags)</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="keywordflow">if</span> (flags &amp; <a class="code" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f" title="Decrement the day, month, or year in a call to adjustDays(), adjustMonths(), or adjustYears().">DECREMENT</a>) {</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; --(date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a>);</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> &lt; 2000)</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> = 2000;</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; ++(date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a>);</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> &gt; 2099)</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> = 2099;</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; uint8_t len = monthLength(date);</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> &gt; len)</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> = len;</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"> 385</span>&#160;</div>
<div class="line"><a name="l00399"></a><span class="lineno"><a class="code" href="classRTC.html#a525a9c1dad89613708f47a683eb316aa"> 399</a></span>&#160;<a class="code" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11" title="Day of the week corresponding to a date.">RTC::DayOfWeek</a> <a class="code" href="classRTC.html#a525a9c1dad89613708f47a683eb316aa" title="Returns the day of the week corresponding to date.">RTC::dayOfWeek</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date)</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;{</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="comment">// The +4 here adjusts for Jan 1, 2000 being a Saturday.</span></div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> daynum = date-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a> + 4;</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; daynum += monthOffsets[date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> - 1];</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a> &gt; 2 &amp;&amp; isLeapYear(date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a>))</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; ++daynum;</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; daynum += 365UL * (date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> - 2000);</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> &gt; 2000)</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; daynum += ((date-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a> - 2001) / 4) + 1;</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11" title="Day of the week corresponding to a date.">DayOfWeek</a>)((daynum % 7) + 1);</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;}</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: RTC.h Source File</title> <title>ArduinoLibs: RTC.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,124 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">RTC.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef RTC_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define RTC_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
<a name="l00027"></a>00027
<a name="l00028"></a><a class="code" href="structRTCTime.html">00028</a> <span class="keyword">struct </span><a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a>
<a name="l00029"></a>00029 {
<a name="l00030"></a><a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4">00030</a> uint8_t <a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a>;
<a name="l00031"></a><a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84">00031</a> uint8_t <a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a>;
<a name="l00032"></a><a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91">00032</a> uint8_t <a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a>;
<a name="l00033"></a>00033 };
<a name="l00034"></a>00034
<a name="l00035"></a><a class="code" href="structRTCDate.html">00035</a> <span class="keyword">struct </span><a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a>
<a name="l00036"></a>00036 {
<a name="l00037"></a><a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f">00037</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a>;
<a name="l00038"></a><a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202">00038</a> uint8_t <a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a>;
<a name="l00039"></a><a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c">00039</a> uint8_t <a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</a>;
<a name="l00040"></a>00040 };
<a name="l00041"></a>00041
<a name="l00042"></a><a class="code" href="structRTCAlarm.html">00042</a> <span class="keyword">struct </span><a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a>
<a name="l00043"></a>00043 {
<a name="l00044"></a><a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692">00044</a> uint8_t <a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a>;
<a name="l00045"></a><a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe">00045</a> uint8_t <a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a>;
<a name="l00046"></a><a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">00046</a> uint8_t <a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a>;
<a name="l00047"></a>00047 };
<a name="l00048"></a>00048
<a name="l00049"></a><a class="code" href="classRTC.html">00049</a> <span class="keyword">class </span><a class="code" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a>
<a name="l00050"></a>00050 {
<a name="l00051"></a>00051 <span class="keyword">public</span>:
<a name="l00052"></a>00052 <a class="code" href="classRTC.html#ada31c5120d18d2dd2863b3d440308da2" title="Constructs a new realtime clock handler.">RTC</a>();
<a name="l00053"></a>00053 ~<a class="code" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a>();
<a name="l00054"></a>00054
<a name="l00055"></a><a class="code" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11">00055</a> <span class="keyword">enum</span> <a class="code" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11" title="Day of the week corresponding to a date.">DayOfWeek</a>
<a name="l00056"></a>00056 {
<a name="l00057"></a>00057 Monday = 1,
<a name="l00058"></a>00058 Tuesday,
<a name="l00059"></a>00059 Wednesday,
<a name="l00060"></a>00060 Thursday,
<a name="l00061"></a>00061 Friday,
<a name="l00062"></a>00062 Saturday,
<a name="l00063"></a>00063 Sunday,
<a name="l00064"></a>00064 };
<a name="l00065"></a>00065
<a name="l00066"></a>00066 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classRTC.html#a3690761f29654a2c9e676fcbfa32dd30" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates</a>();
<a name="l00067"></a>00067
<a name="l00068"></a>00068 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec" title="Reads the current time from the realtime clock into value.">readTime</a>(<a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value);
<a name="l00069"></a>00069 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e" title="Reads the current date from the realtime clock into value.">readDate</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value);
<a name="l00070"></a>00070
<a name="l00071"></a>00071 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e" title="Updates the time in the realtime clock to match value.">writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value);
<a name="l00072"></a>00072 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7" title="Updates the date in the realtime clock to match value.">writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value);
<a name="l00073"></a>00073
<a name="l00074"></a><a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">00074</a> <span class="keyword">static</span> <span class="keyword">const</span> uint8_t <a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3" title="Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm().">ALARM_COUNT</a> = 4;
<a name="l00075"></a>00075
<a name="l00076"></a>00076 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66" title="Reads the details of the alarm with index alarmNum into value.">readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value);
<a name="l00077"></a>00077 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e" title="Updates the details of the alarm with index alarmNum from value.">writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value);
<a name="l00078"></a>00078
<a name="l00079"></a>00079 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classRTC.html#acfdebfb449710e44e11f9a3675e14fd8" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount</a>() <span class="keyword">const</span>;
<a name="l00080"></a>00080 <span class="keyword">virtual</span> uint8_t <a class="code" href="classRTC.html#a0f47b10b436e3f9d36e04ec907579431" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">readByte</a>(uint8_t offset);
<a name="l00081"></a>00081 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#a1cab6397ec04b1e2b3feea5b3cd1f749" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">writeByte</a>(uint8_t offset, uint8_t value);
<a name="l00082"></a>00082
<a name="l00083"></a><a class="code" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8">00083</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8" title="Value that is returned from readTemperature() if the realtime clock chip cannot determine the tempera...">NO_TEMPERATURE</a> = 32767;
<a name="l00084"></a>00084
<a name="l00085"></a>00085 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classRTC.html#aeca3c8387332e8cabfd09c1806276e5a" title="Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius...">readTemperature</a>();
<a name="l00086"></a>00086
<a name="l00087"></a>00087 <span class="comment">// Flags for adjustDays(), adjustMonths(), and adjustYears().</span>
<a name="l00088"></a><a class="code" href="classRTC.html#aacbe3ebbf893685950b05327c11d5c37">00088</a> <span class="keyword">static</span> <span class="keyword">const</span> uint8_t <a class="code" href="classRTC.html#aacbe3ebbf893685950b05327c11d5c37" title="Increment the day, month, or year in a call to adjustDays(), adjustMonths(), or adjustYears().">INCREMENT</a> = 0x0000;
<a name="l00089"></a><a class="code" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f">00089</a> <span class="keyword">static</span> <span class="keyword">const</span> uint8_t <a class="code" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f" title="Decrement the day, month, or year in a call to adjustDays(), adjustMonths(), or adjustYears().">DECREMENT</a> = 0x0001;
<a name="l00090"></a><a class="code" href="classRTC.html#a02ace2d775063be9a99035851c9274eb">00090</a> <span class="keyword">static</span> <span class="keyword">const</span> uint8_t <a class="code" href="classRTC.html#a02ace2d775063be9a99035851c9274eb" title="Wrap around to the beginning of the current month/year rather than advance to the next one...">WRAP</a> = 0x0002;
<a name="l00091"></a>00091
<a name="l00092"></a>00092 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d" title="Adjusts date up or down one day according to flags.">adjustDays</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date, uint8_t flags);
<a name="l00093"></a>00093 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4" title="Adjusts date up or down one month according to flags.">adjustMonths</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date, uint8_t flags);
<a name="l00094"></a>00094 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d" title="Adjusts date up or down one year according to flags.">adjustYears</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date, uint8_t flags);
<a name="l00095"></a>00095
<a name="l00096"></a>00096 <span class="keyword">static</span> <a class="code" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11" title="Day of the week corresponding to a date.">DayOfWeek</a> <a class="code" href="classRTC.html#a525a9c1dad89613708f47a683eb316aa" title="Returns the day of the week corresponding to date.">dayOfWeek</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date);
<a name="l00097"></a>00097
<a name="l00098"></a>00098 <span class="keyword">private</span>:
<a name="l00099"></a>00099 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> midnight;
<a name="l00100"></a>00100 <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> date;
<a name="l00101"></a>00101 <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> alarms[<a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3" title="Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm().">ALARM_COUNT</a>];
<a name="l00102"></a>00102 uint8_t *nvram;
<a name="l00103"></a>00103 };
<a name="l00104"></a>00104
<a name="l00105"></a>00105 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -181,8 +77,127 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_f34881fcf60f680b800190d5274dfaea.html">RTC</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">RTC.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef RTC_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RTC_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="structRTCTime.html"> 28</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div>
<div class="line"><a name="l00030"></a><span class="lineno"><a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4"> 30</a></span>&#160; uint8_t <a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4" title="Hour of the day (0-23)">hour</a>;</div>
<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84"> 31</a></span>&#160; uint8_t <a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84" title="Minute within the hour (0-59)">minute</a>;</div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91"> 32</a></span>&#160; uint8_t <a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91" title="Second within the minute (0-59)">second</a>;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;};</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"><a class="code" href="structRTCDate.html"> 35</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a></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"><a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f"> 37</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f" title="Year (4-digit)">year</a>;</div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202"> 38</a></span>&#160; uint8_t <a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202" title="Month of the year (1-12)">month</a>;</div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c"> 39</a></span>&#160; uint8_t <a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c" title="Day of the month (1-31)">day</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;</div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="code" href="structRTCAlarm.html"> 42</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692"> 44</a></span>&#160; uint8_t <a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692" title="Hour of the day for the alarm (0-23).">hour</a>;</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe"> 45</a></span>&#160; uint8_t <a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe" title="Minute of the hour for the alarm (0-59).">minute</a>;</div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e"> 46</a></span>&#160; uint8_t <a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e" title="Additional flags for the alarm.">flags</a>;</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;</div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="classRTC.html"> 49</a></span>&#160;<span class="keyword">class </span><a class="code" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="classRTC.html#ada31c5120d18d2dd2863b3d440308da2" title="Constructs a new realtime clock handler.">RTC</a>();</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; ~<a class="code" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a>();</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11"> 55</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11" title="Day of the week corresponding to a date.">DayOfWeek</a></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; Monday = 1,</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; Tuesday,</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; Wednesday,</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; Thursday,</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; Friday,</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; Saturday,</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; Sunday,</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"> 65</span>&#160;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classRTC.html#a3690761f29654a2c9e676fcbfa32dd30" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates</a>();</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec" title="Reads the current time from the realtime clock into value.">readTime</a>(<a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e" title="Reads the current date from the realtime clock into value.">readDate</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value);</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e" title="Updates the time in the realtime clock to match value.">writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html" title="Stores time information from a realtime clock chip.">RTCTime</a> *value);</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7" title="Updates the date in the realtime clock to match value.">writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *value);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3"> 74</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint8_t <a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3" title="Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm().">ALARM_COUNT</a> = 4;</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="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66" title="Reads the details of the alarm with index alarmNum into value.">readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e" title="Updates the details of the alarm with index alarmNum from value.">writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> *value);</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classRTC.html#acfdebfb449710e44e11f9a3675e14fd8" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">virtual</span> uint8_t <a class="code" href="classRTC.html#a0f47b10b436e3f9d36e04ec907579431" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">readByte</a>(uint8_t offset);</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#a1cab6397ec04b1e2b3feea5b3cd1f749" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">writeByte</a>(uint8_t offset, uint8_t value);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8"> 83</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8" title="Value that is returned from readTemperature() if the realtime clock chip cannot determine the tempera...">NO_TEMPERATURE</a> = 32767;</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; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classRTC.html#aeca3c8387332e8cabfd09c1806276e5a" title="Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius...">readTemperature</a>();</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; <span class="comment">// Flags for adjustDays(), adjustMonths(), and adjustYears().</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="classRTC.html#aacbe3ebbf893685950b05327c11d5c37"> 88</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint8_t <a class="code" href="classRTC.html#aacbe3ebbf893685950b05327c11d5c37" title="Increment the day, month, or year in a call to adjustDays(), adjustMonths(), or adjustYears().">INCREMENT</a> = 0x0000;</div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f"> 89</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint8_t <a class="code" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f" title="Decrement the day, month, or year in a call to adjustDays(), adjustMonths(), or adjustYears().">DECREMENT</a> = 0x0001;</div>
<div class="line"><a name="l00090"></a><span class="lineno"><a class="code" href="classRTC.html#a02ace2d775063be9a99035851c9274eb"> 90</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint8_t <a class="code" href="classRTC.html#a02ace2d775063be9a99035851c9274eb" title="Wrap around to the beginning of the current month/year rather than advance to the next one...">WRAP</a> = 0x0002;</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="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d" title="Adjusts date up or down one day according to flags.">adjustDays</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date, uint8_t flags);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4" title="Adjusts date up or down one month according to flags.">adjustMonths</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date, uint8_t flags);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d" title="Adjusts date up or down one year according to flags.">adjustYears</a>(<a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date, uint8_t flags);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">static</span> <a class="code" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11" title="Day of the week corresponding to a date.">DayOfWeek</a> <a class="code" href="classRTC.html#a525a9c1dad89613708f47a683eb316aa" title="Returns the day of the week corresponding to date.">dayOfWeek</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> *date);</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> midnight;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="structRTCDate.html" title="Stores date information from a realtime clock chip.">RTCDate</a> date;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="structRTCAlarm.html" title="Stores alarm information from a realtime clock chip.">RTCAlarm</a> alarms[<a class="code" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3" title="Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm().">ALARM_COUNT</a>];</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; uint8_t *nvram;</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">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: SoftI2C.cpp Source File</title> <title>ArduinoLibs: SoftI2C.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,203 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">SoftI2C.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;SoftI2C.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#else</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#endif</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span>
<a name="l00045"></a>00045 <span class="preprocessor">#define i2cDelay() delayMicroseconds(5)</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span>
<a name="l00050"></a><a class="code" href="classSoftI2C.html#adb6e00ee3f930f1d32010a18feb5f6cc">00050</a> <a class="code" href="classSoftI2C.html#adb6e00ee3f930f1d32010a18feb5f6cc" title="Constructs a new software I2C master on dataPin and clockPin.">SoftI2C::SoftI2C</a>(uint8_t dataPin, uint8_t clockPin)
<a name="l00051"></a>00051 : _dataPin(dataPin)
<a name="l00052"></a>00052 , _clockPin(clockPin)
<a name="l00053"></a>00053 , started(false)
<a name="l00054"></a>00054 , acked(true)
<a name="l00055"></a>00055 , inWrite(false)
<a name="l00056"></a>00056 , readCount(0)
<a name="l00057"></a>00057 {
<a name="l00058"></a>00058 <span class="comment">// Initially set the CLOCK and DATA lines to be outputs in the high state.</span>
<a name="l00059"></a>00059 pinMode(_clockPin, OUTPUT);
<a name="l00060"></a>00060 pinMode(_dataPin, OUTPUT);
<a name="l00061"></a>00061 digitalWrite(_clockPin, HIGH);
<a name="l00062"></a>00062 digitalWrite(_dataPin, HIGH);
<a name="l00063"></a>00063 }
<a name="l00064"></a>00064
<a name="l00065"></a><a class="code" href="classSoftI2C.html#aad488669f28f6a5a4ceaae3de61d38f4">00065</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classSoftI2C.html#aad488669f28f6a5a4ceaae3de61d38f4" title="Returns the maximum number of bytes that can be read or written in a single request by this bus maste...">SoftI2C::maxTransferSize</a>()<span class="keyword"> const</span>
<a name="l00066"></a>00066 <span class="keyword"></span>{
<a name="l00067"></a>00067 <span class="keywordflow">return</span> 0xFFFF;
<a name="l00068"></a>00068 }
<a name="l00069"></a>00069
<a name="l00070"></a>00070 <span class="keywordtype">void</span> SoftI2C::start()
<a name="l00071"></a>00071 {
<a name="l00072"></a>00072 pinMode(_dataPin, OUTPUT);
<a name="l00073"></a>00073 <span class="keywordflow">if</span> (started) {
<a name="l00074"></a>00074 <span class="comment">// Already started, so send a restart condition.</span>
<a name="l00075"></a>00075 digitalWrite(_dataPin, HIGH);
<a name="l00076"></a>00076 digitalWrite(_clockPin, HIGH);
<a name="l00077"></a>00077 i2cDelay();
<a name="l00078"></a>00078 }
<a name="l00079"></a>00079 digitalWrite(_dataPin, LOW);
<a name="l00080"></a>00080 i2cDelay();
<a name="l00081"></a>00081 digitalWrite(_clockPin, LOW);
<a name="l00082"></a>00082 i2cDelay();
<a name="l00083"></a>00083 started = <span class="keyword">true</span>;
<a name="l00084"></a>00084 acked = <span class="keyword">true</span>;
<a name="l00085"></a>00085 }
<a name="l00086"></a>00086
<a name="l00087"></a>00087 <span class="keywordtype">void</span> SoftI2C::stop()
<a name="l00088"></a>00088 {
<a name="l00089"></a>00089 pinMode(_dataPin, OUTPUT);
<a name="l00090"></a>00090 digitalWrite(_dataPin, LOW);
<a name="l00091"></a>00091 digitalWrite(_clockPin, HIGH);
<a name="l00092"></a>00092 i2cDelay();
<a name="l00093"></a>00093 digitalWrite(_dataPin, HIGH);
<a name="l00094"></a>00094 i2cDelay();
<a name="l00095"></a>00095 started = <span class="keyword">false</span>;
<a name="l00096"></a>00096 inWrite = <span class="keyword">false</span>;
<a name="l00097"></a>00097 }
<a name="l00098"></a>00098
<a name="l00099"></a>00099 <span class="preprocessor">#define I2C_WRITE 0x00</span>
<a name="l00100"></a>00100 <span class="preprocessor"></span><span class="preprocessor">#define I2C_WRITE10 0xF0</span>
<a name="l00101"></a>00101 <span class="preprocessor"></span><span class="preprocessor">#define I2C_READ 0x01</span>
<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="preprocessor">#define I2C_READ10 0xF1</span>
<a name="l00103"></a>00103 <span class="preprocessor"></span>
<a name="l00104"></a><a class="code" href="classSoftI2C.html#aa8a3219f4e6ff52306cc3c219f37d8f9">00104</a> <span class="keywordtype">void</span> <a class="code" href="classSoftI2C.html#aa8a3219f4e6ff52306cc3c219f37d8f9" title="Starts a write operation by sending a start condition and the I2C control byte.">SoftI2C::startWrite</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> address)
<a name="l00105"></a>00105 {
<a name="l00106"></a>00106 start();
<a name="l00107"></a>00107 inWrite = <span class="keyword">true</span>;
<a name="l00108"></a>00108 <span class="keywordflow">if</span> (address &lt; 0x80) {
<a name="l00109"></a>00109 <span class="comment">// 7-bit address.</span>
<a name="l00110"></a>00110 <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)((address &lt;&lt; 1) | I2C_WRITE));
<a name="l00111"></a>00111 } <span class="keywordflow">else</span> {
<a name="l00112"></a>00112 <span class="comment">// 10-bit address.</span>
<a name="l00113"></a>00113 <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)(((address &gt;&gt; 7) &amp; 0x06)) | I2C_WRITE10);
<a name="l00114"></a>00114 <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)address);
<a name="l00115"></a>00115 }
<a name="l00116"></a>00116 }
<a name="l00117"></a>00117
<a name="l00118"></a><a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73">00118</a> <span class="keywordtype">void</span> <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">SoftI2C::write</a>(uint8_t value)
<a name="l00119"></a>00119 {
<a name="l00120"></a>00120 uint8_t mask = 0x80;
<a name="l00121"></a>00121 <span class="keywordflow">while</span> (mask != 0) {
<a name="l00122"></a>00122 writeBit((value &amp; mask) != 0);
<a name="l00123"></a>00123 mask &gt;&gt;= 1;
<a name="l00124"></a>00124 }
<a name="l00125"></a>00125 <span class="keywordflow">if</span> (readBit()) <span class="comment">// 0: ACK, 1: NACK</span>
<a name="l00126"></a>00126 acked = <span class="keyword">false</span>;
<a name="l00127"></a>00127 }
<a name="l00128"></a>00128
<a name="l00129"></a><a class="code" href="classSoftI2C.html#aa12ae82813598b2e9ea70463c23c5bf3">00129</a> <span class="keywordtype">bool</span> <a class="code" href="classSoftI2C.html#aa12ae82813598b2e9ea70463c23c5bf3" title="Ends the current write operation.">SoftI2C::endWrite</a>()
<a name="l00130"></a>00130 {
<a name="l00131"></a>00131 stop();
<a name="l00132"></a>00132 <span class="keywordflow">return</span> acked;
<a name="l00133"></a>00133 }
<a name="l00134"></a>00134
<a name="l00135"></a><a class="code" href="classSoftI2C.html#aa0dafc067cfa374af75e060dca647ec3">00135</a> <span class="keywordtype">bool</span> <a class="code" href="classSoftI2C.html#aa0dafc067cfa374af75e060dca647ec3" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">SoftI2C::startRead</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> address, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count)
<a name="l00136"></a>00136 {
<a name="l00137"></a>00137 start();
<a name="l00138"></a>00138 inWrite = <span class="keyword">false</span>;
<a name="l00139"></a>00139 <span class="keywordflow">if</span> (address &lt; 0x80) {
<a name="l00140"></a>00140 <span class="comment">// 7-bit address.</span>
<a name="l00141"></a>00141 <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)((address &lt;&lt; 1) | I2C_READ));
<a name="l00142"></a>00142 } <span class="keywordflow">else</span> {
<a name="l00143"></a>00143 <span class="comment">// 10-bit address.</span>
<a name="l00144"></a>00144 <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)(((address &gt;&gt; 7) &amp; 0x06)) | I2C_READ10);
<a name="l00145"></a>00145 <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)address);
<a name="l00146"></a>00146 }
<a name="l00147"></a>00147 <span class="keywordflow">if</span> (!acked) {
<a name="l00148"></a>00148 readCount = 0;
<a name="l00149"></a>00149 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00150"></a>00150 }
<a name="l00151"></a>00151 readCount = count;
<a name="l00152"></a>00152 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00153"></a>00153 }
<a name="l00154"></a>00154
<a name="l00155"></a><a class="code" href="classSoftI2C.html#a849af91018caedbb82e83f02c543305e">00155</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classSoftI2C.html#a849af91018caedbb82e83f02c543305e" title="Returns the number of bytes that are still available for reading.">SoftI2C::available</a>()
<a name="l00156"></a>00156 {
<a name="l00157"></a>00157 <span class="keywordflow">return</span> readCount;
<a name="l00158"></a>00158 }
<a name="l00159"></a>00159
<a name="l00160"></a><a class="code" href="classSoftI2C.html#a330dbba5b726fa161a6b01a9ca49e1bc">00160</a> uint8_t <a class="code" href="classSoftI2C.html#a330dbba5b726fa161a6b01a9ca49e1bc" title="Reads a single byte from the I2C bus.">SoftI2C::read</a>()
<a name="l00161"></a>00161 {
<a name="l00162"></a>00162 uint8_t value = 0;
<a name="l00163"></a>00163 <span class="keywordflow">for</span> (uint8_t bit = 0; bit &lt; 8; ++bit)
<a name="l00164"></a>00164 value = (value &lt;&lt; 1) | readBit();
<a name="l00165"></a>00165 <span class="keywordflow">if</span> (readCount &gt; 1) {
<a name="l00166"></a>00166 <span class="comment">// More bytes left to read - send an ACK.</span>
<a name="l00167"></a>00167 writeBit(<span class="keyword">false</span>);
<a name="l00168"></a>00168 --readCount;
<a name="l00169"></a>00169 } <span class="keywordflow">else</span> {
<a name="l00170"></a>00170 <span class="comment">// Last byte - send the NACK and a stop condition.</span>
<a name="l00171"></a>00171 writeBit(<span class="keyword">true</span>);
<a name="l00172"></a>00172 stop();
<a name="l00173"></a>00173 readCount = 0;
<a name="l00174"></a>00174 }
<a name="l00175"></a>00175 <span class="keywordflow">return</span> value;
<a name="l00176"></a>00176 }
<a name="l00177"></a>00177
<a name="l00178"></a>00178 <span class="keywordtype">void</span> SoftI2C::writeBit(<span class="keywordtype">bool</span> bit)
<a name="l00179"></a>00179 {
<a name="l00180"></a>00180 pinMode(_dataPin, OUTPUT);
<a name="l00181"></a>00181 <span class="keywordflow">if</span> (bit)
<a name="l00182"></a>00182 digitalWrite(_dataPin, HIGH);
<a name="l00183"></a>00183 <span class="keywordflow">else</span>
<a name="l00184"></a>00184 digitalWrite(_dataPin, LOW);
<a name="l00185"></a>00185 i2cDelay();
<a name="l00186"></a>00186 digitalWrite(_clockPin, HIGH);
<a name="l00187"></a>00187 i2cDelay();
<a name="l00188"></a>00188 digitalWrite(_clockPin, LOW);
<a name="l00189"></a>00189 i2cDelay();
<a name="l00190"></a>00190 }
<a name="l00191"></a>00191
<a name="l00192"></a>00192 <span class="keywordtype">bool</span> SoftI2C::readBit()
<a name="l00193"></a>00193 {
<a name="l00194"></a>00194 pinMode(_dataPin, INPUT);
<a name="l00195"></a>00195 digitalWrite(_dataPin, HIGH);
<a name="l00196"></a>00196 digitalWrite(_clockPin, HIGH);
<a name="l00197"></a>00197 <span class="keywordtype">bool</span> bit = digitalRead(_dataPin);
<a name="l00198"></a>00198 i2cDelay();
<a name="l00199"></a>00199 digitalWrite(_clockPin, LOW);
<a name="l00200"></a>00200 i2cDelay();
<a name="l00201"></a>00201 <span class="keywordflow">return</span> bit;
<a name="l00202"></a>00202 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -260,8 +77,206 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_f9b96888882c2691b8eeaeafd1b9501d.html">I2C</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">SoftI2C.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;SoftI2C.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define i2cDelay() delayMicroseconds(5)</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="classSoftI2C.html#adb6e00ee3f930f1d32010a18feb5f6cc"> 50</a></span>&#160;<a class="code" href="classSoftI2C.html#adb6e00ee3f930f1d32010a18feb5f6cc" title="Constructs a new software I2C master on dataPin and clockPin.">SoftI2C::SoftI2C</a>(uint8_t dataPin, uint8_t clockPin)</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; : _dataPin(dataPin)</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; , _clockPin(clockPin)</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; , started(false)</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; , acked(true)</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; , inWrite(false)</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; , readCount(0)</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; <span class="comment">// Initially set the CLOCK and DATA lines to be outputs in the high state.</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; pinMode(_clockPin, OUTPUT);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; pinMode(_dataPin, OUTPUT);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; digitalWrite(_clockPin, HIGH);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; digitalWrite(_dataPin, HIGH);</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="classSoftI2C.html#aad488669f28f6a5a4ceaae3de61d38f4"> 65</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classSoftI2C.html#aad488669f28f6a5a4ceaae3de61d38f4" title="Returns the maximum number of bytes that can be read or written in a single request by this bus maste...">SoftI2C::maxTransferSize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> 0xFFFF;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;}</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;<span class="keywordtype">void</span> SoftI2C::start()</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; pinMode(_dataPin, OUTPUT);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (started) {</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Already started, so send a restart condition.</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; digitalWrite(_dataPin, HIGH);</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; digitalWrite(_clockPin, HIGH);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; i2cDelay();</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; digitalWrite(_dataPin, LOW);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; i2cDelay();</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; digitalWrite(_clockPin, LOW);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; i2cDelay();</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; started = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; acked = <span class="keyword">true</span>;</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"> 86</span>&#160;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keywordtype">void</span> SoftI2C::stop()</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; pinMode(_dataPin, OUTPUT);</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; digitalWrite(_dataPin, LOW);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; digitalWrite(_clockPin, HIGH);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; i2cDelay();</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; digitalWrite(_dataPin, HIGH);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; i2cDelay();</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; started = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; inWrite = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;}</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor">#define I2C_WRITE 0x00</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_WRITE10 0xF0</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_READ 0x01</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define I2C_READ10 0xF1</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00104"></a><span class="lineno"><a class="code" href="classSoftI2C.html#aa8a3219f4e6ff52306cc3c219f37d8f9"> 104</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSoftI2C.html#aa8a3219f4e6ff52306cc3c219f37d8f9" title="Starts a write operation by sending a start condition and the I2C control byte.">SoftI2C::startWrite</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> address)</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; start();</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; inWrite = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (address &lt; 0x80) {</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="comment">// 7-bit address.</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)((address &lt;&lt; 1) | I2C_WRITE));</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="comment">// 10-bit address.</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)(((address &gt;&gt; 7) &amp; 0x06)) | I2C_WRITE10);</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)address);</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;}</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"><a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73"> 118</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">SoftI2C::write</a>(uint8_t value)</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; uint8_t mask = 0x80;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">while</span> (mask != 0) {</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; writeBit((value &amp; mask) != 0);</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; mask &gt;&gt;= 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; <span class="keywordflow">if</span> (readBit()) <span class="comment">// 0: ACK, 1: NACK</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; acked = <span class="keyword">false</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"><a class="code" href="classSoftI2C.html#aa12ae82813598b2e9ea70463c23c5bf3"> 129</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSoftI2C.html#aa12ae82813598b2e9ea70463c23c5bf3" title="Ends the current write operation.">SoftI2C::endWrite</a>()</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;{</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; stop();</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> acked;</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;</div>
<div class="line"><a name="l00135"></a><span class="lineno"><a class="code" href="classSoftI2C.html#aa0dafc067cfa374af75e060dca647ec3"> 135</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSoftI2C.html#aa0dafc067cfa374af75e060dca647ec3" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">SoftI2C::startRead</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> address, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count)</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;{</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; start();</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; inWrite = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span> (address &lt; 0x80) {</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// 7-bit address.</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)((address &lt;&lt; 1) | I2C_READ));</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// 10-bit address.</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)(((address &gt;&gt; 7) &amp; 0x06)) | I2C_READ10);</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">write</a>((uint8_t)address);</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span> (!acked) {</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; readCount = 0;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</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; readCount = count;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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"><a class="code" href="classSoftI2C.html#a849af91018caedbb82e83f02c543305e"> 155</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classSoftI2C.html#a849af91018caedbb82e83f02c543305e" title="Returns the number of bytes that are still available for reading.">SoftI2C::available</a>()</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;{</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> readCount;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;}</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00160"></a><span class="lineno"><a class="code" href="classSoftI2C.html#a330dbba5b726fa161a6b01a9ca49e1bc"> 160</a></span>&#160;uint8_t <a class="code" href="classSoftI2C.html#a330dbba5b726fa161a6b01a9ca49e1bc" title="Reads a single byte from the I2C bus.">SoftI2C::read</a>()</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; uint8_t value = 0;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">for</span> (uint8_t bit = 0; bit &lt; 8; ++bit)</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; value = (value &lt;&lt; 1) | readBit();</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span> (readCount &gt; 1) {</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="comment">// More bytes left to read - send an ACK.</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; writeBit(<span class="keyword">false</span>);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; --readCount;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="comment">// Last byte - send the NACK and a stop condition.</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; writeBit(<span class="keyword">true</span>);</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; stop();</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; readCount = 0;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> value;</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="keywordtype">void</span> SoftI2C::writeBit(<span class="keywordtype">bool</span> bit)</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; pinMode(_dataPin, OUTPUT);</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (bit)</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; digitalWrite(_dataPin, HIGH);</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; digitalWrite(_dataPin, LOW);</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; i2cDelay();</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; digitalWrite(_clockPin, HIGH);</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; i2cDelay();</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; digitalWrite(_clockPin, LOW);</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; i2cDelay();</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="keywordtype">bool</span> SoftI2C::readBit()</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; pinMode(_dataPin, INPUT);</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; digitalWrite(_dataPin, HIGH);</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; digitalWrite(_clockPin, HIGH);</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">bool</span> bit = digitalRead(_dataPin);</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; i2cDelay();</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; digitalWrite(_clockPin, LOW);</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; i2cDelay();</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> bit;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: SoftI2C.h Source File</title> <title>ArduinoLibs: SoftI2C.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,75 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">SoftI2C.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef SoftI2C_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define SoftI2C_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;I2CMaster.h&quot;</span>
<a name="l00027"></a>00027
<a name="l00028"></a><a class="code" href="classSoftI2C.html">00028</a> <span class="keyword">class </span><a class="code" href="classSoftI2C.html" title="Bit-banged implementation of an I2C master.">SoftI2C</a> : <span class="keyword">public</span> <a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> {
<a name="l00029"></a>00029 <span class="keyword">public</span>:
<a name="l00030"></a>00030 <a class="code" href="classSoftI2C.html#adb6e00ee3f930f1d32010a18feb5f6cc" title="Constructs a new software I2C master on dataPin and clockPin.">SoftI2C</a>(uint8_t dataPin, uint8_t clockPin);
<a name="l00031"></a>00031
<a name="l00032"></a>00032 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classSoftI2C.html#aad488669f28f6a5a4ceaae3de61d38f4" title="Returns the maximum number of bytes that can be read or written in a single request by this bus maste...">maxTransferSize</a>() <span class="keyword">const</span>;
<a name="l00033"></a>00033
<a name="l00034"></a>00034 <span class="keywordtype">void</span> <a class="code" href="classSoftI2C.html#aa8a3219f4e6ff52306cc3c219f37d8f9" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> address);
<a name="l00035"></a>00035 <span class="keywordtype">void</span> <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">write</a>(uint8_t value);
<a name="l00036"></a>00036 <span class="keywordtype">bool</span> <a class="code" href="classSoftI2C.html#aa12ae82813598b2e9ea70463c23c5bf3" title="Ends the current write operation.">endWrite</a>();
<a name="l00037"></a>00037
<a name="l00038"></a>00038 <span class="keywordtype">bool</span> <a class="code" href="classSoftI2C.html#aa0dafc067cfa374af75e060dca647ec3" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> address, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count);
<a name="l00039"></a>00039 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classSoftI2C.html#a849af91018caedbb82e83f02c543305e" title="Returns the number of bytes that are still available for reading.">available</a>();
<a name="l00040"></a>00040 uint8_t <a class="code" href="classSoftI2C.html#a330dbba5b726fa161a6b01a9ca49e1bc" title="Reads a single byte from the I2C bus.">read</a>();
<a name="l00041"></a>00041
<a name="l00042"></a>00042 <span class="keyword">private</span>:
<a name="l00043"></a>00043 uint8_t _dataPin;
<a name="l00044"></a>00044 uint8_t _clockPin;
<a name="l00045"></a>00045 <span class="keywordtype">bool</span> started;
<a name="l00046"></a>00046 <span class="keywordtype">bool</span> acked;
<a name="l00047"></a>00047 <span class="keywordtype">bool</span> inWrite;
<a name="l00048"></a>00048 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> readCount;
<a name="l00049"></a>00049
<a name="l00050"></a>00050 <span class="keywordtype">void</span> start();
<a name="l00051"></a>00051 <span class="keywordtype">void</span> stop();
<a name="l00052"></a>00052 <span class="keywordtype">void</span> writeBit(<span class="keywordtype">bool</span> bit);
<a name="l00053"></a>00053 <span class="keywordtype">bool</span> readBit();
<a name="l00054"></a>00054 };
<a name="l00055"></a>00055
<a name="l00056"></a>00056 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -132,8 +77,78 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_f9b96888882c2691b8eeaeafd1b9501d.html">I2C</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">SoftI2C.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef SoftI2C_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SoftI2C_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;I2CMaster.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="classSoftI2C.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSoftI2C.html" title="Bit-banged implementation of an I2C master.">SoftI2C</a> : <span class="keyword">public</span> <a class="code" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> {</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="classSoftI2C.html#adb6e00ee3f930f1d32010a18feb5f6cc" title="Constructs a new software I2C master on dataPin and clockPin.">SoftI2C</a>(uint8_t dataPin, uint8_t clockPin);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classSoftI2C.html#aad488669f28f6a5a4ceaae3de61d38f4" title="Returns the maximum number of bytes that can be read or written in a single request by this bus maste...">maxTransferSize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSoftI2C.html#aa8a3219f4e6ff52306cc3c219f37d8f9" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> address);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73" title="Writes a single byte value on the I2C bus.">write</a>(uint8_t value);</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSoftI2C.html#aa12ae82813598b2e9ea70463c23c5bf3" title="Ends the current write operation.">endWrite</a>();</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSoftI2C.html#aa0dafc067cfa374af75e060dca647ec3" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> address, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classSoftI2C.html#a849af91018caedbb82e83f02c543305e" title="Returns the number of bytes that are still available for reading.">available</a>();</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; uint8_t <a class="code" href="classSoftI2C.html#a330dbba5b726fa161a6b01a9ca49e1bc" title="Reads a single byte from the I2C bus.">read</a>();</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="keyword">private</span>:</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; uint8_t _dataPin;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; uint8_t _clockPin;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">bool</span> started;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">bool</span> acked;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">bool</span> inWrite;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> readCount;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">void</span> start();</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">void</span> stop();</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">void</span> writeBit(<span class="keywordtype">bool</span> bit);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">bool</span> readBit();</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;};</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: TextField.cpp Source File</title> <title>ArduinoLibs: TextField.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,75 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">TextField.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;TextField.h&quot;</span>
<a name="l00024"></a>00024
<a name="l00066"></a><a class="code" href="classTextField.html#a5108741ab147b2cd5a399fefbe0a2382">00066</a> <a class="code" href="classTextField.html#a5108741ab147b2cd5a399fefbe0a2382" title="Constructs a new text field with a specific label.">TextField::TextField</a>(<span class="keyword">const</span> String &amp;label)
<a name="l00067"></a>00067 : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(label)
<a name="l00068"></a>00068 {
<a name="l00069"></a>00069 }
<a name="l00070"></a>00070
<a name="l00077"></a><a class="code" href="classTextField.html#a24096a344d9161b2c99ce724ec2ee93c">00077</a> <a class="code" href="classTextField.html#a5108741ab147b2cd5a399fefbe0a2382" title="Constructs a new text field with a specific label.">TextField::TextField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label, <span class="keyword">const</span> String &amp;value)
<a name="l00078"></a>00078 : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(form, label)
<a name="l00079"></a>00079 , _value(value)
<a name="l00080"></a>00080 {
<a name="l00081"></a>00081 }
<a name="l00082"></a>00082
<a name="l00083"></a><a class="code" href="classTextField.html#aa78f1354f9240b64fabd6f996e312f32">00083</a> <span class="keywordtype">void</span> <a class="code" href="classTextField.html#aa78f1354f9240b64fabd6f996e312f32" title="Enters the field due to form navigation.">TextField::enterField</a>(<span class="keywordtype">bool</span> reverse)
<a name="l00084"></a>00084 {
<a name="l00085"></a>00085 <a class="code" href="classTextField.html#aa78f1354f9240b64fabd6f996e312f32" title="Enters the field due to form navigation.">Field::enterField</a>(reverse);
<a name="l00086"></a>00086 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(0, 1);
<a name="l00087"></a>00087 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;print(_value);
<a name="l00088"></a>00088 }
<a name="l00089"></a>00089
<a name="l00102"></a><a class="code" href="classTextField.html#a24b98c5bb744331bf0a5facc8ea9c033">00102</a> <span class="keywordtype">void</span> <a class="code" href="classTextField.html#a24b98c5bb744331bf0a5facc8ea9c033" title="Sets the text value that is displayed by this field.">TextField::setValue</a>(<span class="keyword">const</span> String &amp;value)
<a name="l00103"></a>00103 {
<a name="l00104"></a>00104 <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>()) {
<a name="l00105"></a>00105 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> prevLen = _value.length();
<a name="l00106"></a>00106 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> newLen = value.length();
<a name="l00107"></a>00107 _value = <a class="code" href="classTextField.html#a124764b6fc7c19aaf683f72cd42636b1" title="Returns the text value that is currently displayed by this field.">value</a>;
<a name="l00108"></a>00108 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(0, 1);
<a name="l00109"></a>00109 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;print(value);
<a name="l00110"></a>00110 <span class="keywordflow">while</span> (newLen++ &lt; prevLen)
<a name="l00111"></a>00111 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39; &#39;</span>);
<a name="l00112"></a>00112 } <span class="keywordflow">else</span> {
<a name="l00113"></a>00113 _value = <a class="code" href="classTextField.html#a124764b6fc7c19aaf683f72cd42636b1" title="Returns the text value that is currently displayed by this field.">value</a>;
<a name="l00114"></a>00114 }
<a name="l00115"></a>00115 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -132,8 +77,78 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">TextField.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;TextField.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="classTextField.html#a5108741ab147b2cd5a399fefbe0a2382"> 66</a></span>&#160;<a class="code" href="classTextField.html#a5108741ab147b2cd5a399fefbe0a2382" title="Constructs a new text field with a specific label.">TextField::TextField</a>(<span class="keyword">const</span> String &amp;label)</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(label)</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;{</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;</div>
<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="classTextField.html#a24096a344d9161b2c99ce724ec2ee93c"> 77</a></span>&#160;<a class="code" href="classTextField.html#a5108741ab147b2cd5a399fefbe0a2382" title="Constructs a new text field with a specific label.">TextField::TextField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label, <span class="keyword">const</span> String &amp;value)</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(form, label)</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; , _value(value)</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;}</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="classTextField.html#aa78f1354f9240b64fabd6f996e312f32"> 83</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classTextField.html#aa78f1354f9240b64fabd6f996e312f32" title="Enters the field due to form navigation.">TextField::enterField</a>(<span class="keywordtype">bool</span> reverse)</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; <a class="code" href="classTextField.html#aa78f1354f9240b64fabd6f996e312f32" title="Enters the field due to form navigation.">Field::enterField</a>(reverse);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(0, 1);</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;print(_value);</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="l00102"></a><span class="lineno"><a class="code" href="classTextField.html#a24b98c5bb744331bf0a5facc8ea9c033"> 102</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classTextField.html#a24b98c5bb744331bf0a5facc8ea9c033" title="Sets the text value that is displayed by this field.">TextField::setValue</a>(<span class="keyword">const</span> String &amp;value)</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; <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>()) {</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> prevLen = _value.length();</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> newLen = value.length();</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; _value = <a class="code" href="classTextField.html#a124764b6fc7c19aaf683f72cd42636b1" title="Returns the text value that is currently displayed by this field.">value</a>;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(0, 1);</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;print(value);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">while</span> (newLen++ &lt; prevLen)</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39; &#39;</span>);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; _value = <a class="code" href="classTextField.html#a124764b6fc7c19aaf683f72cd42636b1" title="Returns the text value that is currently displayed by this field.">value</a>;</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;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: TextField.h Source File</title> <title>ArduinoLibs: TextField.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,61 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">TextField.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef TextField_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define TextField_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;Field.h&quot;</span>
<a name="l00027"></a>00027
<a name="l00028"></a><a class="code" href="classTextField.html">00028</a> <span class="keyword">class </span><a class="code" href="classTextField.html" title="Field that displays a read-only text value.">TextField</a> : <span class="keyword">public</span> <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> {
<a name="l00029"></a>00029 <span class="keyword">public</span>:
<a name="l00030"></a>00030 <span class="keyword">explicit</span> <a class="code" href="classTextField.html#a5108741ab147b2cd5a399fefbe0a2382" title="Constructs a new text field with a specific label.">TextField</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>);
<a name="l00031"></a>00031 <a class="code" href="classTextField.html#a5108741ab147b2cd5a399fefbe0a2382" title="Constructs a new text field with a specific label.">TextField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5" title="Returns the Form that owns this field; null if not associated with a Form.">form</a>, <span class="keyword">const</span> String &amp;label, <span class="keyword">const</span> String &amp;<a class="code" href="classTextField.html#a124764b6fc7c19aaf683f72cd42636b1" title="Returns the text value that is currently displayed by this field.">value</a>);
<a name="l00032"></a>00032
<a name="l00033"></a>00033 <span class="keywordtype">void</span> <a class="code" href="classTextField.html#aa78f1354f9240b64fabd6f996e312f32" title="Enters the field due to form navigation.">enterField</a>(<span class="keywordtype">bool</span> reverse);
<a name="l00034"></a>00034
<a name="l00035"></a><a class="code" href="classTextField.html#a124764b6fc7c19aaf683f72cd42636b1">00035</a> <span class="keyword">const</span> String &amp;<a class="code" href="classTextField.html#a124764b6fc7c19aaf683f72cd42636b1" title="Returns the text value that is currently displayed by this field.">value</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _value; }
<a name="l00036"></a>00036 <span class="keywordtype">void</span> <a class="code" href="classTextField.html#a24b98c5bb744331bf0a5facc8ea9c033" title="Sets the text value that is displayed by this field.">setValue</a>(<span class="keyword">const</span> String &amp;value);
<a name="l00037"></a>00037
<a name="l00038"></a>00038 <span class="keyword">private</span>:
<a name="l00039"></a>00039 String _value;
<a name="l00040"></a>00040 };
<a name="l00041"></a>00041
<a name="l00042"></a>00042 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -118,8 +77,64 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">TextField.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef TextField_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define TextField_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;Field.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="classTextField.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classTextField.html" title="Field that displays a read-only text value.">TextField</a> : <span class="keyword">public</span> <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> {</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classTextField.html#a5108741ab147b2cd5a399fefbe0a2382" title="Constructs a new text field with a specific label.">TextField</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classTextField.html#a5108741ab147b2cd5a399fefbe0a2382" title="Constructs a new text field with a specific label.">TextField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5" title="Returns the Form that owns this field; null if not associated with a Form.">form</a>, <span class="keyword">const</span> String &amp;label, <span class="keyword">const</span> String &amp;<a class="code" href="classTextField.html#a124764b6fc7c19aaf683f72cd42636b1" title="Returns the text value that is currently displayed by this field.">value</a>);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classTextField.html#aa78f1354f9240b64fabd6f996e312f32" title="Enters the field due to form navigation.">enterField</a>(<span class="keywordtype">bool</span> reverse);</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"><a class="code" href="classTextField.html#a124764b6fc7c19aaf683f72cd42636b1"> 35</a></span>&#160; <span class="keyword">const</span> String &amp;<a class="code" href="classTextField.html#a124764b6fc7c19aaf683f72cd42636b1" title="Returns the text value that is currently displayed by this field.">value</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _value; }</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classTextField.html#a24b98c5bb744331bf0a5facc8ea9c033" title="Sets the text value that is displayed by this field.">setValue</a>(<span class="keyword">const</span> String &amp;value);</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; String _value;</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;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: TimeField.cpp Source File</title> <title>ArduinoLibs: TimeField.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,240 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">TimeField.cpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;TimeField.h&quot;</span>
<a name="l00024"></a>00024
<a name="l00065"></a>00065 <span class="preprocessor">#define EDIT_HOUR 0</span>
<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="preprocessor">#define EDIT_MINUTE_TENS 1</span>
<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="preprocessor">#define EDIT_MINUTE 2</span>
<a name="l00068"></a>00068 <span class="preprocessor"></span><span class="preprocessor">#define EDIT_SECOND_TENS 3</span>
<a name="l00069"></a>00069 <span class="preprocessor"></span><span class="preprocessor">#define EDIT_SECOND 4</span>
<a name="l00070"></a>00070 <span class="preprocessor"></span>
<a name="l00082"></a><a class="code" href="classTimeField.html#a138e2425379705828a87eb2d8a836431">00082</a> <a class="code" href="classTimeField.html#a138e2425379705828a87eb2d8a836431" title="Constructs a new time field with a specific label.">TimeField::TimeField</a>(<span class="keyword">const</span> String &amp;label)
<a name="l00083"></a>00083 : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(label)
<a name="l00084"></a>00084 , _value(0)
<a name="l00085"></a>00085 , _maxHours(24)
<a name="l00086"></a>00086 , _printLen(0)
<a name="l00087"></a>00087 , _readOnly(false)
<a name="l00088"></a>00088 , editField(EDIT_HOUR)
<a name="l00089"></a>00089 {
<a name="l00090"></a>00090 }
<a name="l00091"></a>00091
<a name="l00105"></a><a class="code" href="classTimeField.html#a87f222bc098367963ed21a7edc4624de">00105</a> <a class="code" href="classTimeField.html#a138e2425379705828a87eb2d8a836431" title="Constructs a new time field with a specific label.">TimeField::TimeField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label, <span class="keywordtype">int</span> maxHours, <span class="keywordtype">bool</span> readOnly)
<a name="l00106"></a>00106 : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(form, label)
<a name="l00107"></a>00107 , _value(0)
<a name="l00108"></a>00108 , _maxHours(maxHours)
<a name="l00109"></a>00109 , _printLen(0)
<a name="l00110"></a>00110 , _readOnly(readOnly)
<a name="l00111"></a>00111 , editField(EDIT_HOUR)
<a name="l00112"></a>00112 {
<a name="l00113"></a>00113 }
<a name="l00114"></a>00114
<a name="l00115"></a><a class="code" href="classTimeField.html#a9b953d9abdbe960a3fa34938462832e5">00115</a> <span class="keywordtype">int</span> <a class="code" href="classTimeField.html#a9b953d9abdbe960a3fa34938462832e5" title="Dispatches event via this field.">TimeField::dispatch</a>(<span class="keywordtype">int</span> event)
<a name="l00116"></a>00116 {
<a name="l00117"></a>00117 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> newValue;
<a name="l00118"></a>00118 <span class="keywordflow">if</span> (_readOnly)
<a name="l00119"></a>00119 <span class="keywordflow">return</span> -1;
<a name="l00120"></a>00120 <span class="keywordflow">if</span> (event == LCD_BUTTON_UP) {
<a name="l00121"></a>00121 newValue = _value;
<a name="l00122"></a>00122 <span class="keywordflow">if</span> (editField == EDIT_HOUR) {
<a name="l00123"></a>00123 newValue += 60 * 60;
<a name="l00124"></a>00124 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_MINUTE_TENS) {
<a name="l00125"></a>00125 <span class="keywordflow">if</span> (((newValue / 60) % 60) &gt;= 50)
<a name="l00126"></a>00126 newValue -= 50 * 60;
<a name="l00127"></a>00127 <span class="keywordflow">else</span>
<a name="l00128"></a>00128 newValue += 10 * 60;
<a name="l00129"></a>00129 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_MINUTE) {
<a name="l00130"></a>00130 <span class="keywordflow">if</span> (((newValue / 60) % 60) == 59)
<a name="l00131"></a>00131 newValue -= 59 * 60;
<a name="l00132"></a>00132 <span class="keywordflow">else</span>
<a name="l00133"></a>00133 newValue += 60;
<a name="l00134"></a>00134 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_SECOND_TENS) {
<a name="l00135"></a>00135 <span class="keywordflow">if</span> ((newValue % 60) &gt;= 50)
<a name="l00136"></a>00136 newValue -= 50;
<a name="l00137"></a>00137 <span class="keywordflow">else</span>
<a name="l00138"></a>00138 newValue += 10;
<a name="l00139"></a>00139 } <span class="keywordflow">else</span> {
<a name="l00140"></a>00140 <span class="keywordflow">if</span> ((newValue % 60) == 59)
<a name="l00141"></a>00141 newValue -= 59;
<a name="l00142"></a>00142 <span class="keywordflow">else</span>
<a name="l00143"></a>00143 newValue += 1;
<a name="l00144"></a>00144 }
<a name="l00145"></a>00145 <a class="code" href="classTimeField.html#a063b6df2bd6fa7970ee445ab4e5d1fc1" title="Sets the value of this time field, in seconds.">setValue</a>(newValue);
<a name="l00146"></a>00146 <span class="keywordflow">return</span> FORM_CHANGED;
<a name="l00147"></a>00147 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == LCD_BUTTON_DOWN) {
<a name="l00148"></a>00148 newValue = _value;
<a name="l00149"></a>00149 <span class="keywordflow">if</span> (editField == EDIT_HOUR) {
<a name="l00150"></a>00150 <span class="keywordflow">if</span> (newValue &lt; 60 * 60)
<a name="l00151"></a>00151 newValue += ((<span class="keywordtype">unsigned</span> long)(_maxHours - 1)) * 60 * 60;
<a name="l00152"></a>00152 <span class="keywordflow">else</span>
<a name="l00153"></a>00153 newValue -= 60 * 60;
<a name="l00154"></a>00154 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_MINUTE_TENS) {
<a name="l00155"></a>00155 <span class="keywordflow">if</span> (((newValue / 60) % 60) &lt; 10)
<a name="l00156"></a>00156 newValue += 50 * 60;
<a name="l00157"></a>00157 <span class="keywordflow">else</span>
<a name="l00158"></a>00158 newValue -= 10 * 60;
<a name="l00159"></a>00159 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_MINUTE) {
<a name="l00160"></a>00160 <span class="keywordflow">if</span> (((newValue / 60) % 60) == 0)
<a name="l00161"></a>00161 newValue += 59 * 60;
<a name="l00162"></a>00162 <span class="keywordflow">else</span>
<a name="l00163"></a>00163 newValue -= 60;
<a name="l00164"></a>00164 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_SECOND_TENS) {
<a name="l00165"></a>00165 <span class="keywordflow">if</span> ((newValue % 60) &lt; 10)
<a name="l00166"></a>00166 newValue += 50;
<a name="l00167"></a>00167 <span class="keywordflow">else</span>
<a name="l00168"></a>00168 newValue -= 10;
<a name="l00169"></a>00169 } <span class="keywordflow">else</span> {
<a name="l00170"></a>00170 <span class="keywordflow">if</span> ((newValue % 60) == 0)
<a name="l00171"></a>00171 newValue += 59;
<a name="l00172"></a>00172 <span class="keywordflow">else</span>
<a name="l00173"></a>00173 newValue -= 1;
<a name="l00174"></a>00174 }
<a name="l00175"></a>00175 <a class="code" href="classTimeField.html#a063b6df2bd6fa7970ee445ab4e5d1fc1" title="Sets the value of this time field, in seconds.">setValue</a>(newValue);
<a name="l00176"></a>00176 <span class="keywordflow">return</span> FORM_CHANGED;
<a name="l00177"></a>00177 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == LCD_BUTTON_LEFT) {
<a name="l00178"></a>00178 <span class="keywordflow">if</span> (editField != EDIT_HOUR) {
<a name="l00179"></a>00179 --editField;
<a name="l00180"></a>00180 printTime();
<a name="l00181"></a>00181 <span class="keywordflow">return</span> 0;
<a name="l00182"></a>00182 }
<a name="l00183"></a>00183 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == LCD_BUTTON_RIGHT) {
<a name="l00184"></a>00184 <span class="keywordflow">if</span> (editField != EDIT_SECOND) {
<a name="l00185"></a>00185 ++editField;
<a name="l00186"></a>00186 printTime();
<a name="l00187"></a>00187 <span class="keywordflow">return</span> 0;
<a name="l00188"></a>00188 }
<a name="l00189"></a>00189 }
<a name="l00190"></a>00190 <span class="keywordflow">return</span> -1;
<a name="l00191"></a>00191 }
<a name="l00192"></a>00192
<a name="l00193"></a><a class="code" href="classTimeField.html#ae914d6b870283a334d2d669460f7646b">00193</a> <span class="keywordtype">void</span> <a class="code" href="classTimeField.html#ae914d6b870283a334d2d669460f7646b" title="Enters the field due to form navigation.">TimeField::enterField</a>(<span class="keywordtype">bool</span> reverse)
<a name="l00194"></a>00194 {
<a name="l00195"></a>00195 <a class="code" href="classTimeField.html#ae914d6b870283a334d2d669460f7646b" title="Enters the field due to form navigation.">Field::enterField</a>(reverse);
<a name="l00196"></a>00196 <span class="keywordflow">if</span> (reverse)
<a name="l00197"></a>00197 editField = EDIT_SECOND;
<a name="l00198"></a>00198 <span class="keywordflow">else</span>
<a name="l00199"></a>00199 editField = EDIT_HOUR;
<a name="l00200"></a>00200 printTime();
<a name="l00201"></a>00201 <span class="keywordflow">if</span> (!_readOnly)
<a name="l00202"></a>00202 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;cursor();
<a name="l00203"></a>00203 }
<a name="l00204"></a>00204
<a name="l00205"></a><a class="code" href="classTimeField.html#a5a6b7db2e3fda7745e0ff9c3d8d9a541">00205</a> <span class="keywordtype">void</span> <a class="code" href="classTimeField.html#a5a6b7db2e3fda7745e0ff9c3d8d9a541" title="Exits the field due to form navigation.">TimeField::exitField</a>()
<a name="l00206"></a>00206 {
<a name="l00207"></a>00207 <span class="keywordflow">if</span> (!_readOnly)
<a name="l00208"></a>00208 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;noCursor();
<a name="l00209"></a>00209 <a class="code" href="classTimeField.html#a5a6b7db2e3fda7745e0ff9c3d8d9a541" title="Exits the field due to form navigation.">Field::exitField</a>();
<a name="l00210"></a>00210 }
<a name="l00211"></a>00211
<a name="l00227"></a><a class="code" href="classTimeField.html#a063b6df2bd6fa7970ee445ab4e5d1fc1">00227</a> <span class="keywordtype">void</span> <a class="code" href="classTimeField.html#a063b6df2bd6fa7970ee445ab4e5d1fc1" title="Sets the value of this time field, in seconds.">TimeField::setValue</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> value)
<a name="l00228"></a>00228 {
<a name="l00229"></a>00229 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxSecs = ((<span class="keywordtype">unsigned</span> long)_maxHours) * 60 * 60;
<a name="l00230"></a>00230 value %= maxSecs;
<a name="l00231"></a>00231 <span class="keywordflow">if</span> (value != _value) {
<a name="l00232"></a>00232 _value = <a class="code" href="classTimeField.html#a400aaa72a83b3b872e1de1c3af1a240f" title="Returns the current value of this time field, in seconds.">value</a>;
<a name="l00233"></a>00233 <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())
<a name="l00234"></a>00234 printTime();
<a name="l00235"></a>00235 }
<a name="l00236"></a>00236 }
<a name="l00237"></a>00237
<a name="l00268"></a><a class="code" href="classTimeField.html#a3f002a0729e90e88d04025908be102fe">00268</a> <span class="keywordtype">void</span> <a class="code" href="classTimeField.html#a3f002a0729e90e88d04025908be102fe" title="Sets the read-only state of this field to value.">TimeField::setReadOnly</a>(<span class="keywordtype">bool</span> value)
<a name="l00269"></a>00269 {
<a name="l00270"></a>00270 <span class="keywordflow">if</span> (_readOnly != value) {
<a name="l00271"></a>00271 _readOnly = <a class="code" href="classTimeField.html#a400aaa72a83b3b872e1de1c3af1a240f" title="Returns the current value of this time field, in seconds.">value</a>;
<a name="l00272"></a>00272 printTime();
<a name="l00273"></a>00273 <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>()) {
<a name="l00274"></a>00274 <span class="keywordflow">if</span> (value)
<a name="l00275"></a>00275 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;cursor();
<a name="l00276"></a>00276 <span class="keywordflow">else</span>
<a name="l00277"></a>00277 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;noCursor();
<a name="l00278"></a>00278 }
<a name="l00279"></a>00279 }
<a name="l00280"></a>00280 }
<a name="l00281"></a>00281
<a name="l00282"></a>00282 <span class="keywordtype">void</span> TimeField::printTime()
<a name="l00283"></a>00283 {
<a name="l00284"></a>00284 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(0, 1);
<a name="l00285"></a>00285 <span class="keywordtype">int</span> col = printField(_value / (60 * 60));
<a name="l00286"></a>00286 <span class="keywordtype">int</span> hourCol = col - 1;
<a name="l00287"></a>00287 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39;:&#39;</span>);
<a name="l00288"></a>00288 ++col;
<a name="l00289"></a>00289 col += printField((_value / 60) % 60);
<a name="l00290"></a>00290 <span class="keywordtype">int</span> minuteCol = col - 1;
<a name="l00291"></a>00291 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39;:&#39;</span>);
<a name="l00292"></a>00292 ++col;
<a name="l00293"></a>00293 col += printField(_value % 60);
<a name="l00294"></a>00294 <span class="keywordtype">int</span> secondCol = col - 1;
<a name="l00295"></a>00295 <span class="keywordtype">int</span> tempCol = col;
<a name="l00296"></a>00296 <span class="keywordflow">while</span> (tempCol++ &lt; _printLen)
<a name="l00297"></a>00297 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39; &#39;</span>);
<a name="l00298"></a>00298 _printLen = col;
<a name="l00299"></a>00299 <span class="keywordflow">if</span> (!_readOnly) {
<a name="l00300"></a>00300 <span class="keywordflow">if</span> (editField == EDIT_HOUR)
<a name="l00301"></a>00301 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(hourCol, 1);
<a name="l00302"></a>00302 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_MINUTE_TENS)
<a name="l00303"></a>00303 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(minuteCol - 1, 1);
<a name="l00304"></a>00304 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_MINUTE)
<a name="l00305"></a>00305 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(minuteCol, 1);
<a name="l00306"></a>00306 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_SECOND_TENS)
<a name="l00307"></a>00307 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(secondCol - 1, 1);
<a name="l00308"></a>00308 <span class="keywordflow">else</span>
<a name="l00309"></a>00309 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(secondCol, 1);
<a name="l00310"></a>00310 }
<a name="l00311"></a>00311 }
<a name="l00312"></a>00312
<a name="l00313"></a>00313 <span class="keywordtype">int</span> TimeField::printField(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> value)
<a name="l00314"></a>00314 {
<a name="l00315"></a>00315 <span class="keywordflow">if</span> (value &lt; 100) {
<a name="l00316"></a>00316 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39;0&#39;</span> + (<span class="keywordtype">int</span>)(value / 10));
<a name="l00317"></a>00317 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39;0&#39;</span> + (<span class="keywordtype">int</span>)(value % 10));
<a name="l00318"></a>00318 <span class="keywordflow">return</span> 2;
<a name="l00319"></a>00319 }
<a name="l00320"></a>00320 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> divisor = 100;
<a name="l00321"></a>00321 <span class="keywordflow">while</span> ((value / divisor) &gt;= 10)
<a name="l00322"></a>00322 divisor *= 10;
<a name="l00323"></a>00323 <span class="keywordtype">int</span> digits = 0;
<a name="l00324"></a>00324 <span class="keywordflow">while</span> (divisor &gt; 0) {
<a name="l00325"></a>00325 <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39;0&#39;</span> + (<span class="keywordtype">int</span>)((value / divisor) % 10));
<a name="l00326"></a>00326 divisor /= 10;
<a name="l00327"></a>00327 ++digits;
<a name="l00328"></a>00328 }
<a name="l00329"></a>00329 <span class="keywordflow">return</span> digits;
<a name="l00330"></a>00330 }
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -297,8 +77,243 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">TimeField.cpp</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#include &quot;TimeField.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#define EDIT_HOUR 0</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EDIT_MINUTE_TENS 1</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EDIT_MINUTE 2</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EDIT_SECOND_TENS 3</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EDIT_SECOND 4</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="l00082"></a><span class="lineno"><a class="code" href="classTimeField.html#a138e2425379705828a87eb2d8a836431"> 82</a></span>&#160;<a class="code" href="classTimeField.html#a138e2425379705828a87eb2d8a836431" title="Constructs a new time field with a specific label.">TimeField::TimeField</a>(<span class="keyword">const</span> String &amp;label)</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(label)</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; , _value(0)</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; , _maxHours(24)</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; , _printLen(0)</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; , _readOnly(false)</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; , editField(EDIT_HOUR)</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"> 90</span>&#160;}</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="code" href="classTimeField.html#a87f222bc098367963ed21a7edc4624de"> 105</a></span>&#160;<a class="code" href="classTimeField.html#a138e2425379705828a87eb2d8a836431" title="Constructs a new time field with a specific label.">TimeField::TimeField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;form, <span class="keyword">const</span> String &amp;label, <span class="keywordtype">int</span> maxHours, <span class="keywordtype">bool</span> readOnly)</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; : <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>(form, label)</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; , _value(0)</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; , _maxHours(maxHours)</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; , _printLen(0)</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; , _readOnly(readOnly)</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; , editField(EDIT_HOUR)</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;}</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="classTimeField.html#a9b953d9abdbe960a3fa34938462832e5"> 115</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classTimeField.html#a9b953d9abdbe960a3fa34938462832e5" title="Dispatches event via this field.">TimeField::dispatch</a>(<span class="keywordtype">int</span> event)</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;{</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> newValue;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span> (_readOnly)</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (event == LCD_BUTTON_UP) {</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; newValue = _value;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (editField == EDIT_HOUR) {</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; newValue += 60 * 60;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_MINUTE_TENS) {</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">if</span> (((newValue / 60) % 60) &gt;= 50)</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; newValue -= 50 * 60;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; newValue += 10 * 60;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_MINUTE) {</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">if</span> (((newValue / 60) % 60) == 59)</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; newValue -= 59 * 60;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; newValue += 60;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_SECOND_TENS) {</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> ((newValue % 60) &gt;= 50)</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; newValue -= 50;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; newValue += 10;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> ((newValue % 60) == 59)</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; newValue -= 59;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; newValue += 1;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classTimeField.html#a063b6df2bd6fa7970ee445ab4e5d1fc1" title="Sets the value of this time field, in seconds.">setValue</a>(newValue);</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> FORM_CHANGED;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == LCD_BUTTON_DOWN) {</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; newValue = _value;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">if</span> (editField == EDIT_HOUR) {</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span> (newValue &lt; 60 * 60)</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; newValue += ((<span class="keywordtype">unsigned</span> long)(_maxHours - 1)) * 60 * 60;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; newValue -= 60 * 60;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_MINUTE_TENS) {</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (((newValue / 60) % 60) &lt; 10)</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; newValue += 50 * 60;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; newValue -= 10 * 60;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_MINUTE) {</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span> (((newValue / 60) % 60) == 0)</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; newValue += 59 * 60;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; newValue -= 60;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_SECOND_TENS) {</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span> ((newValue % 60) &lt; 10)</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; newValue += 50;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; newValue -= 10;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">if</span> ((newValue % 60) == 0)</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; newValue += 59;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; newValue -= 1;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="classTimeField.html#a063b6df2bd6fa7970ee445ab4e5d1fc1" title="Sets the value of this time field, in seconds.">setValue</a>(newValue);</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> FORM_CHANGED;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == LCD_BUTTON_LEFT) {</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span> (editField != EDIT_HOUR) {</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; --editField;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; printTime();</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == LCD_BUTTON_RIGHT) {</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (editField != EDIT_SECOND) {</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; ++editField;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; printTime();</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</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; <span class="keywordflow">return</span> -1;</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;</div>
<div class="line"><a name="l00193"></a><span class="lineno"><a class="code" href="classTimeField.html#ae914d6b870283a334d2d669460f7646b"> 193</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classTimeField.html#ae914d6b870283a334d2d669460f7646b" title="Enters the field due to form navigation.">TimeField::enterField</a>(<span class="keywordtype">bool</span> reverse)</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;{</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="classTimeField.html#ae914d6b870283a334d2d669460f7646b" title="Enters the field due to form navigation.">Field::enterField</a>(reverse);</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span> (reverse)</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; editField = EDIT_SECOND;</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; editField = EDIT_HOUR;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; printTime();</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> (!_readOnly)</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;cursor();</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="classTimeField.html#a5a6b7db2e3fda7745e0ff9c3d8d9a541"> 205</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classTimeField.html#a5a6b7db2e3fda7745e0ff9c3d8d9a541" title="Exits the field due to form navigation.">TimeField::exitField</a>()</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"> 207</span>&#160; <span class="keywordflow">if</span> (!_readOnly)</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;noCursor();</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="classTimeField.html#a5a6b7db2e3fda7745e0ff9c3d8d9a541" title="Exits the field due to form navigation.">Field::exitField</a>();</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;}</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div>
<div class="line"><a name="l00227"></a><span class="lineno"><a class="code" href="classTimeField.html#a063b6df2bd6fa7970ee445ab4e5d1fc1"> 227</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classTimeField.html#a063b6df2bd6fa7970ee445ab4e5d1fc1" title="Sets the value of this time field, in seconds.">TimeField::setValue</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> value)</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;{</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxSecs = ((<span class="keywordtype">unsigned</span> long)_maxHours) * 60 * 60;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; value %= maxSecs;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (value != _value) {</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; _value = <a class="code" href="classTimeField.html#a400aaa72a83b3b872e1de1c3af1a240f" title="Returns the current value of this time field, in seconds.">value</a>;</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>())</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; printTime();</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</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;</div>
<div class="line"><a name="l00268"></a><span class="lineno"><a class="code" href="classTimeField.html#a3f002a0729e90e88d04025908be102fe"> 268</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classTimeField.html#a3f002a0729e90e88d04025908be102fe" title="Sets the read-only state of this field to value.">TimeField::setReadOnly</a>(<span class="keywordtype">bool</span> value)</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;{</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span> (_readOnly != value) {</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; _readOnly = <a class="code" href="classTimeField.html#a400aaa72a83b3b872e1de1c3af1a240f" title="Returns the current value of this time field, in seconds.">value</a>;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; printTime();</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72" title="Returns true if this field is the currently-displayed field in its owning form; false otherwise...">isCurrent</a>()) {</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span> (value)</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;cursor();</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;noCursor();</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</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;}</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="keywordtype">void</span> TimeField::printTime()</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;{</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(0, 1);</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordtype">int</span> col = printField(_value / (60 * 60));</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordtype">int</span> hourCol = col - 1;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39;:&#39;</span>);</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; ++col;</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; col += printField((_value / 60) % 60);</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordtype">int</span> minuteCol = col - 1;</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39;:&#39;</span>);</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; ++col;</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; col += printField(_value % 60);</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordtype">int</span> secondCol = col - 1;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordtype">int</span> tempCol = col;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">while</span> (tempCol++ &lt; _printLen)</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39; &#39;</span>);</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; _printLen = col;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (!_readOnly) {</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span> (editField == EDIT_HOUR)</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(hourCol, 1);</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_MINUTE_TENS)</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(minuteCol - 1, 1);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_MINUTE)</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(minuteCol, 1);</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (editField == EDIT_SECOND_TENS)</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(secondCol - 1, 1);</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;setCursor(secondCol, 1);</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;}</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"> 313</span>&#160;<span class="keywordtype">int</span> TimeField::printField(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> value)</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; <span class="keywordflow">if</span> (value &lt; 100) {</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39;0&#39;</span> + (<span class="keywordtype">int</span>)(value / 10));</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39;0&#39;</span> + (<span class="keywordtype">int</span>)(value % 10));</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> 2;</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> divisor = 100;</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">while</span> ((value / divisor) &gt;= 10)</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; divisor *= 10;</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordtype">int</span> digits = 0;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">while</span> (divisor &gt; 0) {</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1" title="Returns the LCD that this field is being drawn on.">lcd</a>()-&gt;write(<span class="charliteral">&#39;0&#39;</span> + (<span class="keywordtype">int</span>)((value / divisor) % 10));</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; divisor /= 10;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; ++digits;</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> digits;</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: TimeField.h Source File</title> <title>ArduinoLibs: TimeField.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,80 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
<div class="header">
<div class="headertitle">
<div class="title">TimeField.h</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00005"></a>00005 <span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span>
<a name="l00006"></a>00006 <span class="comment"> * to deal in the Software without restriction, including without limitation</span>
<a name="l00007"></a>00007 <span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00008"></a>00008 <span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00009"></a>00009 <span class="comment"> * Software is furnished to do so, subject to the following conditions:</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * The above copyright notice and this permission notice shall be included</span>
<a name="l00012"></a>00012 <span class="comment"> * in all copies or substantial portions of the Software.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00015"></a>00015 <span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00016"></a>00016 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<a name="l00017"></a>00017 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00018"></a>00018 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00019"></a>00019 <span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
<a name="l00020"></a>00020 <span class="comment"> * DEALINGS IN THE SOFTWARE.</span>
<a name="l00021"></a>00021 <span class="comment"> */</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef TimeField_h</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define TimeField_h</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;Field.h&quot;</span>
<a name="l00027"></a>00027
<a name="l00028"></a>00028 <span class="preprocessor">#define TIMEFIELD_READ_ONLY true</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define TIMEFIELD_READ_WRITE false</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span>
<a name="l00031"></a><a class="code" href="classTimeField.html">00031</a> <span class="keyword">class </span><a class="code" href="classTimeField.html" title="Field that manages the display and editing of a time value.">TimeField</a> : <span class="keyword">public</span> <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> {
<a name="l00032"></a>00032 <span class="keyword">public</span>:
<a name="l00033"></a>00033 <span class="keyword">explicit</span> <a class="code" href="classTimeField.html#a138e2425379705828a87eb2d8a836431" title="Constructs a new time field with a specific label.">TimeField</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>);
<a name="l00034"></a>00034 <a class="code" href="classTimeField.html#a138e2425379705828a87eb2d8a836431" title="Constructs a new time field with a specific label.">TimeField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5" title="Returns the Form that owns this field; null if not associated with a Form.">form</a>, <span class="keyword">const</span> String &amp;label, <span class="keywordtype">int</span> <a class="code" href="classTimeField.html#aa73f5a62c330ac7d2f647dfe27d026b7" title="Returns the maximum number of hours before the field wraps around.">maxHours</a>, <span class="keywordtype">bool</span> <a class="code" href="classTimeField.html#aa0795c873ba9941c8a1a3bf8c06668f1" title="Returns TIMEFIELD_READ_ONLY (true) or TIMEFIELD_READ_WRITE (false).">readOnly</a>);
<a name="l00035"></a>00035
<a name="l00036"></a>00036 <span class="keywordtype">int</span> <a class="code" href="classTimeField.html#a9b953d9abdbe960a3fa34938462832e5" title="Dispatches event via this field.">dispatch</a>(<span class="keywordtype">int</span> event);
<a name="l00037"></a>00037
<a name="l00038"></a>00038 <span class="keywordtype">void</span> <a class="code" href="classTimeField.html#ae914d6b870283a334d2d669460f7646b" title="Enters the field due to form navigation.">enterField</a>(<span class="keywordtype">bool</span> reverse);
<a name="l00039"></a>00039 <span class="keywordtype">void</span> <a class="code" href="classTimeField.html#a5a6b7db2e3fda7745e0ff9c3d8d9a541" title="Exits the field due to form navigation.">exitField</a>();
<a name="l00040"></a>00040
<a name="l00041"></a><a class="code" href="classTimeField.html#a400aaa72a83b3b872e1de1c3af1a240f">00041</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classTimeField.html#a400aaa72a83b3b872e1de1c3af1a240f" title="Returns the current value of this time field, in seconds.">value</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _value; }
<a name="l00042"></a>00042 <span class="keywordtype">void</span> <a class="code" href="classTimeField.html#a063b6df2bd6fa7970ee445ab4e5d1fc1" title="Sets the value of this time field, in seconds.">setValue</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classTimeField.html#a400aaa72a83b3b872e1de1c3af1a240f" title="Returns the current value of this time field, in seconds.">value</a>);
<a name="l00043"></a>00043
<a name="l00044"></a><a class="code" href="classTimeField.html#aa73f5a62c330ac7d2f647dfe27d026b7">00044</a> <span class="keywordtype">int</span> <a class="code" href="classTimeField.html#aa73f5a62c330ac7d2f647dfe27d026b7" title="Returns the maximum number of hours before the field wraps around.">maxHours</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _maxHours; }
<a name="l00045"></a><a class="code" href="classTimeField.html#a7ac124eb9dde01c18c711c421736b5ed">00045</a> <span class="keywordtype">void</span> <a class="code" href="classTimeField.html#a7ac124eb9dde01c18c711c421736b5ed" title="Sets the maximum number of hours before the field wraps around to maxHours.">setMaxHours</a>(<span class="keywordtype">int</span> maxHours) { _maxHours = <a class="code" href="classTimeField.html#aa73f5a62c330ac7d2f647dfe27d026b7" title="Returns the maximum number of hours before the field wraps around.">maxHours</a>; }
<a name="l00046"></a>00046
<a name="l00047"></a><a class="code" href="classTimeField.html#aa0795c873ba9941c8a1a3bf8c06668f1">00047</a> <span class="keywordtype">bool</span> <a class="code" href="classTimeField.html#aa0795c873ba9941c8a1a3bf8c06668f1" title="Returns TIMEFIELD_READ_ONLY (true) or TIMEFIELD_READ_WRITE (false).">readOnly</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _readOnly; }
<a name="l00048"></a>00048 <span class="keywordtype">void</span> <a class="code" href="classTimeField.html#a3f002a0729e90e88d04025908be102fe" title="Sets the read-only state of this field to value.">setReadOnly</a>(<span class="keywordtype">bool</span> <a class="code" href="classTimeField.html#a400aaa72a83b3b872e1de1c3af1a240f" title="Returns the current value of this time field, in seconds.">value</a>);
<a name="l00049"></a>00049
<a name="l00050"></a>00050 <span class="keyword">private</span>:
<a name="l00051"></a>00051 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _value;
<a name="l00052"></a>00052 <span class="keywordtype">int</span> _maxHours;
<a name="l00053"></a>00053 <span class="keywordtype">int</span> _printLen;
<a name="l00054"></a>00054 <span class="keywordtype">bool</span> _readOnly;
<a name="l00055"></a>00055 uint8_t editField;
<a name="l00056"></a>00056
<a name="l00057"></a>00057 <span class="keywordtype">void</span> printTime();
<a name="l00058"></a>00058 <span class="keywordtype">int</span> printField(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classTimeField.html#a400aaa72a83b3b872e1de1c3af1a240f" title="Returns the current value of this time field, in seconds.">value</a>);
<a name="l00059"></a>00059 };
<a name="l00060"></a>00060
<a name="l00061"></a>00061 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -137,8 +77,83 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div id="nav-path" class="navpath">
<a href="http://www.doxygen.org/index.html"> <ul>
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_48f64e79f12bd77ba047e9e436ec978c.html">LCD</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">TimeField.h</div> </div>
</div><!--header-->
<div class="contents">
<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"> * Copyright (C) 2012 Southern Storm Software, Pty Ltd.</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"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * copy of this software and associated documentation files (the &quot;Software&quot;),</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to deal in the Software without restriction, including without limitation</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Software is furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</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"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * DEALINGS IN THE SOFTWARE.</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="preprocessor">#ifndef TimeField_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define TimeField_h</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;Field.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#define TIMEFIELD_READ_ONLY true</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define TIMEFIELD_READ_WRITE false</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="classTimeField.html"> 31</a></span>&#160;<span class="keyword">class </span><a class="code" href="classTimeField.html" title="Field that manages the display and editing of a time value.">TimeField</a> : <span class="keyword">public</span> <a class="code" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> {</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classTimeField.html#a138e2425379705828a87eb2d8a836431" title="Constructs a new time field with a specific label.">TimeField</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label</a>);</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="classTimeField.html#a138e2425379705828a87eb2d8a836431" title="Constructs a new time field with a specific label.">TimeField</a>(<a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5" title="Returns the Form that owns this field; null if not associated with a Form.">form</a>, <span class="keyword">const</span> String &amp;label, <span class="keywordtype">int</span> <a class="code" href="classTimeField.html#aa73f5a62c330ac7d2f647dfe27d026b7" title="Returns the maximum number of hours before the field wraps around.">maxHours</a>, <span class="keywordtype">bool</span> <a class="code" href="classTimeField.html#aa0795c873ba9941c8a1a3bf8c06668f1" title="Returns TIMEFIELD_READ_ONLY (true) or TIMEFIELD_READ_WRITE (false).">readOnly</a>);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classTimeField.html#a9b953d9abdbe960a3fa34938462832e5" title="Dispatches event via this field.">dispatch</a>(<span class="keywordtype">int</span> event);</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classTimeField.html#ae914d6b870283a334d2d669460f7646b" title="Enters the field due to form navigation.">enterField</a>(<span class="keywordtype">bool</span> reverse);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classTimeField.html#a5a6b7db2e3fda7745e0ff9c3d8d9a541" title="Exits the field due to form navigation.">exitField</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"><a class="code" href="classTimeField.html#a400aaa72a83b3b872e1de1c3af1a240f"> 41</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classTimeField.html#a400aaa72a83b3b872e1de1c3af1a240f" title="Returns the current value of this time field, in seconds.">value</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _value; }</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classTimeField.html#a063b6df2bd6fa7970ee445ab4e5d1fc1" title="Sets the value of this time field, in seconds.">setValue</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classTimeField.html#a400aaa72a83b3b872e1de1c3af1a240f" title="Returns the current value of this time field, in seconds.">value</a>);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classTimeField.html#aa73f5a62c330ac7d2f647dfe27d026b7"> 44</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classTimeField.html#aa73f5a62c330ac7d2f647dfe27d026b7" title="Returns the maximum number of hours before the field wraps around.">maxHours</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _maxHours; }</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="classTimeField.html#a7ac124eb9dde01c18c711c421736b5ed"> 45</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classTimeField.html#a7ac124eb9dde01c18c711c421736b5ed" title="Sets the maximum number of hours before the field wraps around to maxHours.">setMaxHours</a>(<span class="keywordtype">int</span> maxHours) { _maxHours = <a class="code" href="classTimeField.html#aa73f5a62c330ac7d2f647dfe27d026b7" title="Returns the maximum number of hours before the field wraps around.">maxHours</a>; }</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="classTimeField.html#aa0795c873ba9941c8a1a3bf8c06668f1"> 47</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classTimeField.html#aa0795c873ba9941c8a1a3bf8c06668f1" title="Returns TIMEFIELD_READ_ONLY (true) or TIMEFIELD_READ_WRITE (false).">readOnly</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _readOnly; }</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classTimeField.html#a3f002a0729e90e88d04025908be102fe" title="Sets the read-only state of this field to value.">setReadOnly</a>(<span class="keywordtype">bool</span> <a class="code" href="classTimeField.html#a400aaa72a83b3b872e1de1c3af1a240f" title="Returns the current value of this time field, in seconds.">value</a>);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _value;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">int</span> _maxHours;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">int</span> _printLen;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">bool</span> _readOnly;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; uint8_t editField;</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="keywordtype">void</span> printTime();</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">int</span> printField(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classTimeField.html#a400aaa72a83b3b872e1de1c3af1a240f" title="Returns the current value of this time field, in seconds.">value</a>);</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"> 60</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: alarm-clock.dox File Reference</title> <title>ArduinoLibs: alarm-clock.dox File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,24 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">alarm-clock.dox File Reference</div> </div>
</div>
<div class="contents">
<table class="memberdecls">
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition in file <a class="el" href="alarm-clock_8dox_source.html">alarm-clock.dox</a>.</p>
</div></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -81,8 +77,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">alarm-clock.dox File Reference</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition in file <a class="el" href="alarm-clock_8dox_source.html">alarm-clock.dox</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Alarm Clock</title> <title>ArduinoLibs: Alarm Clock</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -50,14 +58,28 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</li> </li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="headertitle"> <div class="headertitle">
<div class="title">Alarm Clock </div> </div> <div class="title">Alarm Clock </div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<div class="textblock"><h2><a class="anchor" id="clock_features"></a> <div class="textblock"><h1><a class="anchor" id="clock_features"></a>
Features</h2> Features</h1>
<p>The alarm clock described on this page is a large example application that uses many of the classes in the provided libraries: <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a>, <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>, <a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>, <a class="el" href="classSoftI2C.html" title="Bit-banged implementation of an I2C master.">SoftI2C</a>, <a class="el" href="classDS1307RTC.html" title="Communicates with a DS1307 realtime clock chip via I2C.">DS1307RTC</a> (or <a class="el" href="classDS3232RTC.html" title="Communicates with a DS3232 realtime clock chip via I2C.">DS3232RTC</a>), <a class="el" href="classMelody.html" title="Plays a melody on a digital output pin using tone().">Melody</a> and <a class="el" href="group__power__save.html">PowerSave</a>. The clock has the following features:</p> <p>The alarm clock described on this page is a large example application that uses many of the classes in the provided libraries: <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a>, <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>, <a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>, <a class="el" href="classSoftI2C.html" title="Bit-banged implementation of an I2C master.">SoftI2C</a>, <a class="el" href="classDS1307RTC.html" title="Communicates with a DS1307 realtime clock chip via I2C.">DS1307RTC</a> (or <a class="el" href="classDS3232RTC.html" title="Communicates with a DS3232 realtime clock chip via I2C.">DS3232RTC</a>), <a class="el" href="classMelody.html" title="Plays a melody on a digital output pin using tone().">Melody</a> and <a class="el" href="group__power__save.html">PowerSave</a>. The clock has the following features:</p>
<ul> <ul>
<li>Displays both the time and date. </li> <li>Displays both the time and date. </li>
@@ -70,8 +92,8 @@ Features</h2>
<li>Up, down, left, and right buttons to change clock settings. </li> <li>Up, down, left, and right buttons to change clock settings. </li>
<li>MOSFET that controls the power to a separate radio circuit.</li> <li>MOSFET that controls the power to a separate radio circuit.</li>
</ul> </ul>
<h2><a class="anchor" id="clock_main_circuit"></a> <h1><a class="anchor" id="clock_main_circuit"></a>
Main circuit</h2> Main circuit</h1>
<p>The main clock circuit consists of an Arduino Uno compatible board, a 16x2 <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> module, a realtime clock chip, a piezo buzzer for the alarm, and a MOSFET for controlling the radio:</p> <p>The main clock circuit consists of an Arduino Uno compatible board, a 16x2 <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> module, a realtime clock chip, a piezo buzzer for the alarm, and a MOSFET for controlling the radio:</p>
<div class="image"> <div class="image">
<img src="alarm_circuit.png" alt="alarm_circuit.png"/> <img src="alarm_circuit.png" alt="alarm_circuit.png"/>
@@ -82,25 +104,25 @@ Main circuit</h2>
<img src="clock_shield.jpg" alt="clock_shield.jpg"/> <img src="clock_shield.jpg" alt="clock_shield.jpg"/>
</div> </div>
<p>The clock module is based on the DS1307 chip and has an on-board coin battery to keep the time and date ticking over even if the main circuit loses power. The chip is I2C-based and has an auxillary SQW output that can be configured to provide a 1 Hz squarewave signal. This signal is used by the software running on the Arduino to detect when a new time or date is available for display on the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a>. The <a class="el" href="classDS1307RTC.html" title="Communicates with a DS1307 realtime clock chip via I2C.">DS1307RTC</a> class takes care of the details of talking to the chip via I2C.</p> <p>The clock module is based on the DS1307 chip and has an on-board coin battery to keep the time and date ticking over even if the main circuit loses power. The chip is I2C-based and has an auxillary SQW output that can be configured to provide a 1 Hz squarewave signal. This signal is used by the software running on the Arduino to detect when a new time or date is available for display on the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a>. The <a class="el" href="classDS1307RTC.html" title="Communicates with a DS1307 realtime clock chip via I2C.">DS1307RTC</a> class takes care of the details of talking to the chip via I2C.</p>
<h2><a class="anchor" id="clock_arduino_board"></a> <h1><a class="anchor" id="clock_arduino_board"></a>
Arduino board</h2> Arduino board</h1>
<p>To keep power consumption low, say for being powered by batteries, we don't need a full Arduino Uno or similar board. The USB interface is unnecessary, as is the on-board power supply if there is an external source of 5 volt power. We also don't want the power and D13 status LED's to be draining power. Therefore, a cut-down version of the Arduino is recommended. We used the <a href="http://www.freetronics.com/collections/arduino/products/kitten">KitTen</a> kit from <a href="http://www.freetronics.com/">Freetronics</a>, and didn't solder up anything that wasn't strictly necessary. A <a href="http://www.freetronics.com/ftdi-cable">5v FTDI USB-to-Serial cable</a> is necessary for programming. Similar minimalistic built-it-yourself Arduino designs should also work.</p> <p>To keep power consumption low, say for being powered by batteries, we don't need a full Arduino Uno or similar board. The USB interface is unnecessary, as is the on-board power supply if there is an external source of 5 volt power. We also don't want the power and D13 status LED's to be draining power. Therefore, a cut-down version of the Arduino is recommended. We used the <a href="http://www.freetronics.com/collections/arduino/products/kitten">KitTen</a> kit from <a href="http://www.freetronics.com/">Freetronics</a>, and didn't solder up anything that wasn't strictly necessary. A <a href="http://www.freetronics.com/ftdi-cable">5v FTDI USB-to-Serial cable</a> is necessary for programming. Similar minimalistic built-it-yourself Arduino designs should also work.</p>
<div class="image"> <div class="image">
<img src="kitten_minimal.jpg" alt="kitten_minimal.jpg"/> <img src="kitten_minimal.jpg" alt="kitten_minimal.jpg"/>
</div> </div>
<h2><a class="anchor" id="clock_radio"></a> <h1><a class="anchor" id="clock_radio"></a>
Controlling a radio</h2> Controlling a radio</h1>
<p>The MOSFET connected to D11 can be used to control the power supply to a separate radio circuit so that the radio can be used as an alarm. In the following circuit, RadioV+ is the radio's power supply voltage (which may be the Arduino's 5V supply if the radio can run off 5V):</p> <p>The MOSFET connected to D11 can be used to control the power supply to a separate radio circuit so that the radio can be used as an alarm. In the following circuit, RadioV+ is the radio's power supply voltage (which may be the Arduino's 5V supply if the radio can run off 5V):</p>
<div class="image"> <div class="image">
<img src="radio_controller.png" alt="radio_controller.png"/> <img src="radio_controller.png" alt="radio_controller.png"/>
</div> </div>
<p>The output of the MOSFET can be used to control almost any kind of circuit; for example an extremely loud mechanical alarm bell. It doesn't have to be a radio. A 2N7000 or equivalent MOSFET is suitable for light loads up to 200mA. For larger currents, a higher-rated MOSFET should be used instead.</p> <p>The output of the MOSFET can be used to control almost any kind of circuit; for example an extremely loud mechanical alarm bell. It doesn't have to be a radio. A 2N7000 or equivalent MOSFET is suitable for light loads up to 200mA. For larger currents, a higher-rated MOSFET should be used instead.</p>
<p>Double-tapping the Stop Alarm button will turn the radio on. Single-tapping the Stop Alarm button will turn the radio off. A settings field can also be used to turn the radio on and off.</p> <p>Double-tapping the Stop Alarm button will turn the radio on. Single-tapping the Stop Alarm button will turn the radio off. A settings field can also be used to turn the radio on and off.</p>
<h2><a class="anchor" id="clock_ds3232"></a> <h1><a class="anchor" id="clock_ds3232"></a>
Using DS3232 instead of DS1307</h2> Using DS3232 instead of DS1307</h1>
<p>For clock modules based on the DS3232 chip, such as the <a href="http://www.freetronics.com/products/real-time-clock-rtc-module">Freetronics Real Time Clock Module</a>, change the <code>Clock</code> typedef in <code>Clock.h</code> to the following:</p> <p>For clock modules based on the DS3232 chip, such as the <a href="http://www.freetronics.com/products/real-time-clock-rtc-module">Freetronics Real Time Clock Module</a>, change the <code>Clock</code> typedef in <code>Clock.h</code> to the following:</p>
<div class="fragment"><pre class="fragment"><span class="keyword">typedef</span> <a class="code" href="classDS3232RTC.html" title="Communicates with a DS3232 realtime clock chip via I2C.">DS3232RTC</a> Clock; <div class="fragment"><div class="line"><span class="keyword">typedef</span> <a class="code" href="classDS3232RTC.html" title="Communicates with a DS3232 realtime clock chip via I2C.">DS3232RTC</a> Clock;</div>
</pre></div><p>The pads on the Freetronics module should be connected to the Arduino as follows:</p> </div><!-- fragment --><p>The pads on the Freetronics module should be connected to the Arduino as follows:</p>
<ul> <ul>
<li>VCC and GND connected to 5V and GND on the Arduino. </li> <li>VCC and GND connected to 5V and GND on the Arduino. </li>
<li>SQI connected to A3. </li> <li>SQI connected to A3. </li>
@@ -108,29 +130,18 @@ Using DS3232 instead of DS1307</h2>
<li>SCL connected to A5. </li> <li>SCL connected to A5. </li>
<li>BAT, 32K, and RST left unconnected.</li> <li>BAT, 32K, and RST left unconnected.</li>
</ul> </ul>
<h2><a class="anchor" id="clock_completed"></a> <h1><a class="anchor" id="clock_completed"></a>
Completed Clock</h2> Completed Clock</h1>
<p>The following picture shows the completed clock prototype, built into a UB1 jiffy box with the radio. Being the prototype, it is a little rough and ready, but rugged enough to take a pounding each morning as a bedside alarm clock:</p> <p>The following picture shows the completed clock prototype, built into a UB1 jiffy box with the radio. Being the prototype, it is a little rough and ready, but rugged enough to take a pounding each morning as a bedside alarm clock:</p>
<div class="image"> <div class="image">
<img src="alarm_clock.jpg" alt="alarm_clock.jpg"/> <img src="alarm_clock.jpg" alt="alarm_clock.jpg"/>
</div> </div>
</div></div> </div></div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Class List</title> <title>ArduinoLibs: Class List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,45 +66,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div> </div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Class List</div> </div>
</div>
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><table>
<tr><td class="indexkey"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="indexvalue">Represents a monochrome bitmap within main memory </td></tr>
<tr><td class="indexkey"><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td class="indexvalue">Blink a LED on a digital output pin </td></tr>
<tr><td class="indexkey"><a class="el" href="classBoolField.html">BoolField</a></td><td class="indexvalue"><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages the input of a boolean value </td></tr>
<tr><td class="indexkey"><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td class="indexvalue">Manage an array of LED's in a charlieplexed arrangement </td></tr>
<tr><td class="indexkey"><a class="el" href="classChaseLEDs.html">ChaseLEDs</a></td><td class="indexvalue">Chase LED's on output pins in a defined sequence </td></tr>
<tr><td class="indexkey"><a class="el" href="classDMD.html">DMD</a></td><td class="indexvalue">Handle large dot matrix displays composed of LED's </td></tr>
<tr><td class="indexkey"><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td class="indexvalue">Communicates with a DS1307 realtime clock chip via I2C </td></tr>
<tr><td class="indexkey"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="indexvalue">Communicates with a DS3232 realtime clock chip via I2C </td></tr>
<tr><td class="indexkey"><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td class="indexvalue">Reading and writing EEPROM's from the 24LCXX family </td></tr>
<tr><td class="indexkey"><a class="el" href="classField.html">Field</a></td><td class="indexvalue">Manages a single data input/output field within a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> </td></tr>
<tr><td class="indexkey"><a class="el" href="classForm.html">Form</a></td><td class="indexvalue">Manager for a form containing data input/output fields </td></tr>
<tr><td class="indexkey"><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td class="indexvalue">Abstract base class for I2C master implementations </td></tr>
<tr><td class="indexkey"><a class="el" href="classIntField.html">IntField</a></td><td class="indexvalue"><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages the input of an integer value </td></tr>
<tr><td class="indexkey"><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td class="indexvalue">Manages the reception of RC-5 commands from an infrared remote control </td></tr>
<tr><td class="indexkey"><a class="el" href="classLCD.html">LCD</a></td><td class="indexvalue">Enhanced library for Freetronics 16x2 <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shields </td></tr>
<tr><td class="indexkey"><a class="el" href="classListField.html">ListField</a></td><td class="indexvalue"><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages selection from a static list of items </td></tr>
<tr><td class="indexkey"><a class="el" href="classMelody.html">Melody</a></td><td class="indexvalue">Plays a melody on a digital output pin using tone() </td></tr>
<tr><td class="indexkey"><a class="el" href="classRTC.html">RTC</a></td><td class="indexvalue">Base class for realtime clock handlers </td></tr>
<tr><td class="indexkey"><a class="el" href="structRTCAlarm.html">RTCAlarm</a></td><td class="indexvalue">Stores alarm information from a realtime clock chip </td></tr>
<tr><td class="indexkey"><a class="el" href="structRTCDate.html">RTCDate</a></td><td class="indexvalue">Stores date information from a realtime clock chip </td></tr>
<tr><td class="indexkey"><a class="el" href="structRTCTime.html">RTCTime</a></td><td class="indexvalue">Stores time information from a realtime clock chip </td></tr>
<tr><td class="indexkey"><a class="el" href="classSoftI2C.html">SoftI2C</a></td><td class="indexvalue">Bit-banged implementation of an I2C master </td></tr>
<tr><td class="indexkey"><a class="el" href="classTextField.html">TextField</a></td><td class="indexvalue"><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that displays a read-only text value </td></tr>
<tr><td class="indexkey"><a class="el" href="classTimeField.html">TimeField</a></td><td class="indexvalue"><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages the display and editing of a time value </td></tr>
</table>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -105,8 +81,45 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; <div class="header">
<a href="http://www.doxygen.org/index.html"> <div class="headertitle">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="title">Class List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classBitmap.html" target="_self">Bitmap</a></td><td class="desc">Represents a monochrome bitmap within main memory</td></tr>
<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classBlinkLED.html" target="_self">BlinkLED</a></td><td class="desc">Blink a LED on a digital output pin</td></tr>
<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classBoolField.html" target="_self">BoolField</a></td><td class="desc"><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages the input of a boolean value</td></tr>
<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCharlieplex.html" target="_self">Charlieplex</a></td><td class="desc">Manage an array of LED's in a charlieplexed arrangement</td></tr>
<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classChaseLEDs.html" target="_self">ChaseLEDs</a></td><td class="desc">Chase LED's on output pins in a defined sequence</td></tr>
<tr id="row_5_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classDMD.html" target="_self">DMD</a></td><td class="desc">Handle large dot matrix displays composed of LED's</td></tr>
<tr id="row_6_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classDS1307RTC.html" target="_self">DS1307RTC</a></td><td class="desc">Communicates with a DS1307 realtime clock chip via I2C</td></tr>
<tr id="row_7_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classDS3232RTC.html" target="_self">DS3232RTC</a></td><td class="desc">Communicates with a DS3232 realtime clock chip via I2C</td></tr>
<tr id="row_8_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classEEPROM24.html" target="_self">EEPROM24</a></td><td class="desc">Reading and writing EEPROM's from the 24LCXX family</td></tr>
<tr id="row_9_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classField.html" target="_self">Field</a></td><td class="desc">Manages a single data input/output field within a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a></td></tr>
<tr id="row_10_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classForm.html" target="_self">Form</a></td><td class="desc">Manager for a form containing data input/output fields</td></tr>
<tr id="row_11_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classI2CMaster.html" target="_self">I2CMaster</a></td><td class="desc">Abstract base class for I2C master implementations</td></tr>
<tr id="row_12_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classIntField.html" target="_self">IntField</a></td><td class="desc"><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages the input of an integer value</td></tr>
<tr id="row_13_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classIRreceiver.html" target="_self">IRreceiver</a></td><td class="desc">Manages the reception of RC-5 commands from an infrared remote control</td></tr>
<tr id="row_14_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classLCD.html" target="_self">LCD</a></td><td class="desc">Enhanced library for Freetronics 16x2 <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shields</td></tr>
<tr id="row_15_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classListField.html" target="_self">ListField</a></td><td class="desc"><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages selection from a static list of items</td></tr>
<tr id="row_16_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classMelody.html" target="_self">Melody</a></td><td class="desc">Plays a melody on a digital output pin using tone()</td></tr>
<tr id="row_17_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRTC.html" target="_self">RTC</a></td><td class="desc">Base class for realtime clock handlers</td></tr>
<tr id="row_18_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structRTCAlarm.html" target="_self">RTCAlarm</a></td><td class="desc">Stores alarm information from a realtime clock chip</td></tr>
<tr id="row_19_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structRTCDate.html" target="_self">RTCDate</a></td><td class="desc">Stores date information from a realtime clock chip</td></tr>
<tr id="row_20_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structRTCTime.html" target="_self">RTCTime</a></td><td class="desc">Stores time information from a realtime clock chip</td></tr>
<tr id="row_21_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classSoftI2C.html" target="_self">SoftI2C</a></td><td class="desc">Bit-banged implementation of an I2C master</td></tr>
<tr id="row_22_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classTextField.html" target="_self">TextField</a></td><td class="desc"><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that displays a read-only text value</td></tr>
<tr id="row_23_"><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="classTimeField.html" target="_self">TimeField</a></td><td class="desc"><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages the display and editing of a time value</td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

BIN
bc_s.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 677 B

After

Width:  |  Height:  |  Size: 680 B

BIN
bdwn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: blink-blink.dox File Reference</title> <title>ArduinoLibs: blink-blink.dox File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,24 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">blink-blink.dox File Reference</div> </div>
</div>
<div class="contents">
<table class="memberdecls">
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition in file <a class="el" href="blink-blink_8dox_source.html">blink-blink.dox</a>.</p>
</div></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -81,8 +77,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">blink-blink.dox File Reference</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition in file <a class="el" href="blink-blink_8dox_source.html">blink-blink.dox</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: blink-charlieplex.dox File Reference</title> <title>ArduinoLibs: blink-charlieplex.dox File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,24 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">blink-charlieplex.dox File Reference</div> </div>
</div>
<div class="contents">
<table class="memberdecls">
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition in file <a class="el" href="blink-charlieplex_8dox_source.html">blink-charlieplex.dox</a>.</p>
</div></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -81,8 +77,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">blink-charlieplex.dox File Reference</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition in file <a class="el" href="blink-charlieplex_8dox_source.html">blink-charlieplex.dox</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: blink-cylon.dox File Reference</title> <title>ArduinoLibs: blink-cylon.dox File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,24 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">blink-cylon.dox File Reference</div> </div>
</div>
<div class="contents">
<table class="memberdecls">
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition in file <a class="el" href="blink-cylon_8dox_source.html">blink-cylon.dox</a>.</p>
</div></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -81,8 +77,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">blink-cylon.dox File Reference</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition in file <a class="el" href="blink-cylon_8dox_source.html">blink-cylon.dox</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: blink-startrek.dox File Reference</title> <title>ArduinoLibs: blink-startrek.dox File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,24 +63,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="files.html"><span>File&#160;List</span></a></li> <li><a href="files.html"><span>File&#160;List</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">blink-startrek.dox File Reference</div> </div>
</div>
<div class="contents">
<table class="memberdecls">
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition in file <a class="el" href="blink-startrek_8dox_source.html">blink-startrek.dox</a>.</p>
</div></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -81,8 +77,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">blink-startrek.dox File Reference</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition in file <a class="el" href="blink-startrek_8dox_source.html">blink-startrek.dox</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Blinking LED Example</title> <title>ArduinoLibs: Blinking LED Example</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -50,57 +58,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</li> </li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Blinking LED Example </div> </div>
</div>
<div class="contents">
<div class="textblock"><p>The <a class="el" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> class provides support logic for blinking a LED connected to an output pin. The traditional way to blink a LED uses a delay loop:</p>
<div class="fragment"><pre class="fragment"><span class="keywordtype">void</span> loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
</pre></div><p>The problem with this code is that the entire application is blocked during the <code>delay()</code>. No other activities can be serviced. <a class="el" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> provides a re-entrant timer-based implementation that is simple to use in any application and which won't block other activities.</p>
<p>We start this example by including the <a class="el" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> class and instantiating an object instance:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor">#include &lt;BlinkLED.h&gt;</span>
<a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> statusBlink(13, 70, 930);
</pre></div></p>
<p>In this example we have specified that the LED is on pin D13, the LED should be on for 70 milliseconds, and off for 930 milliseconds. This will cause the status LED to "strobe" once per second. The LED will be initially off for 930 milliseconds after device reset. To start with the LED on, use the following initialization code instead:</p>
<div class="fragment"><pre class="fragment"><a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> statusBlink(13, 70, 930, <span class="keyword">true</span>);
</pre></div><p>The remaining code we need is a call to <a class="el" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">BlinkLED::loop()</a> every time around the main application loop:</p>
<div class="fragment"><pre class="fragment"><span class="keywordtype">void</span> loop() {
statusBlink.loop();
}
</pre></div></p>
<p>As can be seen, <a class="el" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> simplifies the process of blinking a LED quite considerably. It is also possible to <a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a">pause()</a> and <a class="el" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252">resume()</a> the blinking. This is useful in applications where a blinking LED indicates a certain state such as an error condition or a long-running operation that is in progress; with the LED off at other times. The on/off blink rate can be modified at runtime using <a class="el" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258" title="Sets the onTime and offTime (in milliseconds).">BlinkLED::setBlinkRate()</a>, and the LED can be set to a specific value using <a class="el" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4" title="Sets the current state of the LED, where true is on, false is off.">BlinkLED::setState()</a>.</p>
<p>The full source code for the example follows:</p>
<div class="fragment"><pre class="fragment"><span class="comment">/*</span>
<span class="comment">Blink the status LED using the BlinkLED utility class.</span>
<span class="comment"></span>
<span class="comment">This example is placed into the public domain.</span>
<span class="comment">*/</span>
<span class="preprocessor">#include &lt;BlinkLED.h&gt;</span>
<a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> statusBlink(13, 70, 930);
<span class="keywordtype">void</span> setup() {}
<span class="keywordtype">void</span> loop() {
statusBlink.loop();
}
</pre></div> </div></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -109,8 +72,56 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">Blinking LED Example </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The <a class="el" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> class provides support logic for blinking a LED connected to an output pin. The traditional way to blink a LED uses a delay loop:</p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> loop() {</div>
<div class="line"> digitalWrite(13, HIGH);</div>
<div class="line"> delay(1000);</div>
<div class="line"> digitalWrite(13, LOW);</div>
<div class="line"> delay(1000);</div>
<div class="line">}</div>
</div><!-- fragment --><p>The problem with this code is that the entire application is blocked during the <code>delay()</code>. No other activities can be serviced. <a class="el" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> provides a re-entrant timer-based implementation that is simple to use in any application and which won't block other activities.</p>
<p>We start this example by including the <a class="el" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> class and instantiating an object instance:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;BlinkLED.h&gt;</span></div>
<div class="line"></div>
<div class="line"><a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> statusBlink(13, 70, 930);</div>
</div><!-- fragment --></p>
<p>In this example we have specified that the LED is on pin D13, the LED should be on for 70 milliseconds, and off for 930 milliseconds. This will cause the status LED to "strobe" once per second. The LED will be initially off for 930 milliseconds after device reset. To start with the LED on, use the following initialization code instead:</p>
<div class="fragment"><div class="line"><a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> statusBlink(13, 70, 930, <span class="keyword">true</span>);</div>
</div><!-- fragment --><p>The remaining code we need is a call to <a class="el" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">BlinkLED::loop()</a> every time around the main application loop:</p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> loop() {</div>
<div class="line"> statusBlink.loop();</div>
<div class="line">}</div>
</div><!-- fragment --></p>
<p>As can be seen, <a class="el" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> simplifies the process of blinking a LED quite considerably. It is also possible to <a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a">pause()</a> and <a class="el" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252">resume()</a> the blinking. This is useful in applications where a blinking LED indicates a certain state such as an error condition or a long-running operation that is in progress; with the LED off at other times. The on/off blink rate can be modified at runtime using <a class="el" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258" title="Sets the onTime and offTime (in milliseconds).">BlinkLED::setBlinkRate()</a>, and the LED can be set to a specific value using <a class="el" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4" title="Sets the current state of the LED, where true is on, false is off.">BlinkLED::setState()</a>.</p>
<p>The full source code for the example follows:</p>
<div class="fragment"><div class="line"><span class="comment">/*</span></div>
<div class="line"><span class="comment">Blink the status LED using the BlinkLED utility class.</span></div>
<div class="line"><span class="comment"></span></div>
<div class="line"><span class="comment">This example is placed into the public domain.</span></div>
<div class="line"><span class="comment">*/</span></div>
<div class="line"></div>
<div class="line"><span class="preprocessor">#include &lt;BlinkLED.h&gt;</span></div>
<div class="line"></div>
<div class="line"><a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> statusBlink(13, 70, 930);</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> setup() {}</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> loop() {</div>
<div class="line"> statusBlink.loop();</div>
<div class="line">}</div>
<div class="line"></div>
</div><!-- fragment --> </div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Charlieplexing Example</title> <title>ArduinoLibs: Charlieplexing Example</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -50,97 +58,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</li> </li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Charlieplexing Example </div> </div>
</div>
<div class="contents">
<div class="textblock"><p><a href="http://en.wikipedia.org/wiki/Charlieplexing">Charlieplexing</a> is a technique for multiplexing large numbers of LED's on a small number of microcontroller output pins. LED's are arranged in complementary pairs and managed by the <a class="el" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> class. For this example we are going to use 3 output pins to drive 6 LED's:</p>
<div class="image">
<img src="charlieplexeg.png" alt="charlieplexeg.png"/>
</div>
<p>The technique can be expanded to even larger numbers of LED's. See the documentation for the <a class="el" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> class for a description of how to connect up larger numbers of pins in a Charlieplexed arrangement.</p>
<p>The first step is to initialize a <a class="el" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> object with the output pins it needs to drive:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor">#include &lt;Charlieplex.h&gt;</span>
byte pins[3] = {9, 10, 11};
<a class="code" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> charlie(pins, <span class="keyword">sizeof</span>(pins));
</pre></div></p>
<p>Then in <code>setup()</code> we use <a class="el" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5" title="Sets the value of the LED at index in the charliplexed array.">Charlieplex::setLed()</a> and <a class="el" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b" title="Sets the PWM value of the LED at index in the charliplexed array; between 0 and 255.">Charlieplex::setPwmLed()</a> to set three of the six LED's to the desired output values:</p>
<div class="fragment"><pre class="fragment"><span class="keywordtype">void</span> setup() {
charlie.setLed(0, <span class="keyword">true</span>); <span class="comment">// Turn on LED1</span>
charlie.setLed(3, <span class="keyword">true</span>); <span class="comment">// Turn on LED4</span>
charlie.setPwmLed(5, 64); <span class="comment">// Set LED6 to one-quarter on</span>
}
</pre></div></p>
<p>Charlieplexing can only light a single LED at a time. It is therefore necessary to constantly scan the entire LED array, alternatively turning LED's on and off. The user's peristence of vision fills in the gaps. To do this, we call <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">Charlieplex::loop()</a>:</p>
<div class="fragment"><pre class="fragment"><span class="keywordtype">void</span> loop() {
charlie.loop();
}
</pre></div></p>
<p>The downside of Charlieplexing is that when multiple LED's are lit, each LED will appear to be dimmer than if only a single LED was lit. This can be counteracted by using brighter LED's or smaller resistors. The danger with smaller resistors is that if the program crashes or locks up for some reason, a large amount of continuous current could be fed through a single LED and cause it to exceed its maximum rating and burn out.</p>
<p>The full source code for the example follows:</p>
<div class="fragment"><pre class="fragment"><span class="comment">/* This example is placed into the public domain */</span>
<span class="preprocessor">#include &lt;Charlieplex.h&gt;</span>
byte pins[3] = {9, 10, 11};
<a class="code" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> charlie(pins, <span class="keyword">sizeof</span>(pins));
<span class="keywordtype">void</span> setup() {
charlie.setLed(0, <span class="keyword">true</span>); <span class="comment">// Turn on LED1</span>
charlie.setLed(3, <span class="keyword">true</span>); <span class="comment">// Turn on LED4</span>
charlie.setPwmLed(5, 64); <span class="comment">// Set LED6 to one-quarter on</span>
}
<span class="keywordtype">void</span> loop() {
charlie.loop();
}
</pre></div><p>A more complex example that performs a LED chase over the 6 LED's follows:</p>
<div class="fragment"><pre class="fragment"><span class="comment">/* This example is placed into the public domain */</span>
<span class="preprocessor">#include &lt;Charlieplex.h&gt;</span>
byte pins[3] = {9, 10, 11};
<a class="code" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> charlie(pins, <span class="keyword">sizeof</span>(pins));
<span class="keywordtype">int</span> previous = 1;
<span class="keywordtype">int</span> current = 0;
<span class="keywordtype">int</span> step = 1;
<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> lastTime;
<span class="keywordtype">void</span> setup() {
lastTime = millis();
charlie.setLed(current, <span class="keyword">true</span>);
charlie.setPwmLed(previous, 64);
}
<span class="keywordtype">void</span> loop() {
<span class="keywordflow">if</span> ((millis() - lastTime) &gt;= 100) {
charlie.setLed(previous, <span class="keyword">false</span>);
charlie.setPwmLed(current, 64);
previous = current;
current += step;
<span class="keywordflow">if</span> (current &lt; 0) {
current = 1;
step = 1;
} <span class="keywordflow">else</span> <span class="keywordflow">if</span> (current &gt;= charlie.count()) {
current = charlie.count() - 2;
step = -1;
}
charlie.setLed(current, <span class="keyword">true</span>);
lastTime += 100;
}
charlie.loop();
}
</pre></div> </div></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -149,8 +72,96 @@ byte pins[3] = {9, 10, 11};
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">Charlieplexing Example </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><a href="http://en.wikipedia.org/wiki/Charlieplexing">Charlieplexing</a> is a technique for multiplexing large numbers of LED's on a small number of microcontroller output pins. LED's are arranged in complementary pairs and managed by the <a class="el" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> class. For this example we are going to use 3 output pins to drive 6 LED's:</p>
<div class="image">
<img src="charlieplexeg.png" alt="charlieplexeg.png"/>
</div>
<p>The technique can be expanded to even larger numbers of LED's. See the documentation for the <a class="el" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> class for a description of how to connect up larger numbers of pins in a Charlieplexed arrangement.</p>
<p>The first step is to initialize a <a class="el" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> object with the output pins it needs to drive:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;Charlieplex.h&gt;</span></div>
<div class="line"></div>
<div class="line">byte pins[3] = {9, 10, 11};</div>
<div class="line"><a class="code" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> charlie(pins, <span class="keyword">sizeof</span>(pins));</div>
</div><!-- fragment --></p>
<p>Then in <code>setup()</code> we use <a class="el" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5" title="Sets the value of the LED at index in the charliplexed array.">Charlieplex::setLed()</a> and <a class="el" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b" title="Sets the PWM value of the LED at index in the charliplexed array; between 0 and 255.">Charlieplex::setPwmLed()</a> to set three of the six LED's to the desired output values:</p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> setup() {</div>
<div class="line"> charlie.setLed(0, <span class="keyword">true</span>); <span class="comment">// Turn on LED1</span></div>
<div class="line"> charlie.setLed(3, <span class="keyword">true</span>); <span class="comment">// Turn on LED4</span></div>
<div class="line"> charlie.setPwmLed(5, 64); <span class="comment">// Set LED6 to one-quarter on</span></div>
<div class="line">}</div>
</div><!-- fragment --></p>
<p>Charlieplexing can only light a single LED at a time. It is therefore necessary to constantly scan the entire LED array, alternatively turning LED's on and off. The user's peristence of vision fills in the gaps. To do this, we call <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">Charlieplex::loop()</a>:</p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> loop() {</div>
<div class="line"> charlie.loop();</div>
<div class="line">}</div>
</div><!-- fragment --></p>
<p>The downside of Charlieplexing is that when multiple LED's are lit, each LED will appear to be dimmer than if only a single LED was lit. This can be counteracted by using brighter LED's or smaller resistors. The danger with smaller resistors is that if the program crashes or locks up for some reason, a large amount of continuous current could be fed through a single LED and cause it to exceed its maximum rating and burn out.</p>
<p>The full source code for the example follows:</p>
<div class="fragment"><div class="line"><span class="comment">/* This example is placed into the public domain */</span></div>
<div class="line"></div>
<div class="line"><span class="preprocessor">#include &lt;Charlieplex.h&gt;</span></div>
<div class="line"></div>
<div class="line">byte pins[3] = {9, 10, 11};</div>
<div class="line"><a class="code" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> charlie(pins, <span class="keyword">sizeof</span>(pins));</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> setup() {</div>
<div class="line"> charlie.setLed(0, <span class="keyword">true</span>); <span class="comment">// Turn on LED1</span></div>
<div class="line"> charlie.setLed(3, <span class="keyword">true</span>); <span class="comment">// Turn on LED4</span></div>
<div class="line"> charlie.setPwmLed(5, 64); <span class="comment">// Set LED6 to one-quarter on</span></div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> loop() {</div>
<div class="line"> charlie.loop();</div>
<div class="line">}</div>
</div><!-- fragment --><p>A more complex example that performs a LED chase over the 6 LED's follows:</p>
<div class="fragment"><div class="line"><span class="comment">/* This example is placed into the public domain */</span></div>
<div class="line"></div>
<div class="line"><span class="preprocessor">#include &lt;Charlieplex.h&gt;</span></div>
<div class="line"></div>
<div class="line">byte pins[3] = {9, 10, 11};</div>
<div class="line"><a class="code" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> charlie(pins, <span class="keyword">sizeof</span>(pins));</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">int</span> previous = 1;</div>
<div class="line"><span class="keywordtype">int</span> current = 0;</div>
<div class="line"><span class="keywordtype">int</span> step = 1;</div>
<div class="line"><span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> lastTime;</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> setup() {</div>
<div class="line"> lastTime = millis();</div>
<div class="line"> charlie.setLed(current, <span class="keyword">true</span>);</div>
<div class="line"> charlie.setPwmLed(previous, 64);</div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> loop() {</div>
<div class="line"> <span class="keywordflow">if</span> ((millis() - lastTime) &gt;= 100) {</div>
<div class="line"> charlie.setLed(previous, <span class="keyword">false</span>);</div>
<div class="line"> charlie.setPwmLed(current, 64);</div>
<div class="line"> previous = current;</div>
<div class="line"> current += step;</div>
<div class="line"> <span class="keywordflow">if</span> (current &lt; 0) {</div>
<div class="line"> current = 1;</div>
<div class="line"> step = 1;</div>
<div class="line"> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (current &gt;= charlie.count()) {</div>
<div class="line"> current = charlie.count() - 2;</div>
<div class="line"> step = -1;</div>
<div class="line"> }</div>
<div class="line"> charlie.setLed(current, <span class="keyword">true</span>);</div>
<div class="line"> lastTime += 100;</div>
<div class="line"> }</div>
<div class="line"> charlie.loop();</div>
<div class="line">}</div>
</div><!-- fragment --> </div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Cylon Eyes Example</title> <title>ArduinoLibs: Cylon Eyes Example</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -50,108 +58,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</li> </li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Cylon Eyes Example </div> </div>
</div>
<div class="contents">
<div class="textblock"><p>This example shows how to use the <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> class to simulate the Cylon eye effect from Battlestar Galactica. Digital outputs are used to drive six LED's in a back and forth motion, using the following schematic:</p>
<div class="image">
<img src="Cylon.png" alt="Cylon.png"/>
</div>
<p>We start by including the <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> class:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor">#include &lt;ChaseLEDs.h&gt;</span>
</pre></div></p>
<p>The next step is to define the pins that the chase will run over:</p>
<div class="fragment"><pre class="fragment">byte pins[] = {3, 5, 6, 9, 10, 11, 10, 9, 6, 5};
<a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> cylonEyes(pins, <span class="keyword">sizeof</span>(pins), 100);
</pre></div></p>
<p>The chase runs from the first pin to the sixth pin and back again, with each LED lit for 100 milliseconds before moving onto the next one. To complete the example, we need to call <a class="el" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">ChaseLEDs::loop()</a> each time around our main loop to cause the chase to run:</p>
<div class="fragment"><pre class="fragment"><span class="keywordtype">void</span> loop() {
cylonEyes.loop();
}
</pre></div></p>
<p>While this example uses only six pins, it can be easily extended to any number of pins by modifying the <code>pins</code> array and altering the schematic accordingly.</p>
<p>So far we are chasing only a single LED. We could change this to chase two adjacent LED's instead by defining a new <code>CylonChase</code> class that inherits from <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>:</p>
<div class="fragment"><pre class="fragment"><span class="keyword">class </span>CylonChase : <span class="keyword">public</span> <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>
{
<span class="keyword">public</span>:
CylonChase(<span class="keyword">const</span> byte *pins, <span class="keywordtype">int</span> num, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> advanceTime)
: <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>(pins, num, advanceTime) {}
<span class="keyword">protected</span>:
<span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance</a>(byte prevPin, byte nextPin) {
digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(2), LOW);
digitalWrite(prevPin, HIGH);
digitalWrite(nextPin, HIGH);
}
};
</pre></div></p>
<p>The important part is the implementation of the <code>advance()</code> method, which overrides <a class="el" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">ChaseLEDs::advance()</a> to provide our own scheme for lighting the LED's each time the chase advances. We use <a class="el" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">ChaseLEDs::previousPin()</a> to get the pin that is 2 steps back in the sequence, set it to LOW, and then set the previous pin (1 step back) and the next pin to HIGH. All that remains is to change our chase initialization to use the new class:</p>
<div class="fragment"><pre class="fragment">byte pins[] = {3, 5, 6, 9, 10, 11, 10, 9, 6, 5};
CylonChase cylonEyes(pins, <span class="keyword">sizeof</span>(pins), 100);
</pre></div></p>
<p>We can do even better than this. Instead of fully lighting both LED's, we could instead use the PWM outputs to dim the previous pin, creating a kind of "trailing flame" effect:</p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> advance(byte prevPin, byte nextPin) {
digitalWrite(previousPin(2), LOW);
analogWrite(prevPin, 32);
digitalWrite(nextPin, HIGH);
}
</pre></div></p>
<p>The current chase is fixed at 100 milliseconds per LED, which takes a full second to run the sequence. An alternative to hard-wiring the chase rate is to hook up a 10K potentiometer to the A0 analog input:</p>
<div class="image">
<img src="Cylon4.png" alt="Cylon4.png"/>
</div>
<p>We then modify the <code>advance()</code> method to read the new chase rate from the potentiometer each time the LED advances:</p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> advance(byte prevPin, byte nextPin) {
digitalWrite(previousPin(2), LOW);
analogWrite(prevPin, 32);
digitalWrite(nextPin, HIGH);
setAdvanceTime(map(analogRead(A0), 0, 1023, 25, 250));
}
</pre></div></p>
<p>The full source code for the final version of the example follows:</p>
<div class="fragment"><pre class="fragment"><span class="comment">/*</span>
<span class="comment">Sketch that manipulates Arduino outputs to create the &quot;Cylon Eyes&quot; effect from</span>
<span class="comment">Battlestar Galactica. It uses the ChaseLEDs utility class.</span>
<span class="comment"></span>
<span class="comment">This example is placed into the public domain.</span>
<span class="comment">*/</span>
<span class="preprocessor">#include &lt;ChaseLEDs.h&gt;</span>
<span class="keyword">class </span>CylonChase : <span class="keyword">public</span> <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>
{
<span class="keyword">public</span>:
CylonChase(<span class="keyword">const</span> byte *pins, <span class="keywordtype">int</span> num, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> advanceTime)
: <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>(pins, num, advanceTime) {}
<span class="keyword">protected</span>:
<span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance</a>(byte prevPin, byte nextPin) {
digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(2), LOW);
analogWrite(prevPin, 32);
digitalWrite(nextPin, HIGH);
<a class="code" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7" title="Sets the number of milliseconds to advance between LED&#39;s to advanceTime.">setAdvanceTime</a>(map(analogRead(A0), 0, 1023, 25, 250));
}
};
byte pins[] = {3, 5, 6, 9, 10, 11, 10, 9, 6, 5};
CylonChase cylonEyes(pins, <span class="keyword">sizeof</span>(pins), 100);
<span class="keywordtype">void</span> setup() {}
<span class="keywordtype">void</span> loop() {
cylonEyes.loop();
}
</pre></div> </div></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -160,8 +72,107 @@ CylonChase cylonEyes(pins, <span class="keyword">sizeof</span>(pins), 100);
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">Cylon Eyes Example </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>This example shows how to use the <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> class to simulate the Cylon eye effect from Battlestar Galactica. Digital outputs are used to drive six LED's in a back and forth motion, using the following schematic:</p>
<div class="image">
<img src="Cylon.png" alt="Cylon.png"/>
</div>
<p>We start by including the <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> class:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;ChaseLEDs.h&gt;</span></div>
</div><!-- fragment --></p>
<p>The next step is to define the pins that the chase will run over:</p>
<div class="fragment"><div class="line">byte pins[] = {3, 5, 6, 9, 10, 11, 10, 9, 6, 5};</div>
<div class="line"><a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> cylonEyes(pins, <span class="keyword">sizeof</span>(pins), 100);</div>
</div><!-- fragment --></p>
<p>The chase runs from the first pin to the sixth pin and back again, with each LED lit for 100 milliseconds before moving onto the next one. To complete the example, we need to call <a class="el" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">ChaseLEDs::loop()</a> each time around our main loop to cause the chase to run:</p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> loop() {</div>
<div class="line"> cylonEyes.loop();</div>
<div class="line">}</div>
</div><!-- fragment --></p>
<p>While this example uses only six pins, it can be easily extended to any number of pins by modifying the <code>pins</code> array and altering the schematic accordingly.</p>
<p>So far we are chasing only a single LED. We could change this to chase two adjacent LED's instead by defining a new <code>CylonChase</code> class that inherits from <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>:</p>
<div class="fragment"><div class="line"><span class="keyword">class </span>CylonChase : <span class="keyword">public</span> <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a></div>
<div class="line">{</div>
<div class="line"><span class="keyword">public</span>:</div>
<div class="line"> CylonChase(<span class="keyword">const</span> byte *pins, <span class="keywordtype">int</span> num, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> advanceTime)</div>
<div class="line"> : <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>(pins, num, advanceTime) {}</div>
<div class="line"></div>
<div class="line"><span class="keyword">protected</span>:</div>
<div class="line"> <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance</a>(byte prevPin, byte nextPin) {</div>
<div class="line"> digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(2), LOW);</div>
<div class="line"> digitalWrite(prevPin, HIGH);</div>
<div class="line"> digitalWrite(nextPin, HIGH);</div>
<div class="line"> }</div>
<div class="line">};</div>
</div><!-- fragment --></p>
<p>The important part is the implementation of the <code>advance()</code> method, which overrides <a class="el" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">ChaseLEDs::advance()</a> to provide our own scheme for lighting the LED's each time the chase advances. We use <a class="el" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">ChaseLEDs::previousPin()</a> to get the pin that is 2 steps back in the sequence, set it to LOW, and then set the previous pin (1 step back) and the next pin to HIGH. All that remains is to change our chase initialization to use the new class:</p>
<div class="fragment"><div class="line">byte pins[] = {3, 5, 6, 9, 10, 11, 10, 9, 6, 5};</div>
<div class="line">CylonChase cylonEyes(pins, <span class="keyword">sizeof</span>(pins), 100);</div>
</div><!-- fragment --></p>
<p>We can do even better than this. Instead of fully lighting both LED's, we could instead use the PWM outputs to dim the previous pin, creating a kind of "trailing flame" effect:</p>
<div class="fragment"><div class="line"> <span class="keywordtype">void</span> advance(byte prevPin, byte nextPin) {</div>
<div class="line"> digitalWrite(previousPin(2), LOW);</div>
<div class="line"> analogWrite(prevPin, 32);</div>
<div class="line"> digitalWrite(nextPin, HIGH);</div>
<div class="line"> }</div>
</div><!-- fragment --></p>
<p>The current chase is fixed at 100 milliseconds per LED, which takes a full second to run the sequence. An alternative to hard-wiring the chase rate is to hook up a 10K potentiometer to the A0 analog input:</p>
<div class="image">
<img src="Cylon4.png" alt="Cylon4.png"/>
</div>
<p>We then modify the <code>advance()</code> method to read the new chase rate from the potentiometer each time the LED advances:</p>
<div class="fragment"><div class="line"> <span class="keywordtype">void</span> advance(byte prevPin, byte nextPin) {</div>
<div class="line"> digitalWrite(previousPin(2), LOW);</div>
<div class="line"> analogWrite(prevPin, 32);</div>
<div class="line"> digitalWrite(nextPin, HIGH);</div>
<div class="line"> setAdvanceTime(map(analogRead(A0), 0, 1023, 25, 250));</div>
<div class="line"> }</div>
</div><!-- fragment --></p>
<p>The full source code for the final version of the example follows:</p>
<div class="fragment"><div class="line"><span class="comment">/*</span></div>
<div class="line"><span class="comment">Sketch that manipulates Arduino outputs to create the &quot;Cylon Eyes&quot; effect from</span></div>
<div class="line"><span class="comment">Battlestar Galactica. It uses the ChaseLEDs utility class.</span></div>
<div class="line"><span class="comment"></span></div>
<div class="line"><span class="comment">This example is placed into the public domain.</span></div>
<div class="line"><span class="comment">*/</span></div>
<div class="line"></div>
<div class="line"><span class="preprocessor">#include &lt;ChaseLEDs.h&gt;</span></div>
<div class="line"></div>
<div class="line"><span class="keyword">class </span>CylonChase : <span class="keyword">public</span> <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a></div>
<div class="line">{</div>
<div class="line"><span class="keyword">public</span>:</div>
<div class="line"> CylonChase(<span class="keyword">const</span> byte *pins, <span class="keywordtype">int</span> num, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> advanceTime)</div>
<div class="line"> : <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>(pins, num, advanceTime) {}</div>
<div class="line"></div>
<div class="line"><span class="keyword">protected</span>:</div>
<div class="line"> <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance</a>(byte prevPin, byte nextPin) {</div>
<div class="line"> digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(2), LOW);</div>
<div class="line"> analogWrite(prevPin, 32);</div>
<div class="line"> digitalWrite(nextPin, HIGH);</div>
<div class="line"> <a class="code" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7" title="Sets the number of milliseconds to advance between LED&#39;s to advanceTime.">setAdvanceTime</a>(map(analogRead(A0), 0, 1023, 25, 250));</div>
<div class="line"> }</div>
<div class="line">};</div>
<div class="line"></div>
<div class="line">byte pins[] = {3, 5, 6, 9, 10, 11, 10, 9, 6, 5};</div>
<div class="line">CylonChase cylonEyes(pins, <span class="keyword">sizeof</span>(pins), 100);</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> setup() {}</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> loop() {</div>
<div class="line"> cylonEyes.loop();</div>
<div class="line">}</div>
<div class="line"></div>
</div><!-- fragment --> </div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Star Trek Example</title> <title>ArduinoLibs: Star Trek Example</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -50,11 +58,25 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</li> </li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="headertitle"> <div class="headertitle">
<div class="title">Star Trek Example </div> </div> <div class="title">Star Trek Example </div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<div class="textblock"><p>This example shows how to use the <a class="el" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> and <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> classes to simulate the running lights on the starship Enterprise from Star Trek. This can be used as the basis for lighting a model kit. It is recommended that you read the <a class="el" href="blink_blink.html">Blink</a> and <a class="el" href="blink_cylon.html">Cylon</a> tutorials first.</p> <div class="textblock"><p>This example shows how to use the <a class="el" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> and <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> classes to simulate the running lights on the starship Enterprise from Star Trek. This can be used as the basis for lighting a model kit. It is recommended that you read the <a class="el" href="blink_blink.html">Blink</a> and <a class="el" href="blink_cylon.html">Cylon</a> tutorials first.</p>
<p>There are four categories of lights on the Enterprise:</p> <p>There are four categories of lights on the Enterprise:</p>
@@ -78,57 +100,57 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<img src="StarTrekShield.png" alt="StarTrekShield.png"/> <img src="StarTrekShield.png" alt="StarTrekShield.png"/>
</div> </div>
<p>Now that we have a circuit, let's configure the red navigation LED on AOUT2 using the <a class="el" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> class, to blink with a period of 1000 milliseconds on, 1000 milliseconds off:</p> <p>Now that we have a circuit, let's configure the red navigation LED on AOUT2 using the <a class="el" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> class, to blink with a period of 1000 milliseconds on, 1000 milliseconds off:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor">#include &lt;BlinkLED.h&gt;</span> <div class="fragment"><div class="line"><span class="preprocessor">#include &lt;BlinkLED.h&gt;</span></div>
<span class="preprocessor">#define NAV_LIGHTS A2 // Output pin for controlling the navigation lights</span> <div class="line"><span class="preprocessor">#define NAV_LIGHTS A2 // Output pin for controlling the navigation lights</span></div>
<span class="preprocessor">#define NAV_LIGHTS_ON 1000 // Time the navigation lights are on (milliseconds)</span> <div class="line"><span class="preprocessor">#define NAV_LIGHTS_ON 1000 // Time the navigation lights are on (milliseconds)</span></div>
<span class="preprocessor">#define NAV_LIGHTS_OFF 1000 // Time the navigation lights are off (milliseconds)</span> <div class="line"><span class="preprocessor">#define NAV_LIGHTS_OFF 1000 // Time the navigation lights are off (milliseconds)</span></div>
<a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> navLights(NAV_LIGHTS, NAV_LIGHTS_ON, NAV_LIGHTS_OFF); <div class="line"><a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> navLights(NAV_LIGHTS, NAV_LIGHTS_ON, NAV_LIGHTS_OFF);</div>
</pre></div></p> </div><!-- fragment --></p>
<p>We repeat the process for the strobe LED on AOUT3, with a period of 70 milliseconds on, and 830 milliseconds off:</p> <p>We repeat the process for the strobe LED on AOUT3, with a period of 70 milliseconds on, and 830 milliseconds off:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor">#define STROBE_LIGHT A3 // Output pin for controlling the strobe</span> <div class="fragment"><div class="line"><span class="preprocessor">#define STROBE_LIGHT A3 // Output pin for controlling the strobe</span></div>
<span class="preprocessor">#define STROBE_LIGHT_ON 70 // Time the strobe light is on (milliseconds)</span> <div class="line"><span class="preprocessor">#define STROBE_LIGHT_ON 70 // Time the strobe light is on (milliseconds)</span></div>
<span class="preprocessor">#define STROBE_LIGHT_OFF 830 // Time the strobe light is off (milliseconds)</span> <div class="line"><span class="preprocessor">#define STROBE_LIGHT_OFF 830 // Time the strobe light is off (milliseconds)</span></div>
<a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> strobeLight(STROBE_LIGHT, STROBE_LIGHT_ON, STROBE_LIGHT_OFF); <div class="line"><a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> strobeLight(STROBE_LIGHT, STROBE_LIGHT_ON, STROBE_LIGHT_OFF);</div>
</pre></div></p> </div><!-- fragment --></p>
<p>We also need to arrange for <a class="el" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">BlinkLED::loop()</a> to be called from the application's main <code>loop()</code> function:</p> <p>We also need to arrange for <a class="el" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">BlinkLED::loop()</a> to be called from the application's main <code>loop()</code> function:</p>
<div class="fragment"><pre class="fragment"><span class="keywordtype">void</span> loop() { <div class="fragment"><div class="line"><span class="keywordtype">void</span> loop() {</div>
navLights.loop(); <div class="line"> navLights.loop();</div>
strobeLight.loop(); <div class="line"> strobeLight.loop();</div>
} <div class="line">}</div>
</pre></div><p>If you run the sketch at this point, you should see the navigation and strobe LED's blink with the selected rates.</p> </div><!-- fragment --><p>If you run the sketch at this point, you should see the navigation and strobe LED's blink with the selected rates.</p>
<p>Next is the twirl effect in the warp nacelles, using the <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> class. We are actually going to inherit from <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> to create a custom LED chaser that reads the chase rate from AIN0 and uses PWM outputs to create a trailing flame effect. See the <a class="el" href="blink_cylon.html">Cylon</a> example for more information on creating custom effects with <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>.</p> <p>Next is the twirl effect in the warp nacelles, using the <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> class. We are actually going to inherit from <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> to create a custom LED chaser that reads the chase rate from AIN0 and uses PWM outputs to create a trailing flame effect. See the <a class="el" href="blink_cylon.html">Cylon</a> example for more information on creating custom effects with <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>.</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor">#define NACELLE_CHASE_LEN 6 // Length of nacelle chase, 1..6</span> <div class="fragment"><div class="line"><span class="preprocessor">#define NACELLE_CHASE_LEN 6 // Length of nacelle chase, 1..6</span></div>
<span class="preprocessor"></span><span class="preprocessor">#define NACELLE_MIN_PERIOD 25 // Minimum time to advance the nacelle chase (milliseconds)</span> <div class="line"><span class="preprocessor"></span><span class="preprocessor">#define NACELLE_MIN_PERIOD 25 // Minimum time to advance the nacelle chase (milliseconds)</span></div>
<span class="preprocessor"></span><span class="preprocessor">#define NACELLE_MAX_PERIOD 250 // Maximum time to advance the nacelle chase (milliseconds)</span> <div class="line"><span class="preprocessor"></span><span class="preprocessor">#define NACELLE_MAX_PERIOD 250 // Maximum time to advance the nacelle chase (milliseconds)</span></div>
<span class="preprocessor"></span><span class="preprocessor">#define NACELLE_DIM_VALUE 32 // Value for dimming previous LED in chase, 0..255</span> <div class="line"><span class="preprocessor"></span><span class="preprocessor">#define NACELLE_DIM_VALUE 32 // Value for dimming previous LED in chase, 0..255</span></div>
<span class="preprocessor"></span> <div class="line"><span class="preprocessor"></span></div>
<span class="comment">// Output pins to use for the nacelle chase</span> <div class="line"><span class="comment">// Output pins to use for the nacelle chase</span></div>
byte nacelleChasePins[6] = {3, 5, 6, 9, 10, 11}; <div class="line">byte nacelleChasePins[6] = {3, 5, 6, 9, 10, 11};</div>
<div class="line"></div>
<span class="keyword">class </span>NacelleChaseLEDs : <span class="keyword">public</span> <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> <div class="line"><span class="keyword">class </span>NacelleChaseLEDs : <span class="keyword">public</span> <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a></div>
{ <div class="line">{</div>
<span class="keyword">public</span>: <div class="line"><span class="keyword">public</span>:</div>
NacelleChaseLEDs(<span class="keyword">const</span> byte *pins, <span class="keywordtype">int</span> num) <div class="line"> NacelleChaseLEDs(<span class="keyword">const</span> byte *pins, <span class="keywordtype">int</span> num)</div>
: <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>(pins, num, 0) {} <div class="line"> : <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>(pins, num, 0) {}</div>
<div class="line"></div>
<span class="keyword">protected</span>: <div class="line"><span class="keyword">protected</span>:</div>
<span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance</a>(byte prevPin, byte nextPin) { <div class="line"> <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance</a>(byte prevPin, byte nextPin) {</div>
digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(2), LOW); <div class="line"> digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(2), LOW);</div>
analogWrite(prevPin, NACELLE_DIM_VALUE); <div class="line"> analogWrite(prevPin, NACELLE_DIM_VALUE);</div>
digitalWrite(nextPin, HIGH); <div class="line"> digitalWrite(nextPin, HIGH);</div>
<a class="code" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7" title="Sets the number of milliseconds to advance between LED&#39;s to advanceTime.">setAdvanceTime</a>(map(analogRead(NACELLE_RATE), 0, 1023, NACELLE_MIN_PERIOD, NACELLE_MAX_PERIOD)); <div class="line"> <a class="code" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7" title="Sets the number of milliseconds to advance between LED&#39;s to advanceTime.">setAdvanceTime</a>(map(analogRead(NACELLE_RATE), 0, 1023, NACELLE_MIN_PERIOD, NACELLE_MAX_PERIOD));</div>
} <div class="line"> }</div>
}; <div class="line">};</div>
<div class="line"></div>
NacelleChaseLEDs nacelleChase(nacelleChasePins, NACELLE_CHASE_LEN); <div class="line">NacelleChaseLEDs nacelleChase(nacelleChasePins, NACELLE_CHASE_LEN);</div>
</pre></div></p> </div><!-- fragment --></p>
<p>We also need to add a call to <a class="el" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">ChaseLEDs::loop()</a> to the application's main loop:</p> <p>We also need to add a call to <a class="el" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">ChaseLEDs::loop()</a> to the application's main loop:</p>
<div class="fragment"><pre class="fragment"><span class="keywordtype">void</span> loop() { <div class="fragment"><div class="line"><span class="keywordtype">void</span> loop() {</div>
navLights.loop(); <div class="line"> navLights.loop();</div>
strobeLight.loop(); <div class="line"> strobeLight.loop();</div>
nacelleChase.loop(); <div class="line"> nacelleChase.loop();</div>
} <div class="line">}</div>
</pre></div></p> </div><!-- fragment --></p>
<p>Running the sketch now should cause the six LED's in the nacelle sequence to chase, in addition to the navigation and strobe LED's. The 10K potentiometer can be used to select the desired chase rate. This completes the test circuit, and will allow you to fiddle with the blink timings and chase rate until you are happy with the result.</p> <p>Running the sketch now should cause the six LED's in the nacelle sequence to chase, in addition to the navigation and strobe LED's. The 10K potentiometer can be used to select the desired chase rate. This completes the test circuit, and will allow you to fiddle with the blink timings and chase rate until you are happy with the result.</p>
<p>We've made provision in this sketch for six outputs in the chase, but some models may only use three or five. The <code>NACELLE_CHASE_LEN</code> parameter controls the length of the chase.</p> <p>We've made provision in this sketch for six outputs in the chase, but some models may only use three or five. The <code>NACELLE_CHASE_LEN</code> parameter controls the length of the chase.</p>
<p>With three outputs, the LED's can be arranged in opposite pairs, lighting two LED's at a time. The following circuit demonstrates how three outputs can be used to drive six LED's:</p> <p>With three outputs, the LED's can be arranged in opposite pairs, lighting two LED's at a time. The following circuit demonstrates how three outputs can be used to drive six LED's:</p>
@@ -138,96 +160,85 @@ NacelleChaseLEDs nacelleChase(nacelleChasePins, NACELLE_CHASE_LEN);
<p>You will need two of these circuits, for the left and right warp nacelles. The transistor drivers reduce the current load on the Arduino CPU and provide the option to drive the LED's from 12V instead of 5V.</p> <p>You will need two of these circuits, for the left and right warp nacelles. The transistor drivers reduce the current load on the Arduino CPU and provide the option to drive the LED's from 12V instead of 5V.</p>
<p>It is recommended that you use transistor drivers for the navigation and strobe lights as well as there will be multiple LED's on each output in a real model. For example, there will be at least three each of the red and green navigation lights: the top of the saucer section, the bottom of the saucer section, and the top of the warp nacelle. Using a 12V supply will make it easier to string lots of LED's together in series.</p> <p>It is recommended that you use transistor drivers for the navigation and strobe lights as well as there will be multiple LED's on each output in a real model. For example, there will be at least three each of the red and green navigation lights: the top of the saucer section, the bottom of the saucer section, and the top of the warp nacelle. Using a 12V supply will make it easier to string lots of LED's together in series.</p>
<p>Other nacelle effects are possible by modifying the <code>advance()</code> method in the sketch. For example, the "opposite pairs" effect with 3 outputs can also be done with 6 outputs and the following modification to the sketch:</p> <p>Other nacelle effects are possible by modifying the <code>advance()</code> method in the sketch. For example, the "opposite pairs" effect with 3 outputs can also be done with 6 outputs and the following modification to the sketch:</p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> advance(byte prevPin, byte nextPin) { <div class="fragment"><div class="line"> <span class="keywordtype">void</span> advance(byte prevPin, byte nextPin) {</div>
digitalWrite(previousPin(5), LOW); <div class="line"> digitalWrite(previousPin(5), LOW);</div>
analogWrite(previousPin(4), NACELLE_DIM_VALUE); <div class="line"> analogWrite(previousPin(4), NACELLE_DIM_VALUE);</div>
digitalWrite(previousPin(3), HIGH); <div class="line"> digitalWrite(previousPin(3), HIGH);</div>
digitalWrite(previousPin(2), LOW); <div class="line"> digitalWrite(previousPin(2), LOW);</div>
analogWrite(prevPin, NACELLE_DIM_VALUE); <div class="line"> analogWrite(prevPin, NACELLE_DIM_VALUE);</div>
digitalWrite(nextPin, HIGH); <div class="line"> digitalWrite(nextPin, HIGH);</div>
setAdvanceTime(map(analogRead(NACELLE_RATE), 0, 1023, NACELLE_MIN_PERIOD, NACELLE_MAX_PERIOD)); <div class="line"> setAdvanceTime(map(analogRead(NACELLE_RATE), 0, 1023, NACELLE_MIN_PERIOD, NACELLE_MAX_PERIOD));</div>
} <div class="line"> }</div>
</pre></div></p> </div><!-- fragment --></p>
<p>The full source code for the example, including the "opposite pairs" effect, follows:</p> <p>The full source code for the example, including the "opposite pairs" effect, follows:</p>
<div class="fragment"><pre class="fragment"><span class="comment">/*</span> <div class="fragment"><div class="line"><span class="comment">/*</span></div>
<span class="comment">Sketch that manipulates Arduino outputs to create Star Trek Enterprise style</span> <div class="line"><span class="comment">Sketch that manipulates Arduino outputs to create Star Trek Enterprise style</span></div>
<span class="comment">running lights and LED chasers.</span> <div class="line"><span class="comment">running lights and LED chasers.</span></div>
<span class="comment"></span> <div class="line"><span class="comment"></span></div>
<span class="comment">This example is placed into the public domain.</span> <div class="line"><span class="comment">This example is placed into the public domain.</span></div>
<span class="comment">*/</span> <div class="line"><span class="comment">*/</span></div>
<div class="line"></div>
<span class="preprocessor">#include &lt;BlinkLED.h&gt;</span> <div class="line"><span class="preprocessor">#include &lt;BlinkLED.h&gt;</span></div>
<span class="preprocessor">#include &lt;ChaseLEDs.h&gt;</span> <div class="line"><span class="preprocessor">#include &lt;ChaseLEDs.h&gt;</span></div>
<div class="line"></div>
<span class="preprocessor">#define NACELLE_RATE A0 // Analog input for reading the nacelle chase rate</span> <div class="line"><span class="preprocessor">#define NACELLE_RATE A0 // Analog input for reading the nacelle chase rate</span></div>
<span class="preprocessor"></span><span class="preprocessor">#define NAV_LIGHTS A2 // Output pin for controlling the navigation lights</span> <div class="line"><span class="preprocessor"></span><span class="preprocessor">#define NAV_LIGHTS A2 // Output pin for controlling the navigation lights</span></div>
<span class="preprocessor"></span><span class="preprocessor">#define STROBE_LIGHT A3 // Output pin for controlling the strobe</span> <div class="line"><span class="preprocessor"></span><span class="preprocessor">#define STROBE_LIGHT A3 // Output pin for controlling the strobe</span></div>
<span class="preprocessor"></span> <div class="line"><span class="preprocessor"></span></div>
<span class="comment">// Configurable parameters.</span> <div class="line"><span class="comment">// Configurable parameters.</span></div>
<span class="preprocessor">#define NAV_LIGHTS_ON 1000 // Time the navigation lights are on (milliseconds)</span> <div class="line"><span class="preprocessor">#define NAV_LIGHTS_ON 1000 // Time the navigation lights are on (milliseconds)</span></div>
<span class="preprocessor"></span><span class="preprocessor">#define NAV_LIGHTS_OFF 1000 // Time the navigation lights are off (milliseconds)</span> <div class="line"><span class="preprocessor"></span><span class="preprocessor">#define NAV_LIGHTS_OFF 1000 // Time the navigation lights are off (milliseconds)</span></div>
<span class="preprocessor"></span><span class="preprocessor">#define STROBE_LIGHT_ON 70 // Time the strobe light is on (milliseconds)</span> <div class="line"><span class="preprocessor"></span><span class="preprocessor">#define STROBE_LIGHT_ON 70 // Time the strobe light is on (milliseconds)</span></div>
<span class="preprocessor"></span><span class="preprocessor">#define STROBE_LIGHT_OFF 830 // Time the strobe light is off (milliseconds)</span> <div class="line"><span class="preprocessor"></span><span class="preprocessor">#define STROBE_LIGHT_OFF 830 // Time the strobe light is off (milliseconds)</span></div>
<span class="preprocessor"></span><span class="preprocessor">#define NACELLE_CHASE_LEN 6 // Length of nacelle chase, 1..6</span> <div class="line"><span class="preprocessor"></span><span class="preprocessor">#define NACELLE_CHASE_LEN 6 // Length of nacelle chase, 1..6</span></div>
<span class="preprocessor"></span><span class="preprocessor">#define NACELLE_MIN_PERIOD 25 // Minimum time to advance the nacelle chase (milliseconds)</span> <div class="line"><span class="preprocessor"></span><span class="preprocessor">#define NACELLE_MIN_PERIOD 25 // Minimum time to advance the nacelle chase (milliseconds)</span></div>
<span class="preprocessor"></span><span class="preprocessor">#define NACELLE_MAX_PERIOD 250 // Maximum time to advance the nacelle chase (milliseconds)</span> <div class="line"><span class="preprocessor"></span><span class="preprocessor">#define NACELLE_MAX_PERIOD 250 // Maximum time to advance the nacelle chase (milliseconds)</span></div>
<span class="preprocessor"></span><span class="preprocessor">#define NACELLE_DIM_VALUE 32 // Value for dimming previous LED in chase, 0..255</span> <div class="line"><span class="preprocessor"></span><span class="preprocessor">#define NACELLE_DIM_VALUE 32 // Value for dimming previous LED in chase, 0..255</span></div>
<span class="preprocessor"></span> <div class="line"><span class="preprocessor"></span></div>
<span class="comment">// Output pins to use for the nacelle chase</span> <div class="line"><span class="comment">// Output pins to use for the nacelle chase</span></div>
byte nacelleChasePins[6] = {3, 5, 6, 9, 10, 11}; <div class="line">byte nacelleChasePins[6] = {3, 5, 6, 9, 10, 11};</div>
<div class="line"></div>
<span class="keyword">class </span>NacelleChaseLEDs : <span class="keyword">public</span> <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> <div class="line"><span class="keyword">class </span>NacelleChaseLEDs : <span class="keyword">public</span> <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a></div>
{ <div class="line">{</div>
<span class="keyword">public</span>: <div class="line"><span class="keyword">public</span>:</div>
NacelleChaseLEDs(<span class="keyword">const</span> byte *pins, <span class="keywordtype">int</span> num) <div class="line"> NacelleChaseLEDs(<span class="keyword">const</span> byte *pins, <span class="keywordtype">int</span> num)</div>
: <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>(pins, num, 0) {} <div class="line"> : <a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a>(pins, num, 0) {}</div>
<div class="line"></div>
<span class="keyword">protected</span>: <div class="line"><span class="keyword">protected</span>:</div>
<span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance</a>(byte prevPin, byte nextPin) { <div class="line"> <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance</a>(byte prevPin, byte nextPin) {</div>
digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(5), LOW); <div class="line"> digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(5), LOW);</div>
analogWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(4), NACELLE_DIM_VALUE); <div class="line"> analogWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(4), NACELLE_DIM_VALUE);</div>
digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(3), HIGH); <div class="line"> digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(3), HIGH);</div>
digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(2), LOW); <div class="line"> digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(2), LOW);</div>
analogWrite(prevPin, NACELLE_DIM_VALUE); <div class="line"> analogWrite(prevPin, NACELLE_DIM_VALUE);</div>
digitalWrite(nextPin, HIGH); <div class="line"> digitalWrite(nextPin, HIGH);</div>
<a class="code" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7" title="Sets the number of milliseconds to advance between LED&#39;s to advanceTime.">setAdvanceTime</a>(map(analogRead(NACELLE_RATE), 0, 1023, NACELLE_MIN_PERIOD, NACELLE_MAX_PERIOD)); <div class="line"> <a class="code" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7" title="Sets the number of milliseconds to advance between LED&#39;s to advanceTime.">setAdvanceTime</a>(map(analogRead(NACELLE_RATE), 0, 1023, NACELLE_MIN_PERIOD, NACELLE_MAX_PERIOD));</div>
} <div class="line"> }</div>
}; <div class="line">};</div>
<div class="line"></div>
NacelleChaseLEDs nacelleChase(nacelleChasePins, NACELLE_CHASE_LEN); <div class="line">NacelleChaseLEDs nacelleChase(nacelleChasePins, NACELLE_CHASE_LEN);</div>
<div class="line"></div>
<a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> navLights(NAV_LIGHTS, NAV_LIGHTS_ON, NAV_LIGHTS_OFF); <div class="line"><a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> navLights(NAV_LIGHTS, NAV_LIGHTS_ON, NAV_LIGHTS_OFF);</div>
<a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> strobeLight(STROBE_LIGHT, STROBE_LIGHT_ON, STROBE_LIGHT_OFF); <div class="line"><a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> strobeLight(STROBE_LIGHT, STROBE_LIGHT_ON, STROBE_LIGHT_OFF);</div>
<div class="line"></div>
<span class="keywordtype">void</span> setup() { <div class="line"><span class="keywordtype">void</span> setup() {</div>
<span class="comment">// Turn off the status LED on the Arduino board (we don&#39;t need it).</span> <div class="line"> <span class="comment">// Turn off the status LED on the Arduino board (we don&#39;t need it).</span></div>
pinMode(13, OUTPUT); <div class="line"> pinMode(13, OUTPUT);</div>
digitalWrite(13, LOW); <div class="line"> digitalWrite(13, LOW);</div>
} <div class="line">}</div>
<div class="line"></div>
<span class="keywordtype">void</span> loop() { <div class="line"><span class="keywordtype">void</span> loop() {</div>
navLights.loop(); <div class="line"> navLights.loop();</div>
strobeLight.loop(); <div class="line"> strobeLight.loop();</div>
nacelleChase.loop(); <div class="line"> nacelleChase.loop();</div>
} <div class="line">}</div>
<div class="line"></div>
</pre></div> </div></div> </div><!-- fragment --> </div></div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,63 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Bitmap Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classBitmap.html">Bitmap</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a40526748415c8bbc58a8510d636c20f4">Bitmap</a>(int width, int height)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#ad18d3d5a1e77d541a95e93ad1f958411">bitsPerPixel</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a></td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a9b79ac13077ca865e4515510297780bd">charWidth</a>(char ch) const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1">clear</a>(Color color=Black)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> typedef</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#ab22fe1f3871934987a670b559f67c67c">copy</a>(int x, int y, int width, int height, Bitmap *dest, int destX, int destY)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d">data</a>()</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a20fea2a946545aa3b5edd78245149e5f">data</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><b>DMD</b> (defined in <a class="el" href="classBitmap.html">Bitmap</a>)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [friend]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72">drawBitmap</a>(int x, int y, const Bitmap &amp;bitmap, Color color=White)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#aa4089d785c59f16dcf0505ec04b4e658">drawBitmap</a>(int x, int y, const prog_uint8_t *bitmap, Color color=White)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd">drawChar</a>(int x, int y, char ch)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa">drawCircle</a>(int centerX, int centerY, int radius, Color borderColor=White, Color fillColor=NoFill)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a757291b9a39bcb0d64ac98d3a2fa061b">drawFilledCircle</a>(int centerX, int centerY, int radius, Color color=White)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a568acbca3818dd85dd62fff6d0b36ffb">drawFilledRect</a>(int x1, int y1, int x2, int y2, Color color=White)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a">drawInvertedBitmap</a>(int x, int y, const Bitmap &amp;bitmap)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#ae41aa6bfa8d508d216e25d80bb93747e">drawInvertedBitmap</a>(int x, int y, const prog_uint8_t *bitmap)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a>(int x1, int y1, int x2, int y2, Color color=White)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc">drawRect</a>(int x1, int y1, int x2, int y2, Color borderColor=White, Color fillColor=NoFill)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0">drawText</a>(int x, int y, const char *str, int len=-1)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a802f5d6bd19a3727670e61e7a88a0cac">drawText</a>(int x, int y, const String &amp;str, int start=0, int len=-1)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(int x, int y, int width, int height, Color color)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#aadcad6c9e1f10f0ddbb789401132aa6f">fill</a>(int x, int y, int width, int height, const prog_uint8_t *pattern, Color color=White)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#ab6bd47cb892b47b4c69b422ace182b87">font</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a6d85556bcc9fac91d33f0f6f7a6430dd">invert</a>(int x, int y, int width, int height)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a3846a240722e847d3cf11f701da1ce7b">isValid</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">NoFill</a></td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203">pixel</a>(int x, int y) const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a">scroll</a>(int dx, int dy, Color fillColor=Black)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#af79ad4432297ff453fddc55625fec485">scroll</a>(int x, int y, int width, int height, int dx, int dy, Color fillColor=Black)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#abf7adfceb267080aa9806388e96358c4">setFont</a>(const prog_uint8_t *font)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(int x, int y, Color color)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a8e225a4f188269bb18265ae4b49de0a3">setTextColor</a>(Color color)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#af30df263729385ea2330effe3c80a1bc">stride</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#ab6e5f5744fd2f18478aac428b751d848">textColor</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a628bb694fcfe6eab619a4f1e152d41c4">textHeight</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a0f7607b1c7867987f4500d490a666e8a">textWidth</a>(const char *str, int len=-1) const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a8ca70aa0f8f722a228358bffe794e925">textWidth</a>(const String &amp;str, int start=0, int len=-1) const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a></td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a72d2a301ec1eb1c8d0f3d64823659a8e">~Bitmap</a>()</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -123,8 +80,66 @@ This is the complete list of members for <a class="el" href="classBitmap.html">B
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">Bitmap Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classBitmap.html">Bitmap</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a40526748415c8bbc58a8510d636c20f4">Bitmap</a>(int width, int height)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#ad18d3d5a1e77d541a95e93ad1f958411">bitsPerPixel</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a></td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a9b79ac13077ca865e4515510297780bd">charWidth</a>(char ch) const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1">clear</a>(Color color=Black)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> typedef</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#ab22fe1f3871934987a670b559f67c67c">copy</a>(int x, int y, int width, int height, Bitmap *dest, int destX, int destY)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d">data</a>()</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a20fea2a946545aa3b5edd78245149e5f">data</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>DMD</b> (defined in <a class="el" href="classBitmap.html">Bitmap</a>)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72">drawBitmap</a>(int x, int y, const Bitmap &amp;bitmap, Color color=White)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a5e4f23e8f14e193410b5f071149401e4">drawBitmap</a>(int x, int y, Bitmap::ProgMem bitmap, Color color=White)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd">drawChar</a>(int x, int y, char ch)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa">drawCircle</a>(int centerX, int centerY, int radius, Color borderColor=White, Color fillColor=NoFill)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a757291b9a39bcb0d64ac98d3a2fa061b">drawFilledCircle</a>(int centerX, int centerY, int radius, Color color=White)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a568acbca3818dd85dd62fff6d0b36ffb">drawFilledRect</a>(int x1, int y1, int x2, int y2, Color color=White)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a">drawInvertedBitmap</a>(int x, int y, const Bitmap &amp;bitmap)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a2e862b72c2d6471af737fac320472d69">drawInvertedBitmap</a>(int x, int y, Bitmap::ProgMem bitmap)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a>(int x1, int y1, int x2, int y2, Color color=White)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc">drawRect</a>(int x1, int y1, int x2, int y2, Color borderColor=White, Color fillColor=NoFill)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0">drawText</a>(int x, int y, const char *str, int len=-1)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a802f5d6bd19a3727670e61e7a88a0cac">drawText</a>(int x, int y, const String &amp;str, int start=0, int len=-1)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(int x, int y, int width, int height, Color color)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#ac661adab340858b541a2fe44e6303f56">fill</a>(int x, int y, int width, int height, Bitmap::ProgMem pattern, Color color=White)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c">font</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf">Font</a> typedef</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a6d85556bcc9fac91d33f0f6f7a6430dd">invert</a>(int x, int y, int width, int height)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a3846a240722e847d3cf11f701da1ce7b">isValid</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">NoFill</a></td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203">pixel</a>(int x, int y) const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43">ProgMem</a> typedef</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a">scroll</a>(int dx, int dy, Color fillColor=Black)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#af79ad4432297ff453fddc55625fec485">scroll</a>(int x, int y, int width, int height, int dx, int dy, Color fillColor=Black)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a64d7a9651d5c385a044cc910a3b82837">setFont</a>(Font font)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(int x, int y, Color color)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a8e225a4f188269bb18265ae4b49de0a3">setTextColor</a>(Color color)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#af30df263729385ea2330effe3c80a1bc">stride</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#ab6e5f5744fd2f18478aac428b751d848">textColor</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a628bb694fcfe6eab619a4f1e152d41c4">textHeight</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a0f7607b1c7867987f4500d490a666e8a">textWidth</a>(const char *str, int len=-1) const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a8ca70aa0f8f722a228358bffe794e925">textWidth</a>(const String &amp;str, int start=0, int len=-1) const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a></td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a72d2a301ec1eb1c8d0f3d64823659a8e">~Bitmap</a>()</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 307 B

After

Width:  |  Height:  |  Size: 333 B

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,30 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">BlinkLED Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classBlinkLED.html">BlinkLED</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f">BlinkLED</a>(uint8_t pin, unsigned long onTime, unsigned long offTime, bool initialState=false)</td><td><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8">isPaused</a>() const </td><td><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">loop</a>()</td><td><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc">offTime</a>() const </td><td><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb">onTime</a>() const </td><td><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a">pause</a>()</td><td><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252">resume</a>()</td><td><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258">setBlinkRate</a>(unsigned long onTime, unsigned long offTime)</td><td><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4">setState</a>(bool state)</td><td><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233">state</a>() const </td><td><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td><code> [inline]</code></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -90,8 +80,31 @@ This is the complete list of members for <a class="el" href="classBlinkLED.html"
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">BlinkLED Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classBlinkLED.html">BlinkLED</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f">BlinkLED</a>(uint8_t pin, unsigned long onTime, unsigned long offTime, bool initialState=false)</td><td class="entry"><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8">isPaused</a>() const </td><td class="entry"><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">loop</a>()</td><td class="entry"><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc">offTime</a>() const </td><td class="entry"><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb">onTime</a>() const </td><td class="entry"><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a">pause</a>()</td><td class="entry"><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252">resume</a>()</td><td class="entry"><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258">setBlinkRate</a>(unsigned long onTime, unsigned long offTime)</td><td class="entry"><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4">setState</a>(bool state)</td><td class="entry"><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233">state</a>() const </td><td class="entry"><a class="el" href="classBlinkLED.html">BlinkLED</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: BlinkLED Class Reference</title> <title>ArduinoLibs: BlinkLED Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,61 +66,74 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div> <a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classBlinkLED-members.html">List of all members</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">BlinkLED Class Reference</div> </div> <div class="title">BlinkLED Class Reference</div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<!-- doxytag: class="BlinkLED" -->
<p>Blink a LED on a digital output pin. <p>Blink a LED on a digital output pin.
<a href="classBlinkLED.html#details">More...</a></p> <a href="classBlinkLED.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a>&gt;</code></p> <p><code>#include &lt;<a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a>&gt;</code></p>
<p><a href="classBlinkLED-members.html">List of all members.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr> Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f">BlinkLED</a> (uint8_t pin, unsigned long onTime, unsigned long offTime, bool initialState=false)</td></tr> <tr class="memitem:afc33958651e7ce6dceb428ea654c2c2f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f">BlinkLED</a> (uint8_t pin, unsigned long <a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb">onTime</a>, unsigned long <a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc">offTime</a>, bool initialState=false)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize a blinking LED on the specified <em>pin</em>. <a href="#afc33958651e7ce6dceb428ea654c2c2f"></a><br/></td></tr> <tr class="memdesc:afc33958651e7ce6dceb428ea654c2c2f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize a blinking LED on the specified <em>pin</em>. <a href="#afc33958651e7ce6dceb428ea654c2c2f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">loop</a> ()</td></tr> <tr class="memitem:aeeaf42b94c5392935f00f0f12a58c75e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">loop</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb">onTime</a> () const </td></tr> <tr class="memitem:a8475f78f41d1a2d5d719bec8cbbb3ebb"><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb">onTime</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of milliseconds the LED will be on. <a href="#a8475f78f41d1a2d5d719bec8cbbb3ebb"></a><br/></td></tr> <tr class="memdesc:a8475f78f41d1a2d5d719bec8cbbb3ebb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of milliseconds the LED will be on. <a href="#a8475f78f41d1a2d5d719bec8cbbb3ebb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc">offTime</a> () const </td></tr> <tr class="memitem:a74c640edf1a9f6e8bea1e139462908bc"><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc">offTime</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of milliseconds the LED will be off. <a href="#a74c640edf1a9f6e8bea1e139462908bc"></a><br/></td></tr> <tr class="memdesc:a74c640edf1a9f6e8bea1e139462908bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of milliseconds the LED will be off. <a href="#a74c640edf1a9f6e8bea1e139462908bc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258">setBlinkRate</a> (unsigned long onTime, unsigned long offTime)</td></tr> <tr class="memitem:a47f95624881063aa91c0066ed2c92258"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258">setBlinkRate</a> (unsigned long <a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb">onTime</a>, unsigned long <a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc">offTime</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <em>onTime</em> and <em>offTime</em> (in milliseconds). <a href="#a47f95624881063aa91c0066ed2c92258"></a><br/></td></tr> <tr class="memdesc:a47f95624881063aa91c0066ed2c92258"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <em>onTime</em> and <em>offTime</em> (in milliseconds). <a href="#a47f95624881063aa91c0066ed2c92258"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233">state</a> () const </td></tr> <tr class="memitem:ab89b5b3435998ea6699d4bf94866e233"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233">state</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current state of the LED; true is on, false is off. <a href="#ab89b5b3435998ea6699d4bf94866e233"></a><br/></td></tr> <tr class="memdesc:ab89b5b3435998ea6699d4bf94866e233"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current state of the LED; true is on, false is off. <a href="#ab89b5b3435998ea6699d4bf94866e233"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4">setState</a> (bool state)</td></tr> <tr class="memitem:af904a345e56d49948a042ac439d0b9d4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4">setState</a> (bool <a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233">state</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current <em>state</em> of the LED, where true is on, false is off. <a href="#af904a345e56d49948a042ac439d0b9d4"></a><br/></td></tr> <tr class="memdesc:af904a345e56d49948a042ac439d0b9d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current <em>state</em> of the LED, where true is on, false is off. <a href="#af904a345e56d49948a042ac439d0b9d4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a">pause</a> ()</td></tr> <tr class="memitem:a2760a0223cd6a0598b961f681ffb5c0a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a">pause</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Pauses the LED blink cycle in its current <a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state()</a>. <a href="#a2760a0223cd6a0598b961f681ffb5c0a"></a><br/></td></tr> <tr class="memdesc:a2760a0223cd6a0598b961f681ffb5c0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pauses the LED blink cycle in its current <a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state()</a>. <a href="#a2760a0223cd6a0598b961f681ffb5c0a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252">resume</a> ()</td></tr> <tr class="memitem:a380241e4dfd20e8a558487227f2f4252"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252">resume</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Resumes the LED blink cycle after a <a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a" title="Pauses the LED blink cycle in its current state().">pause()</a>. <a href="#a380241e4dfd20e8a558487227f2f4252"></a><br/></td></tr> <tr class="memdesc:a380241e4dfd20e8a558487227f2f4252"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resumes the LED blink cycle after a <a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a" title="Pauses the LED blink cycle in its current state().">pause()</a>. <a href="#a380241e4dfd20e8a558487227f2f4252"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8">isPaused</a> () const </td></tr> <tr class="memitem:aa0ee318b886b84fb71d5831fa456ecc8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8">isPaused</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the LED blink cycle is paused; false otherwise. <a href="#aa0ee318b886b84fb71d5831fa456ecc8"></a><br/></td></tr> <tr class="memdesc:aa0ee318b886b84fb71d5831fa456ecc8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the LED blink cycle is paused; false otherwise. <a href="#aa0ee318b886b84fb71d5831fa456ecc8"></a><br/></td></tr>
</table> </table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Blink a LED on a digital output pin. </p> <div class="textblock"><p>Blink a LED on a digital output pin. </p>
<p><a class="el" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> simplies the process of blinking a LED by encapsulating the control logic into a single class. The following example strobes the status LED on D13 with a period of 70 milliseconds on, 930 milliseconds off (the LED is initially off):</p> <p><a class="el" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> simplies the process of blinking a LED by encapsulating the control logic into a single class. The following example strobes the status LED on D13 with a period of 70 milliseconds on, 930 milliseconds off (the LED is initially off):</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;BlinkLED.h&gt;</span> <div class="fragment"><div class="line"><span class="preprocessor">#include &lt;BlinkLED.h&gt;</span></div>
<div class="line"></div>
<a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> statusBlink(13, 70, 930); <div class="line"><a class="code" href="classBlinkLED.html" title="Blink a LED on a digital output pin.">BlinkLED</a> statusBlink(13, 70, 930);</div>
<div class="line"></div>
<span class="keywordtype">void</span> setup() {} <div class="line"><span class="keywordtype">void</span> setup() {}</div>
<div class="line"></div>
<span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">loop</a>() { <div class="line"><span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">loop</a>() {</div>
statusBlink.loop(); <div class="line"> statusBlink.loop();</div>
} <div class="line">}</div>
</pre></div><p>The current <a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state()</a> of the LED can be changed immediately by calling <a class="el" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4" title="Sets the current state of the LED, where true is on, false is off.">setState()</a>. The blink rate can be modified with <a class="el" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258" title="Sets the onTime and offTime (in milliseconds).">setBlinkRate()</a>. And the blink cycle can be suspended and restarted with <a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a" title="Pauses the LED blink cycle in its current state().">pause()</a> and <a class="el" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252" title="Resumes the LED blink cycle after a pause().">resume()</a>. </p> </div><!-- fragment --><p>The current <a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state()</a> of the LED can be changed immediately by calling <a class="el" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4" title="Sets the current state of the LED, where true is on, false is off.">setState()</a>. The blink rate can be modified with <a class="el" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258" title="Sets the onTime and offTime (in milliseconds).">setBlinkRate()</a>. And the blink cycle can be suspended and restarted with <a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a" title="Pauses the LED blink cycle in its current state().">pause()</a> and <a class="el" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252" title="Resumes the LED blink cycle after a pause().">resume()</a>. </p>
<p>Definition at line <a class="el" href="BlinkLED_8h_source.html#l00028">28</a> of file <a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a>.</p> <p>Definition at line <a class="el" href="BlinkLED_8h_source.html#l00028">28</a> of file <a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2> </div><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="afc33958651e7ce6dceb428ea654c2c2f"></a><!-- doxytag: member="BlinkLED::BlinkLED" ref="afc33958651e7ce6dceb428ea654c2c2f" args="(uint8_t pin, unsigned long onTime, unsigned long offTime, bool initialState=false)" --> <a class="anchor" id="afc33958651e7ce6dceb428ea654c2c2f"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -146,8 +167,7 @@ Public Member Functions</h2></td></tr>
<td></td><td></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Initialize a blinking LED on the specified <em>pin</em>. </p> <p>Initialize a blinking LED on the specified <em>pin</em>. </p>
<p>The LED will blink with a rate defined by <em>onTime</em> and <em>offTime</em> (in milliseconds). Initially the LED's state is given by <em>initialState</em>, where true means initially on and false means initially off. </p> <p>The LED will blink with a rate defined by <em>onTime</em> and <em>offTime</em> (in milliseconds). Initially the LED's state is given by <em>initialState</em>, where true means initially on and false means initially off. </p>
@@ -156,29 +176,36 @@ Public Member Functions</h2></td></tr>
</div> </div>
</div> </div>
<hr/><h2>Member Function Documentation</h2> <h2>Member Function Documentation</h2>
<a class="anchor" id="aa0ee318b886b84fb71d5831fa456ecc8"></a><!-- doxytag: member="BlinkLED::isPaused" ref="aa0ee318b886b84fb71d5831fa456ecc8" args="() const " --> <a class="anchor" id="aa0ee318b886b84fb71d5831fa456ecc8"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">bool BlinkLED::isPaused </td> <td class="memname">bool BlinkLED::isPaused </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if the LED blink cycle is paused; false otherwise. </p> <p>Returns true if the LED blink cycle is paused; false otherwise. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a" title="Pauses the LED blink cycle in its current state().">pause()</a>, <a class="el" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252" title="Resumes the LED blink cycle after a pause().">resume()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a" title="Pauses the LED blink cycle in its current state().">pause()</a>, <a class="el" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252" title="Resumes the LED blink cycle after a pause().">resume()</a> </dd></dl>
<p>Definition at line <a class="el" href="BlinkLED_8h_source.html#l00044">44</a> of file <a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a>.</p> <p>Definition at line <a class="el" href="BlinkLED_8h_source.html#l00044">44</a> of file <a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="aeeaf42b94c5392935f00f0f12a58c75e"></a><!-- doxytag: member="BlinkLED::loop" ref="aeeaf42b94c5392935f00f0f12a58c75e" args="()" --> <a class="anchor" id="aeeaf42b94c5392935f00f0f12a58c75e"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -189,78 +216,98 @@ Public Member Functions</h2></td></tr>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Perform a single iteration of the blink loop for this LED. </p> <p>Perform a single iteration of the blink loop for this LED. </p>
<p>Definition at line <a class="el" href="BlinkLED_8cpp_source.html#l00079">79</a> of file <a class="el" href="BlinkLED_8cpp_source.html">BlinkLED.cpp</a>.</p> <p>Definition at line <a class="el" href="BlinkLED_8cpp_source.html#l00079">79</a> of file <a class="el" href="BlinkLED_8cpp_source.html">BlinkLED.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a74c640edf1a9f6e8bea1e139462908bc"></a><!-- doxytag: member="BlinkLED::offTime" ref="a74c640edf1a9f6e8bea1e139462908bc" args="() const " --> <a class="anchor" id="a74c640edf1a9f6e8bea1e139462908bc"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">unsigned long BlinkLED::offTime </td> <td class="memname">unsigned long BlinkLED::offTime </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of milliseconds the LED will be off. </p> <p>Returns the number of milliseconds the LED will be off. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime()</a>, <a class="el" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258" title="Sets the onTime and offTime (in milliseconds).">setBlinkRate()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime()</a>, <a class="el" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258" title="Sets the onTime and offTime (in milliseconds).">setBlinkRate()</a> </dd></dl>
<p>Definition at line <a class="el" href="BlinkLED_8h_source.html#l00036">36</a> of file <a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a>.</p> <p>Definition at line <a class="el" href="BlinkLED_8h_source.html#l00036">36</a> of file <a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a8475f78f41d1a2d5d719bec8cbbb3ebb"></a><!-- doxytag: member="BlinkLED::onTime" ref="a8475f78f41d1a2d5d719bec8cbbb3ebb" args="() const " --> <a class="anchor" id="a8475f78f41d1a2d5d719bec8cbbb3ebb"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">unsigned long BlinkLED::onTime </td> <td class="memname">unsigned long BlinkLED::onTime </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of milliseconds the LED will be on. </p> <p>Returns the number of milliseconds the LED will be on. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime()</a>, <a class="el" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258" title="Sets the onTime and offTime (in milliseconds).">setBlinkRate()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime()</a>, <a class="el" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258" title="Sets the onTime and offTime (in milliseconds).">setBlinkRate()</a> </dd></dl>
<p>Definition at line <a class="el" href="BlinkLED_8h_source.html#l00035">35</a> of file <a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a>.</p> <p>Definition at line <a class="el" href="BlinkLED_8h_source.html#l00035">35</a> of file <a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a2760a0223cd6a0598b961f681ffb5c0a"></a><!-- doxytag: member="BlinkLED::pause" ref="a2760a0223cd6a0598b961f681ffb5c0a" args="()" --> <a class="anchor" id="a2760a0223cd6a0598b961f681ffb5c0a"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void BlinkLED::pause </td> <td class="memname">void BlinkLED::pause </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td><code> [inline]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Pauses the LED blink cycle in its current <a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state()</a>. </p> <p>Pauses the LED blink cycle in its current <a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state()</a>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252" title="Resumes the LED blink cycle after a pause().">resume()</a>, <a class="el" href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8" title="Returns true if the LED blink cycle is paused; false otherwise.">isPaused()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252" title="Resumes the LED blink cycle after a pause().">resume()</a>, <a class="el" href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8" title="Returns true if the LED blink cycle is paused; false otherwise.">isPaused()</a> </dd></dl>
<p>Definition at line <a class="el" href="BlinkLED_8h_source.html#l00042">42</a> of file <a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a>.</p> <p>Definition at line <a class="el" href="BlinkLED_8h_source.html#l00042">42</a> of file <a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a380241e4dfd20e8a558487227f2f4252"></a><!-- doxytag: member="BlinkLED::resume" ref="a380241e4dfd20e8a558487227f2f4252" args="()" --> <a class="anchor" id="a380241e4dfd20e8a558487227f2f4252"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -271,18 +318,17 @@ Public Member Functions</h2></td></tr>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Resumes the LED blink cycle after a <a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a" title="Pauses the LED blink cycle in its current state().">pause()</a>. </p> <p>Resumes the LED blink cycle after a <a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a" title="Pauses the LED blink cycle in its current state().">pause()</a>. </p>
<p>The LED will complete its current <a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime()</a> or <a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime()</a> and then will switch to the opposite <a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state()</a>. If <a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime()</a> or <a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime()</a> has already expired, then the LED will immediately switch state.</p> <p>The LED will complete its current <a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime()</a> or <a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime()</a> and then will switch to the opposite <a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state()</a>. If <a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime()</a> or <a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime()</a> has already expired, then the LED will immediately switch state.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a" title="Pauses the LED blink cycle in its current state().">pause()</a>, <a class="el" href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8" title="Returns true if the LED blink cycle is paused; false otherwise.">isPaused()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a" title="Pauses the LED blink cycle in its current state().">pause()</a>, <a class="el" href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8" title="Returns true if the LED blink cycle is paused; false otherwise.">isPaused()</a> </dd></dl>
<p>Definition at line <a class="el" href="BlinkLED_8cpp_source.html#l00170">170</a> of file <a class="el" href="BlinkLED_8cpp_source.html">BlinkLED.cpp</a>.</p> <p>Definition at line <a class="el" href="BlinkLED_8cpp_source.html#l00170">170</a> of file <a class="el" href="BlinkLED_8cpp_source.html">BlinkLED.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a47f95624881063aa91c0066ed2c92258"></a><!-- doxytag: member="BlinkLED::setBlinkRate" ref="a47f95624881063aa91c0066ed2c92258" args="(unsigned long onTime, unsigned long offTime)" --> <a class="anchor" id="a47f95624881063aa91c0066ed2c92258"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -304,18 +350,17 @@ Public Member Functions</h2></td></tr>
<td></td><td></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Sets the <em>onTime</em> and <em>offTime</em> (in milliseconds). </p> <p>Sets the <em>onTime</em> and <em>offTime</em> (in milliseconds). </p>
<p>The change takes effect immediately. If the current <a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime()</a> or <a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime()</a> has now expired, then the LED will immediately switch to the opposite <a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state()</a>.</p> <p>The change takes effect immediately. If the current <a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime()</a> or <a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime()</a> has now expired, then the LED will immediately switch to the opposite <a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime()</a>, <a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime()</a>, <a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime()</a> </dd></dl>
<p>Definition at line <a class="el" href="BlinkLED_8cpp_source.html#l00122">122</a> of file <a class="el" href="BlinkLED_8cpp_source.html">BlinkLED.cpp</a>.</p> <p>Definition at line <a class="el" href="BlinkLED_8cpp_source.html#l00122">122</a> of file <a class="el" href="BlinkLED_8cpp_source.html">BlinkLED.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="af904a345e56d49948a042ac439d0b9d4"></a><!-- doxytag: member="BlinkLED::setState" ref="af904a345e56d49948a042ac439d0b9d4" args="(bool state)" --> <a class="anchor" id="af904a345e56d49948a042ac439d0b9d4"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -327,33 +372,39 @@ Public Member Functions</h2></td></tr>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Sets the current <em>state</em> of the LED, where true is on, false is off. </p> <p>Sets the current <em>state</em> of the LED, where true is on, false is off. </p>
<p>If the LED is already set to <em>state</em>, then it will complete its current cycle of <a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime()</a> or <a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime()</a>. Otherwise the LED is immediately set to <em>state</em> and a new cycle begins.</p> <p>If the LED is already set to <em>state</em>, then it will complete its current cycle of <a class="el" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb" title="Returns the number of milliseconds the LED will be on.">onTime()</a> or <a class="el" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc" title="Returns the number of milliseconds the LED will be off.">offTime()</a>. Otherwise the LED is immediately set to <em>state</em> and a new cycle begins.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233" title="Returns the current state of the LED; true is on, false is off.">state()</a> </dd></dl>
<p>Definition at line <a class="el" href="BlinkLED_8cpp_source.html#l00145">145</a> of file <a class="el" href="BlinkLED_8cpp_source.html">BlinkLED.cpp</a>.</p> <p>Definition at line <a class="el" href="BlinkLED_8cpp_source.html#l00145">145</a> of file <a class="el" href="BlinkLED_8cpp_source.html">BlinkLED.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="ab89b5b3435998ea6699d4bf94866e233"></a><!-- doxytag: member="BlinkLED::state" ref="ab89b5b3435998ea6699d4bf94866e233" args="() const " --> <a class="anchor" id="ab89b5b3435998ea6699d4bf94866e233"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">bool BlinkLED::state </td> <td class="memname">bool BlinkLED::state </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the current state of the LED; true is on, false is off. </p> <p>Returns the current state of the LED; true is on, false is off. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4" title="Sets the current state of the LED, where true is on, false is off.">setState()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4" title="Sets the current state of the LED, where true is on, false is off.">setState()</a> </dd></dl>
<p>Definition at line <a class="el" href="BlinkLED_8h_source.html#l00039">39</a> of file <a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a>.</p> <p>Definition at line <a class="el" href="BlinkLED_8h_source.html#l00039">39</a> of file <a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a>.</p>
@@ -363,23 +414,12 @@ Public Member Functions</h2></td></tr>
<li><a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a></li> <li><a class="el" href="BlinkLED_8h_source.html">BlinkLED.h</a></li>
<li><a class="el" href="BlinkLED_8cpp_source.html">BlinkLED.cpp</a></li> <li><a class="el" href="BlinkLED_8cpp_source.html">BlinkLED.cpp</a></li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,40 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">BoolField Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classBoolField.html">BoolField</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998">BoolField</a>(const String &amp;label)</td><td><a class="el" href="classBoolField.html">BoolField</a></td><td><code> [explicit]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBoolField.html#a49aad212ed18f84baa105c24e86281d9">BoolField</a>(Form &amp;form, const String &amp;label, const String &amp;trueLabel, const String &amp;falseLabel, bool value)</td><td><a class="el" href="classBoolField.html">BoolField</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBoolField.html#af793bafc1193d79b495c2ede711bca57">dispatch</a>(int event)</td><td><a class="el" href="classBoolField.html">BoolField</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09">enterField</a>(bool reverse)</td><td><a class="el" href="classBoolField.html">BoolField</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">exitField</a>()</td><td><a class="el" href="classField.html">Field</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01">falseLabel</a>() const </td><td><a class="el" href="classBoolField.html">BoolField</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">Field</a>(const String &amp;label)</td><td><a class="el" href="classField.html">Field</a></td><td><code> [explicit]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a7e2bdb203ddfd9219696f263c1731fe7">Field</a>(Form &amp;form, const String &amp;label)</td><td><a class="el" href="classField.html">Field</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>() const </td><td><a class="el" href="classField.html">Field</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a25d86a67b321e8c642edf75a10a35f72">isCurrent</a>() const </td><td><a class="el" href="classField.html">Field</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>() const </td><td><a class="el" href="classField.html">Field</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">lcd</a>() const </td><td><a class="el" href="classField.html">Field</a></td><td><code> [inline, protected]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a">setFalseLabel</a>(const String &amp;falseLabel)</td><td><a class="el" href="classBoolField.html">BoolField</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b">setLabel</a>(const String &amp;label)</td><td><a class="el" href="classField.html">Field</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194">setTrueLabel</a>(const String &amp;trueLabel)</td><td><a class="el" href="classBoolField.html">BoolField</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577">setValue</a>(bool value)</td><td><a class="el" href="classBoolField.html">BoolField</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d">trueLabel</a>() const </td><td><a class="el" href="classBoolField.html">BoolField</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#afc612378167be0e7f8a6f8395b3537bd">updateCursor</a>()</td><td><a class="el" href="classField.html">Field</a></td><td><code> [protected, virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39">value</a>() const </td><td><a class="el" href="classBoolField.html">BoolField</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60">~Field</a>()</td><td><a class="el" href="classField.html">Field</a></td><td></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -100,8 +80,41 @@ This is the complete list of members for <a class="el" href="classBoolField.html
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">BoolField Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classBoolField.html">BoolField</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998">BoolField</a>(const String &amp;label)</td><td class="entry"><a class="el" href="classBoolField.html">BoolField</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classBoolField.html#a49aad212ed18f84baa105c24e86281d9">BoolField</a>(Form &amp;form, const String &amp;label, const String &amp;trueLabel, const String &amp;falseLabel, bool value)</td><td class="entry"><a class="el" href="classBoolField.html">BoolField</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBoolField.html#af793bafc1193d79b495c2ede711bca57">dispatch</a>(int event)</td><td class="entry"><a class="el" href="classBoolField.html">BoolField</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09">enterField</a>(bool reverse)</td><td class="entry"><a class="el" href="classBoolField.html">BoolField</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">exitField</a>()</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01">falseLabel</a>() const </td><td class="entry"><a class="el" href="classBoolField.html">BoolField</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">Field</a>(const String &amp;label)</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#a7e2bdb203ddfd9219696f263c1731fe7">Field</a>(Form &amp;form, const String &amp;label)</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>() const </td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#a25d86a67b321e8c642edf75a10a35f72">isCurrent</a>() const </td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>() const </td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">lcd</a>() const </td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a">setFalseLabel</a>(const String &amp;falseLabel)</td><td class="entry"><a class="el" href="classBoolField.html">BoolField</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b">setLabel</a>(const String &amp;label)</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194">setTrueLabel</a>(const String &amp;trueLabel)</td><td class="entry"><a class="el" href="classBoolField.html">BoolField</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577">setValue</a>(bool value)</td><td class="entry"><a class="el" href="classBoolField.html">BoolField</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d">trueLabel</a>() const </td><td class="entry"><a class="el" href="classBoolField.html">BoolField</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#afc612378167be0e7f8a6f8395b3537bd">updateCursor</a>()</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39">value</a>() const </td><td class="entry"><a class="el" href="classBoolField.html">BoolField</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60">~Field</a>()</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: BoolField Class Reference</title> <title>ArduinoLibs: BoolField Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,15 +66,30 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div> <a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classBoolField-members.html">List of all members</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">BoolField Class Reference</div> </div> <div class="title">BoolField Class Reference</div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<!-- doxytag: class="BoolField" --><!-- doxytag: inherits="Field" -->
<p><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages the input of a boolean value. <p><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages the input of a boolean value.
<a href="classBoolField.html#details">More...</a></p> <a href="classBoolField.html#details">More...</a></p>
@@ -80,82 +103,115 @@ Inheritance diagram for BoolField:</div>
<area href="classField.html" title="Manages a single data input/output field within a Form." alt="Field" shape="rect" coords="0,0,65,24"/> <area href="classField.html" title="Manages a single data input/output field within a Form." alt="Field" shape="rect" coords="0,0,65,24"/>
</map> </map>
</div></div> </div></div>
<p><a href="classBoolField-members.html">List of all members.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr> Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998">BoolField</a> (const String &amp;label)</td></tr> <tr class="memitem:a5d4382cdcdc989de0179d8f3f3a59998"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998">BoolField</a> (const String &amp;<a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new boolean field with a specific <em>label</em>. <a href="#a5d4382cdcdc989de0179d8f3f3a59998"></a><br/></td></tr> <tr class="memdesc:a5d4382cdcdc989de0179d8f3f3a59998"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new boolean field with a specific <em>label</em>. <a href="#a5d4382cdcdc989de0179d8f3f3a59998"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#a49aad212ed18f84baa105c24e86281d9">BoolField</a> (<a class="el" href="classForm.html">Form</a> &amp;form, const String &amp;label, const String &amp;trueLabel, const String &amp;falseLabel, bool value)</td></tr> <tr class="memitem:a49aad212ed18f84baa105c24e86281d9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#a49aad212ed18f84baa105c24e86281d9">BoolField</a> (<a class="el" href="classForm.html">Form</a> &amp;<a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>, const String &amp;<a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>, const String &amp;<a class="el" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d">trueLabel</a>, const String &amp;<a class="el" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01">falseLabel</a>, bool <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39">value</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new boolean field with a specific <em>label</em> and attaches it to a <em>form</em>. <a href="#a49aad212ed18f84baa105c24e86281d9"></a><br/></td></tr> <tr class="memdesc:a49aad212ed18f84baa105c24e86281d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new boolean field with a specific <em>label</em> and attaches it to a <em>form</em>. <a href="#a49aad212ed18f84baa105c24e86281d9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#af793bafc1193d79b495c2ede711bca57">dispatch</a> (int event)</td></tr> <tr class="memitem:af793bafc1193d79b495c2ede711bca57"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#af793bafc1193d79b495c2ede711bca57">dispatch</a> (int event)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatches <em>event</em> via this field. <a href="#af793bafc1193d79b495c2ede711bca57"></a><br/></td></tr> <tr class="memdesc:af793bafc1193d79b495c2ede711bca57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatches <em>event</em> via this field. <a href="#af793bafc1193d79b495c2ede711bca57"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09">enterField</a> (bool reverse)</td></tr> <tr class="memitem:ab3f1e610b52caed7e41016f6ae3d7d09"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09">enterField</a> (bool reverse)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enters the field due to form navigation. <a href="#ab3f1e610b52caed7e41016f6ae3d7d09"></a><br/></td></tr> <tr class="memdesc:ab3f1e610b52caed7e41016f6ae3d7d09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enters the field due to form navigation. <a href="#ab3f1e610b52caed7e41016f6ae3d7d09"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39">value</a> () const </td></tr> <tr class="memitem:a9147826437fbaf9b29eda9dee9e37b39"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39">value</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current value of this field, true or false. <a href="#a9147826437fbaf9b29eda9dee9e37b39"></a><br/></td></tr> <tr class="memdesc:a9147826437fbaf9b29eda9dee9e37b39"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current value of this field, true or false. <a href="#a9147826437fbaf9b29eda9dee9e37b39"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577">setValue</a> (bool value)</td></tr> <tr class="memitem:a080c575fd4a98e6afc4b9197fbab5577"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577">setValue</a> (bool <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39">value</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current value of this field to <em>value</em>. <a href="#a080c575fd4a98e6afc4b9197fbab5577"></a><br/></td></tr> <tr class="memdesc:a080c575fd4a98e6afc4b9197fbab5577"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current value of this field to <em>value</em>. <a href="#a080c575fd4a98e6afc4b9197fbab5577"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const String &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d">trueLabel</a> () const </td></tr> <tr class="memitem:a9972030beec6e007b556c6eb652e163d"><td class="memItemLeft" align="right" valign="top">const String &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d">trueLabel</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is true. <a href="#a9972030beec6e007b556c6eb652e163d"></a><br/></td></tr> <tr class="memdesc:a9972030beec6e007b556c6eb652e163d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is true. <a href="#a9972030beec6e007b556c6eb652e163d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194">setTrueLabel</a> (const String &amp;trueLabel)</td></tr> <tr class="memitem:a803fc8c39765da4a44af01d925cd4194"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194">setTrueLabel</a> (const String &amp;<a class="el" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d">trueLabel</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is true to <em>trueLabel</em>. <a href="#a803fc8c39765da4a44af01d925cd4194"></a><br/></td></tr> <tr class="memdesc:a803fc8c39765da4a44af01d925cd4194"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is true to <em>trueLabel</em>. <a href="#a803fc8c39765da4a44af01d925cd4194"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const String &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01">falseLabel</a> () const </td></tr> <tr class="memitem:a59ad7a8a33290bda0d9fbb3df4f09b01"><td class="memItemLeft" align="right" valign="top">const String &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01">falseLabel</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is false. <a href="#a59ad7a8a33290bda0d9fbb3df4f09b01"></a><br/></td></tr> <tr class="memdesc:a59ad7a8a33290bda0d9fbb3df4f09b01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is false. <a href="#a59ad7a8a33290bda0d9fbb3df4f09b01"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a">setFalseLabel</a> (const String &amp;falseLabel)</td></tr> <tr class="memitem:ae6a29d27139fd78f2ca96152059fb30a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a">setFalseLabel</a> (const String &amp;<a class="el" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01">falseLabel</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is false to <em>falseLabel</em>. <a href="#ae6a29d27139fd78f2ca96152059fb30a"></a><br/></td></tr> <tr class="memdesc:ae6a29d27139fd78f2ca96152059fb30a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is false to <em>falseLabel</em>. <a href="#ae6a29d27139fd78f2ca96152059fb30a"></a><br/></td></tr>
<tr class="inherit_header pub_methods_classField"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classField')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classField.html">Field</a></td></tr>
<tr class="memitem:ac4ea0d104376233c3f0bfc080ec8564e inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">Field</a> (const String &amp;<a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>)</td></tr>
<tr class="memdesc:ac4ea0d104376233c3f0bfc080ec8564e inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new field with a specific <em>label</em>. <a href="#ac4ea0d104376233c3f0bfc080ec8564e"></a><br/></td></tr>
<tr class="memitem:a7e2bdb203ddfd9219696f263c1731fe7 inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e2bdb203ddfd9219696f263c1731fe7"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a7e2bdb203ddfd9219696f263c1731fe7">Field</a> (<a class="el" href="classForm.html">Form</a> &amp;<a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>, const String &amp;<a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>)</td></tr>
<tr class="memdesc:a7e2bdb203ddfd9219696f263c1731fe7 inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new field with a specific <em>label</em> and attaches it to a <em>form</em>. <br/></td></tr>
<tr class="memitem:a45d6e6d09b8f8e46de62b40119d62c60 inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60">~Field</a> ()</td></tr>
<tr class="memdesc:a45d6e6d09b8f8e46de62b40119d62c60 inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys this field and removes it from its owning <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. <a href="#a45d6e6d09b8f8e46de62b40119d62c60"></a><br/></td></tr>
<tr class="memitem:a27427319be1cc92db3128637d8884ee5 inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27427319be1cc92db3128637d8884ee5"></a>
<a class="el" href="classForm.html">Form</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a> () const </td></tr>
<tr class="memdesc:a27427319be1cc92db3128637d8884ee5 inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> that owns this field; null if not associated with a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. <br/></td></tr>
<tr class="memitem:ad6805c75ee1e62f8cd8bd550c4530c07 inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">exitField</a> ()</td></tr>
<tr class="memdesc:ad6805c75ee1e62f8cd8bd550c4530c07 inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exits the field due to form navigation. <a href="#ad6805c75ee1e62f8cd8bd550c4530c07"></a><br/></td></tr>
<tr class="memitem:aaa861ef917130c989a955bc75c683afe inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top">const String &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a> () const </td></tr>
<tr class="memdesc:aaa861ef917130c989a955bc75c683afe inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the label to display in the first line of this field. <a href="#aaa861ef917130c989a955bc75c683afe"></a><br/></td></tr>
<tr class="memitem:ad4ea63599d780c35b296cf2840b69f7b inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b">setLabel</a> (const String &amp;<a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>)</td></tr>
<tr class="memdesc:ad4ea63599d780c35b296cf2840b69f7b inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <em>label</em> to display in the first line of this field. <a href="#ad4ea63599d780c35b296cf2840b69f7b"></a><br/></td></tr>
<tr class="memitem:a25d86a67b321e8c642edf75a10a35f72 inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a25d86a67b321e8c642edf75a10a35f72">isCurrent</a> () const </td></tr>
<tr class="memdesc:a25d86a67b321e8c642edf75a10a35f72 inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if this field is the currently-displayed field in its owning form; false otherwise. <a href="#a25d86a67b321e8c642edf75a10a35f72"></a><br/></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_methods_classField"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classField')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classField.html">Field</a></td></tr>
<tr class="memitem:a5cf21bf958a71e51feac9e1bf9f599d1 inherit pro_methods_classField"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cf21bf958a71e51feac9e1bf9f599d1"></a>
LiquidCrystal *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">lcd</a> () const </td></tr>
<tr class="memdesc:a5cf21bf958a71e51feac9e1bf9f599d1 inherit pro_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> that this field is being drawn on. <br/></td></tr>
<tr class="memitem:afc612378167be0e7f8a6f8395b3537bd inherit pro_methods_classField"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#afc612378167be0e7f8a6f8395b3537bd">updateCursor</a> ()</td></tr>
<tr class="memdesc:afc612378167be0e7f8a6f8395b3537bd inherit pro_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the cursor position after the label has been drawn by <a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b" title="Sets the label to display in the first line of this field.">setLabel()</a>. <a href="#afc612378167be0e7f8a6f8395b3537bd"></a><br/></td></tr>
</table> </table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages the input of a boolean value. </p> <div class="textblock"><p><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages the input of a boolean value. </p>
<p><a class="el" href="classBoolField.html" title="Field that manages the input of a boolean value.">BoolField</a> is intended for field values that are modifiable by the user. Pressing one of Up or Down will toggle the field's current value.</p> <p><a class="el" href="classBoolField.html" title="Field that manages the input of a boolean value.">BoolField</a> is intended for field values that are modifiable by the user. Pressing one of Up or Down will toggle the field's current value.</p>
<p>The following example creates a boolean field that shows the state of the status LED on D13. When the LED is on (the default), the string "On" will be displayed on the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> screen. When the LED is off, the string "Off" will be displayed instead.</p> <p>The following example creates a boolean field that shows the state of the status LED on D13. When the LED is on (the default), the string "On" will be displayed on the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> screen. When the LED is off, the string "Off" will be displayed instead.</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> mainForm(lcd); <div class="fragment"><div class="line"><a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> mainForm(lcd);</div>
<a class="code" href="classBoolField.html" title="Field that manages the input of a boolean value.">BoolField</a> ledField(mainForm, <span class="stringliteral">&quot;Status LED&quot;</span>, <span class="stringliteral">&quot;On&quot;</span>, <span class="stringliteral">&quot;Off&quot;</span>, <span class="keyword">true</span>); <div class="line"><a class="code" href="classBoolField.html" title="Field that manages the input of a boolean value.">BoolField</a> ledField(mainForm, <span class="stringliteral">&quot;Status LED&quot;</span>, <span class="stringliteral">&quot;On&quot;</span>, <span class="stringliteral">&quot;Off&quot;</span>, <span class="keyword">true</span>);</div>
</pre></div><div class="image"> </div><!-- fragment --><div class="image">
<img src="FormBool.png" alt="FormBool.png"/> <img src="FormBool.png" alt="FormBool.png"/>
</div> </div>
<p>To actually toggle the LED, the application's main loop() function should contain the following code:</p> <p>To actually toggle the LED, the application's main loop() function should contain the following code:</p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">int</span> <span class="keyword">event</span> = lcd.<a class="code" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">getButton</a>(); <div class="fragment"><div class="line"><span class="keywordtype">int</span> <span class="keyword">event</span> = lcd.<a class="code" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">getButton</a>();</div>
<span class="keywordflow">if</span> (mainForm.dispatch(event) == FORM_CHANGED) { <div class="line"><span class="keywordflow">if</span> (mainForm.dispatch(event) == FORM_CHANGED) {</div>
<span class="keywordflow">if</span> (mainForm.isCurrent(ledField)) { <div class="line"> <span class="keywordflow">if</span> (mainForm.isCurrent(ledField)) {</div>
<span class="keywordflow">if</span> (ledField.value()) <div class="line"> <span class="keywordflow">if</span> (ledField.value())</div>
digitalWrite(STATUS_LED, HIGH); <div class="line"> digitalWrite(STATUS_LED, HIGH);</div>
<span class="keywordflow">else</span> <div class="line"> <span class="keywordflow">else</span></div>
digitalWrite(STATUS_LED, LOW); <div class="line"> digitalWrite(STATUS_LED, LOW);</div>
} <div class="line"> }</div>
} <div class="line">}</div>
</pre></div><p>Use <a class="el" href="classTextField.html" title="Field that displays a read-only text value.">TextField</a> for read-only fields that report boolean values but which are not modifiable by the user.</p> </div><!-- fragment --><p>Use <a class="el" href="classTextField.html" title="Field that displays a read-only text value.">TextField</a> for read-only fields that report boolean values but which are not modifiable by the user.</p>
<p><a class="el" href="classListField.html" title="Field that manages selection from a static list of items.">ListField</a> can be used to select between more than two items.</p> <p><a class="el" href="classListField.html" title="Field that manages selection from a static list of items.">ListField</a> can be used to select between more than two items.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>, <a class="el" href="classListField.html" title="Field that manages selection from a static list of items.">ListField</a>, <a class="el" href="classTextField.html" title="Field that displays a read-only text value.">TextField</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>, <a class="el" href="classListField.html" title="Field that manages selection from a static list of items.">ListField</a>, <a class="el" href="classTextField.html" title="Field that displays a read-only text value.">TextField</a> </dd></dl>
<p>Definition at line <a class="el" href="BoolField_8h_source.html#l00028">28</a> of file <a class="el" href="BoolField_8h_source.html">BoolField.h</a>.</p> <p>Definition at line <a class="el" href="BoolField_8h_source.html#l00028">28</a> of file <a class="el" href="BoolField_8h_source.html">BoolField.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2> </div><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a5d4382cdcdc989de0179d8f3f3a59998"></a><!-- doxytag: member="BoolField::BoolField" ref="a5d4382cdcdc989de0179d8f3f3a59998" args="(const String &amp;label)" --> <a class="anchor" id="a5d4382cdcdc989de0179d8f3f3a59998"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">BoolField::BoolField </td> <td class="memname">BoolField::BoolField </td>
<td>(</td> <td>(</td>
<td class="paramtype">const String &amp;&#160;</td> <td class="paramtype">const String &amp;&#160;</td>
<td class="paramname"><em>label</em></td><td>)</td> <td class="paramname"><em>label</em></td><td>)</td>
<td><code> [explicit]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructs a new boolean field with a specific <em>label</em>. </p> <p>Constructs a new boolean field with a specific <em>label</em>. </p>
<p>The field is initially not associated with a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. The field can be added to a form later using <a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">Form::addField()</a>.</p> <p>The field is initially not associated with a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. The field can be added to a form later using <a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">Form::addField()</a>.</p>
<p>The initial <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> will be false.</p> <p>The initial <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> will be false.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">Form::addField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">Form::addField()</a> </dd></dl>
<p>Definition at line <a class="el" href="BoolField_8cpp_source.html#l00077">77</a> of file <a class="el" href="BoolField_8cpp_source.html">BoolField.cpp</a>.</p> <p>Definition at line <a class="el" href="BoolField_8cpp_source.html#l00077">77</a> of file <a class="el" href="BoolField_8cpp_source.html">BoolField.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a49aad212ed18f84baa105c24e86281d9"></a><!-- doxytag: member="BoolField::BoolField" ref="a49aad212ed18f84baa105c24e86281d9" args="(Form &amp;form, const String &amp;label, const String &amp;trueLabel, const String &amp;falseLabel, bool value)" --> <a class="anchor" id="a49aad212ed18f84baa105c24e86281d9"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -195,39 +251,45 @@ Public Member Functions</h2></td></tr>
<td></td><td></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Constructs a new boolean field with a specific <em>label</em> and attaches it to a <em>form</em>. </p> <p>Constructs a new boolean field with a specific <em>label</em> and attaches it to a <em>form</em>. </p>
<p>The initial <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> of the field is set to the parameter <em>value</em>. When <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is true, <em>trueLabel</em> will be displayed on the screen. When <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is false, <em>falseLabel</em> will be displayed on the screen.</p> <p>The initial <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> of the field is set to the parameter <em>value</em>. When <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is true, <em>trueLabel</em> will be displayed on the screen. When <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is false, <em>falseLabel</em> will be displayed on the screen.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> </dd></dl>
<p>Definition at line <a class="el" href="BoolField_8cpp_source.html#l00094">94</a> of file <a class="el" href="BoolField_8cpp_source.html">BoolField.cpp</a>.</p> <p>Definition at line <a class="el" href="BoolField_8cpp_source.html#l00094">94</a> of file <a class="el" href="BoolField_8cpp_source.html">BoolField.cpp</a>.</p>
</div> </div>
</div> </div>
<hr/><h2>Member Function Documentation</h2> <h2>Member Function Documentation</h2>
<a class="anchor" id="af793bafc1193d79b495c2ede711bca57"></a><!-- doxytag: member="BoolField::dispatch" ref="af793bafc1193d79b495c2ede711bca57" args="(int event)" --> <a class="anchor" id="af793bafc1193d79b495c2ede711bca57"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">int BoolField::dispatch </td> <td class="memname">int BoolField::dispatch </td>
<td>(</td> <td>(</td>
<td class="paramtype">int&#160;</td> <td class="paramtype">int&#160;</td>
<td class="paramname"><em>event</em></td><td>)</td> <td class="paramname"><em>event</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Dispatches <em>event</em> via this field. </p> <p>Dispatches <em>event</em> via this field. </p>
<p>The <em>event</em> is usually obtained from <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a>.</p> <p>The <em>event</em> is usually obtained from <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a>.</p>
<p>Returns zero if the <em>event</em> has been handled and no further action is required.</p> <p>Returns zero if the <em>event</em> has been handled and no further action is required.</p>
<p>Returns FORM_CHANGED if the <em>event</em> has changed the value of this field in a manner that may require the application to take further action based on the new field value.</p> <p>Returns FORM_CHANGED if the <em>event</em> has changed the value of this field in a manner that may require the application to take further action based on the new field value.</p>
<p>Returns -1 if the <em>event</em> is not handled by this field, and should be handled by the <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> itself (particularly for Left and Right buttons). The default implementation returns -1 for all events.</p> <p>Returns -1 if the <em>event</em> is not handled by this field, and should be handled by the <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> itself (particularly for Left and Right buttons). The default implementation returns -1 for all events.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee" title="Dispatches event to the currently active field using Field::dispatch().">Form::dispatch()</a>, <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee" title="Dispatches event to the currently active field using Field::dispatch().">Form::dispatch()</a>, <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3">Field</a>.</p> <p>Reimplemented from <a class="el" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3">Field</a>.</p>
@@ -235,26 +297,33 @@ Public Member Functions</h2></td></tr>
</div> </div>
</div> </div>
<a class="anchor" id="ab3f1e610b52caed7e41016f6ae3d7d09"></a><!-- doxytag: member="BoolField::enterField" ref="ab3f1e610b52caed7e41016f6ae3d7d09" args="(bool reverse)" --> <a class="anchor" id="ab3f1e610b52caed7e41016f6ae3d7d09"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void BoolField::enterField </td> <td class="memname">void BoolField::enterField </td>
<td>(</td> <td>(</td>
<td class="paramtype">bool&#160;</td> <td class="paramtype">bool&#160;</td>
<td class="paramname"><em>reverse</em></td><td>)</td> <td class="paramname"><em>reverse</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Enters the field due to form navigation. </p> <p>Enters the field due to form navigation. </p>
<p>This function is typically called when the user presses Left and Right buttons to navigate to the field. If <em>reverse</em> is true, then navigation was due to the Left button being pressed.</p> <p>This function is typically called when the user presses Left and Right buttons to navigate to the field. If <em>reverse</em> is true, then navigation was due to the Left button being pressed.</p>
<p>This function can assume that the display has been cleared and the cursor is positioned at (0, 0).</p> <p>This function can assume that the display has been cleared and the cursor is positioned at (0, 0).</p>
<p>The default implementation prints the <a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label()</a>.</p> <p>The default implementation prints the <a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07" title="Exits the field due to form navigation.">exitField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07" title="Exits the field due to form navigation.">exitField()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">Field</a>.</p> <p>Reimplemented from <a class="el" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">Field</a>.</p>
@@ -262,28 +331,35 @@ Public Member Functions</h2></td></tr>
</div> </div>
</div> </div>
<a class="anchor" id="a59ad7a8a33290bda0d9fbb3df4f09b01"></a><!-- doxytag: member="BoolField::falseLabel" ref="a59ad7a8a33290bda0d9fbb3df4f09b01" args="() const " --> <a class="anchor" id="a59ad7a8a33290bda0d9fbb3df4f09b01"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">const String &amp; BoolField::falseLabel </td> <td class="memname">const String &amp; BoolField::falseLabel </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is false. </p> <p>Returns the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is false. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a" title="Sets the string that is displayed when value() is false to falseLabel.">setFalseLabel()</a>, <a class="el" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d" title="Returns the string that is displayed when value() is true.">trueLabel()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a" title="Sets the string that is displayed when value() is false to falseLabel.">setFalseLabel()</a>, <a class="el" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d" title="Returns the string that is displayed when value() is true.">trueLabel()</a> </dd></dl>
<p>Definition at line <a class="el" href="BoolField_8h_source.html#l00043">43</a> of file <a class="el" href="BoolField_8h_source.html">BoolField.h</a>.</p> <p>Definition at line <a class="el" href="BoolField_8h_source.html#l00043">43</a> of file <a class="el" href="BoolField_8h_source.html">BoolField.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="ae6a29d27139fd78f2ca96152059fb30a"></a><!-- doxytag: member="BoolField::setFalseLabel" ref="ae6a29d27139fd78f2ca96152059fb30a" args="(const String &amp;falseLabel)" --> <a class="anchor" id="ae6a29d27139fd78f2ca96152059fb30a"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -295,17 +371,16 @@ Public Member Functions</h2></td></tr>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Sets the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is false to <em>falseLabel</em>. </p> <p>Sets the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is false to <em>falseLabel</em>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01" title="Returns the string that is displayed when value() is false.">falseLabel()</a>, <a class="el" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194" title="Sets the string that is displayed when value() is true to trueLabel.">setTrueLabel()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01" title="Returns the string that is displayed when value() is false.">falseLabel()</a>, <a class="el" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194" title="Sets the string that is displayed when value() is true to trueLabel.">setTrueLabel()</a> </dd></dl>
<p>Definition at line <a class="el" href="BoolField_8cpp_source.html#l00173">173</a> of file <a class="el" href="BoolField_8cpp_source.html">BoolField.cpp</a>.</p> <p>Definition at line <a class="el" href="BoolField_8cpp_source.html#l00173">173</a> of file <a class="el" href="BoolField_8cpp_source.html">BoolField.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a803fc8c39765da4a44af01d925cd4194"></a><!-- doxytag: member="BoolField::setTrueLabel" ref="a803fc8c39765da4a44af01d925cd4194" args="(const String &amp;trueLabel)" --> <a class="anchor" id="a803fc8c39765da4a44af01d925cd4194"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -317,17 +392,16 @@ Public Member Functions</h2></td></tr>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Sets the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is true to <em>trueLabel</em>. </p> <p>Sets the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is true to <em>trueLabel</em>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d" title="Returns the string that is displayed when value() is true.">trueLabel()</a>, <a class="el" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a" title="Sets the string that is displayed when value() is false to falseLabel.">setFalseLabel()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d" title="Returns the string that is displayed when value() is true.">trueLabel()</a>, <a class="el" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a" title="Sets the string that is displayed when value() is false to falseLabel.">setFalseLabel()</a> </dd></dl>
<p>Definition at line <a class="el" href="BoolField_8cpp_source.html#l00153">153</a> of file <a class="el" href="BoolField_8cpp_source.html">BoolField.cpp</a>.</p> <p>Definition at line <a class="el" href="BoolField_8cpp_source.html#l00153">153</a> of file <a class="el" href="BoolField_8cpp_source.html">BoolField.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a080c575fd4a98e6afc4b9197fbab5577"></a><!-- doxytag: member="BoolField::setValue" ref="a080c575fd4a98e6afc4b9197fbab5577" args="(bool value)" --> <a class="anchor" id="a080c575fd4a98e6afc4b9197fbab5577"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -339,53 +413,66 @@ Public Member Functions</h2></td></tr>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Sets the current value of this field to <em>value</em>. </p> <p>Sets the current value of this field to <em>value</em>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> </dd></dl>
<p>Definition at line <a class="el" href="BoolField_8cpp_source.html#l00131">131</a> of file <a class="el" href="BoolField_8cpp_source.html">BoolField.cpp</a>.</p> <p>Definition at line <a class="el" href="BoolField_8cpp_source.html#l00131">131</a> of file <a class="el" href="BoolField_8cpp_source.html">BoolField.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a9972030beec6e007b556c6eb652e163d"></a><!-- doxytag: member="BoolField::trueLabel" ref="a9972030beec6e007b556c6eb652e163d" args="() const " --> <a class="anchor" id="a9972030beec6e007b556c6eb652e163d"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">const String &amp; BoolField::trueLabel </td> <td class="memname">const String &amp; BoolField::trueLabel </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is true. </p> <p>Returns the string that is displayed when <a class="el" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39" title="Returns the current value of this field, true or false.">value()</a> is true. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194" title="Sets the string that is displayed when value() is true to trueLabel.">setTrueLabel()</a>, <a class="el" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01" title="Returns the string that is displayed when value() is false.">falseLabel()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194" title="Sets the string that is displayed when value() is true to trueLabel.">setTrueLabel()</a>, <a class="el" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01" title="Returns the string that is displayed when value() is false.">falseLabel()</a> </dd></dl>
<p>Definition at line <a class="el" href="BoolField_8h_source.html#l00040">40</a> of file <a class="el" href="BoolField_8h_source.html">BoolField.h</a>.</p> <p>Definition at line <a class="el" href="BoolField_8h_source.html#l00040">40</a> of file <a class="el" href="BoolField_8h_source.html">BoolField.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a9147826437fbaf9b29eda9dee9e37b39"></a><!-- doxytag: member="BoolField::value" ref="a9147826437fbaf9b29eda9dee9e37b39" args="() const " --> <a class="anchor" id="a9147826437fbaf9b29eda9dee9e37b39"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">bool BoolField::value </td> <td class="memname">bool BoolField::value </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the current value of this field, true or false. </p> <p>Returns the current value of this field, true or false. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577" title="Sets the current value of this field to value.">setValue()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577" title="Sets the current value of this field to value.">setValue()</a> </dd></dl>
<p>Definition at line <a class="el" href="BoolField_8h_source.html#l00037">37</a> of file <a class="el" href="BoolField_8h_source.html">BoolField.h</a>.</p> <p>Definition at line <a class="el" href="BoolField_8h_source.html#l00037">37</a> of file <a class="el" href="BoolField_8h_source.html">BoolField.h</a>.</p>
@@ -395,23 +482,12 @@ Public Member Functions</h2></td></tr>
<li><a class="el" href="BoolField_8h_source.html">BoolField.h</a></li> <li><a class="el" href="BoolField_8h_source.html">BoolField.h</a></li>
<li><a class="el" href="BoolField_8cpp_source.html">BoolField.cpp</a></li> <li><a class="el" href="BoolField_8cpp_source.html">BoolField.cpp</a></li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 B

After

Width:  |  Height:  |  Size: 331 B

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,31 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Charlieplex Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classCharlieplex.html">Charlieplex</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd">Charlieplex</a>(const uint8_t *pins, uint8_t numPins)</td><td><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e">count</a>() const </td><td><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30">holdTime</a>() const </td><td><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d">led</a>(int index) const </td><td><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a">loop</a>()</td><td><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6">pwmLed</a>(int index) const </td><td><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b">refresh</a>()</td><td><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classCharlieplex.html#a8502f4c752faba37023ced587695f6a4">setHoldTime</a>(unsigned long us)</td><td><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5">setLed</a>(int index, bool value)</td><td><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b">setPwmLed</a>(int index, uint8_t value)</td><td><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103">~Charlieplex</a>()</td><td><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -91,8 +80,32 @@ This is the complete list of members for <a class="el" href="classCharlieplex.ht
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">Charlieplex Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classCharlieplex.html">Charlieplex</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd">Charlieplex</a>(const uint8_t *pins, uint8_t numPins)</td><td class="entry"><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e">count</a>() const </td><td class="entry"><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30">holdTime</a>() const </td><td class="entry"><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d">led</a>(int index) const </td><td class="entry"><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a">loop</a>()</td><td class="entry"><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6">pwmLed</a>(int index) const </td><td class="entry"><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b">refresh</a>()</td><td class="entry"><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classCharlieplex.html#a8502f4c752faba37023ced587695f6a4">setHoldTime</a>(unsigned long us)</td><td class="entry"><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5">setLed</a>(int index, bool value)</td><td class="entry"><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b">setPwmLed</a>(int index, uint8_t value)</td><td class="entry"><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103">~Charlieplex</a>()</td><td class="entry"><a class="el" href="classCharlieplex.html">Charlieplex</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Charlieplex Class Reference</title> <title>ArduinoLibs: Charlieplex Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,49 +66,62 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div> <a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classCharlieplex-members.html">List of all members</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">Charlieplex Class Reference</div> </div> <div class="title">Charlieplex Class Reference</div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<!-- doxytag: class="Charlieplex" -->
<p>Manage an array of LED's in a charlieplexed arrangement. <p>Manage an array of LED's in a charlieplexed arrangement.
<a href="classCharlieplex.html#details">More...</a></p> <a href="classCharlieplex.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>&gt;</code></p> <p><code>#include &lt;<a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>&gt;</code></p>
<p><a href="classCharlieplex-members.html">List of all members.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr> Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd">Charlieplex</a> (const uint8_t *pins, uint8_t numPins)</td></tr> <tr class="memitem:abfb0d0456bcbadbf60c21f615adacdbd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd">Charlieplex</a> (const uint8_t *pins, uint8_t numPins)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new charliexplexing array where the output pins are specified by the <em>numPins</em> entries in <em>pins</em>. <a href="#abfb0d0456bcbadbf60c21f615adacdbd"></a><br/></td></tr> <tr class="memdesc:abfb0d0456bcbadbf60c21f615adacdbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new charliexplexing array where the output pins are specified by the <em>numPins</em> entries in <em>pins</em>. <a href="#abfb0d0456bcbadbf60c21f615adacdbd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4dbe37ccba8ba18139f4e710afdcd103"></a><!-- doxytag: member="Charlieplex::~Charlieplex" ref="a4dbe37ccba8ba18139f4e710afdcd103" args="()" --> <tr class="memitem:a4dbe37ccba8ba18139f4e710afdcd103"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4dbe37ccba8ba18139f4e710afdcd103"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103">~Charlieplex</a> ()</td></tr> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103">~Charlieplex</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys this charlieplexed array. <br/></td></tr> <tr class="memdesc:a4dbe37ccba8ba18139f4e710afdcd103"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys this charlieplexed array. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e">count</a> () const </td></tr> <tr class="memitem:a5008aa4143d381ce34a3aed1a3843e4e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e">count</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of LED's in this charlieplexed array based on the number of pins. <a href="#a5008aa4143d381ce34a3aed1a3843e4e"></a><br/></td></tr> <tr class="memdesc:a5008aa4143d381ce34a3aed1a3843e4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of LED's in this charlieplexed array based on the number of pins. <a href="#a5008aa4143d381ce34a3aed1a3843e4e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d">led</a> (int index) const </td></tr> <tr class="memitem:a90fd09f24b62424b0b7b8bcdb0140b9d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d">led</a> (int index) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the value of the LED at <em>index</em> in the charplexed array; true if lit; false if not lit. <a href="#a90fd09f24b62424b0b7b8bcdb0140b9d"></a><br/></td></tr> <tr class="memdesc:a90fd09f24b62424b0b7b8bcdb0140b9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the value of the LED at <em>index</em> in the charplexed array; true if lit; false if not lit. <a href="#a90fd09f24b62424b0b7b8bcdb0140b9d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5">setLed</a> (int index, bool value)</td></tr> <tr class="memitem:ab103c9687a0890faf72e4da79e3de0a5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5">setLed</a> (int index, bool value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <em>value</em> of the LED at <em>index</em> in the charliplexed array. <a href="#ab103c9687a0890faf72e4da79e3de0a5"></a><br/></td></tr> <tr class="memdesc:ab103c9687a0890faf72e4da79e3de0a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <em>value</em> of the LED at <em>index</em> in the charliplexed array. <a href="#ab103c9687a0890faf72e4da79e3de0a5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6">pwmLed</a> (int index) const </td></tr> <tr class="memitem:a89312f2fd1d27c4e56346ed9cccfb9f6"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6">pwmLed</a> (int index) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the PWM value of the LED at <em>index</em> in the charplexed array; between 0 and 255. <a href="#a89312f2fd1d27c4e56346ed9cccfb9f6"></a><br/></td></tr> <tr class="memdesc:a89312f2fd1d27c4e56346ed9cccfb9f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the PWM value of the LED at <em>index</em> in the charplexed array; between 0 and 255. <a href="#a89312f2fd1d27c4e56346ed9cccfb9f6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b">setPwmLed</a> (int index, uint8_t value)</td></tr> <tr class="memitem:a605a302e13005a1aa3d68d0e22bc474b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b">setPwmLed</a> (int index, uint8_t value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the PWM <em>value</em> of the LED at <em>index</em> in the charliplexed array; between 0 and 255. <a href="#a605a302e13005a1aa3d68d0e22bc474b"></a><br/></td></tr> <tr class="memdesc:a605a302e13005a1aa3d68d0e22bc474b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the PWM <em>value</em> of the LED at <em>index</em> in the charliplexed array; between 0 and 255. <a href="#a605a302e13005a1aa3d68d0e22bc474b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30">holdTime</a> () const </td></tr> <tr class="memitem:abb429659a7b1ee4c7306ea659050cb30"><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30">holdTime</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of microseconds that each LED should be held on for before moving onto the next in <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a>. <a href="#abb429659a7b1ee4c7306ea659050cb30"></a><br/></td></tr> <tr class="memdesc:abb429659a7b1ee4c7306ea659050cb30"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of microseconds that each LED should be held on for before moving onto the next in <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a>. <a href="#abb429659a7b1ee4c7306ea659050cb30"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a8502f4c752faba37023ced587695f6a4">setHoldTime</a> (unsigned long us)</td></tr> <tr class="memitem:a8502f4c752faba37023ced587695f6a4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a8502f4c752faba37023ced587695f6a4">setHoldTime</a> (unsigned long us)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the number of microseconds that each LED should be held on for before moving onto the next in <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a> to <em>us</em>. <a href="#a8502f4c752faba37023ced587695f6a4"></a><br/></td></tr> <tr class="memdesc:a8502f4c752faba37023ced587695f6a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the number of microseconds that each LED should be held on for before moving onto the next in <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a> to <em>us</em>. <a href="#a8502f4c752faba37023ced587695f6a4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a">loop</a> ()</td></tr> <tr class="memitem:a8313edeacd8387c428b8299d52584d6a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a">loop</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Runs the multiplexing loop, to display the LED states on the charlieplexed array. <a href="#a8313edeacd8387c428b8299d52584d6a"></a><br/></td></tr> <tr class="memdesc:a8313edeacd8387c428b8299d52584d6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Runs the multiplexing loop, to display the LED states on the charlieplexed array. <a href="#a8313edeacd8387c428b8299d52584d6a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b">refresh</a> ()</td></tr> <tr class="memitem:a3c961bfff866e400dad371f0376f096b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b">refresh</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Refreshes the charlieplexed array by advancing to the next LED that needs to be lit. <a href="#a3c961bfff866e400dad371f0376f096b"></a><br/></td></tr> <tr class="memdesc:a3c961bfff866e400dad371f0376f096b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Refreshes the charlieplexed array by advancing to the next LED that needs to be lit. <a href="#a3c961bfff866e400dad371f0376f096b"></a><br/></td></tr>
</table> </table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Manage an array of LED's in a charlieplexed arrangement. </p> <div class="textblock"><p>Manage an array of LED's in a charlieplexed arrangement. </p>
<p><a href="http://en.wikipedia.org/wiki/Charlieplexing">Charlieplexing</a> is a technique for multiplexing large numbers of LED's on a small number of microcontroller output pins. LED's are arranged in complementary pairs; the simplest being for two output pins:</p> <p><a href="http://en.wikipedia.org/wiki/Charlieplexing">Charlieplexing</a> is a technique for multiplexing large numbers of LED's on a small number of microcontroller output pins. LED's are arranged in complementary pairs; the simplest being for two output pins:</p>
<div class="image"> <div class="image">
@@ -112,21 +133,21 @@ Public Member Functions</h2></td></tr>
</div> </div>
<p>In this case, LED5 is lit when Pin1 is 1, Pin3 is 0, and Pin2 is set to a high-impedance input to "disconnect" it.</p> <p>In this case, LED5 is lit when Pin1 is 1, Pin3 is 0, and Pin2 is set to a high-impedance input to "disconnect" it.</p>
<p><a class="el" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> presents a simple array of <a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d" title="Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...">led()</a> values that indicate whether each LED is on, off, or in an intermediate PWM state (if <a class="el" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b" title="Sets the PWM value of the LED at index in the charliplexed array; between 0 and 255.">setPwmLed()</a> is used). The application must call <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a> or <a class="el" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b" title="Refreshes the charlieplexed array by advancing to the next LED that needs to be lit.">refresh()</a> on a regular basis to ensure that the multiplexed display is kept up to date. The following example drives 6 LED's connected to the output pins D9, D10, and D11:</p> <p><a class="el" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> presents a simple array of <a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d" title="Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...">led()</a> values that indicate whether each LED is on, off, or in an intermediate PWM state (if <a class="el" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b" title="Sets the PWM value of the LED at index in the charliplexed array; between 0 and 255.">setPwmLed()</a> is used). The application must call <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a> or <a class="el" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b" title="Refreshes the charlieplexed array by advancing to the next LED that needs to be lit.">refresh()</a> on a regular basis to ensure that the multiplexed display is kept up to date. The following example drives 6 LED's connected to the output pins D9, D10, and D11:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor">#include &lt;Charlieplex.h&gt;</span> <div class="fragment"><div class="line"><span class="preprocessor">#include &lt;Charlieplex.h&gt;</span></div>
<div class="line"></div>
byte pins[3] = {9, 10, 11}; <div class="line">byte pins[3] = {9, 10, 11};</div>
<a class="code" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> charlie(pins, <span class="keyword">sizeof</span>(pins)); <div class="line"><a class="code" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> charlie(pins, <span class="keyword">sizeof</span>(pins));</div>
<div class="line"></div>
<span class="keywordtype">void</span> setup() { <div class="line"><span class="keywordtype">void</span> setup() {</div>
charlie.setLed(0, <span class="keyword">true</span>); <span class="comment">// Turn on LED1</span> <div class="line"> charlie.setLed(0, <span class="keyword">true</span>); <span class="comment">// Turn on LED1</span></div>
charlie.setLed(3, <span class="keyword">true</span>); <span class="comment">// Turn on LED4</span> <div class="line"> charlie.setLed(3, <span class="keyword">true</span>); <span class="comment">// Turn on LED4</span></div>
charlie.setPwmLed(5, 64); <span class="comment">// Set LED6 to one-quarter on</span> <div class="line"> charlie.setPwmLed(5, 64); <span class="comment">// Set LED6 to one-quarter on</span></div>
} <div class="line">}</div>
<div class="line"></div>
<span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop</a>() { <div class="line"><span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop</a>() {</div>
charlie.loop(); <div class="line"> charlie.loop();</div>
} <div class="line">}</div>
</pre></div></p> </div><!-- fragment --></p>
<p>The following diagram extends the circuit for 4 output pins and 12 LED's:</p> <p>The following diagram extends the circuit for 4 output pins and 12 LED's:</p>
<div class="image"> <div class="image">
<img src="charlieplex4pin.png" alt="charlieplex4pin.png"/> <img src="charlieplex4pin.png" alt="charlieplex4pin.png"/>
@@ -136,13 +157,13 @@ byte pins[3] = {9, 10, 11};
<img src="charlieplex5pin.png" alt="charlieplex5pin.png"/> <img src="charlieplex5pin.png" alt="charlieplex5pin.png"/>
</div> </div>
<p>Circuits for higher numbers of LED's get increasingly complex. For those cases it can be easier to use traditional multiplexing matrix arrangements and shift registers. The <a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> class does this for a specific kind of large dot matrix display. Otherwise, use the following pseudocode to determine how to connect the LED's for higher numbers of pins:</p> <p>Circuits for higher numbers of LED's get increasingly complex. For those cases it can be easier to use traditional multiplexing matrix arrangements and shift registers. The <a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> class does this for a specific kind of large dot matrix display. Otherwise, use the following pseudocode to determine how to connect the LED's for higher numbers of pins:</p>
<div class="fragment"><pre class="fragment"> n = 1 <div class="fragment"><div class="line">n = 1</div>
<span class="keywordflow">for</span> Pass = 1 to NumPins-1: <div class="line"><span class="keywordflow">for</span> Pass = 1 to NumPins-1:</div>
<span class="keywordflow">for</span> Pin = 1 to NumPins-Pass: <div class="line"> <span class="keywordflow">for</span> Pin = 1 to NumPins-Pass:</div>
LED[n] is connected between Pin (anode) and Pin+Pass (cathode) <div class="line"> LED[n] is connected between Pin (anode) and Pin+Pass (cathode)</div>
LED[n+1] is connected between Pin+Pass (anode) and Pin (cathode) <div class="line"> LED[n+1] is connected between Pin+Pass (anode) and Pin (cathode)</div>
n = n + 2 <div class="line"> n = n + 2</div>
</pre></div><p>Note: while the above circuit diagrams and psuedocode use 1-based numbering for LED's, <a class="el" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> uses 0-based numbering in the <a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d" title="Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...">led()</a>, <a class="el" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5" title="Sets the value of the LED at index in the charliplexed array.">setLed()</a>, <a class="el" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6" title="Returns the PWM value of the LED at index in the charplexed array; between 0 and 255.">pwmLed()</a>, and <a class="el" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b" title="Sets the PWM value of the LED at index in the charliplexed array; between 0 and 255.">setPwmLed()</a> functions.</p> </div><!-- fragment --><p>Note: while the above circuit diagrams and psuedocode use 1-based numbering for LED's, <a class="el" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> uses 0-based numbering in the <a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d" title="Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...">led()</a>, <a class="el" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5" title="Sets the value of the LED at index in the charliplexed array.">setLed()</a>, <a class="el" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6" title="Returns the PWM value of the LED at index in the charplexed array; between 0 and 255.">pwmLed()</a>, and <a class="el" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b" title="Sets the PWM value of the LED at index in the charliplexed array; between 0 and 255.">setPwmLed()</a> functions.</p>
<p>It isn't necessary to wire up all LED's. If you only need 10 LED's, then use the 4-output circuit and omit LED11 and LED12. <a class="el" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> only drives LED's that are lit; LED's that are unlit or unused will be skipped during the refresh scan. The maximum number of LED's that that can be driven by a specific number of pins is given by the following table:</p> <p>It isn't necessary to wire up all LED's. If you only need 10 LED's, then use the 4-output circuit and omit LED11 and LED12. <a class="el" href="classCharlieplex.html" title="Manage an array of LED&#39;s in a charlieplexed arrangement.">Charlieplex</a> only drives LED's that are lit; LED's that are unlit or unused will be skipped during the refresh scan. The maximum number of LED's that that can be driven by a specific number of pins is given by the following table:</p>
<table class="doxtable"> <table class="doxtable">
<tr> <tr>
@@ -170,8 +191,8 @@ byte pins[3] = {9, 10, 11};
</table> </table>
<p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00028">28</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p> <p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00028">28</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2> </div><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="abfb0d0456bcbadbf60c21f615adacdbd"></a><!-- doxytag: member="Charlieplex::Charlieplex" ref="abfb0d0456bcbadbf60c21f615adacdbd" args="(const uint8_t *pins, uint8_t numPins)" --> <a class="anchor" id="abfb0d0456bcbadbf60c21f615adacdbd"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -193,31 +214,37 @@ byte pins[3] = {9, 10, 11};
<td></td><td></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Constructs a new charliexplexing array where the output pins are specified by the <em>numPins</em> entries in <em>pins</em>. </p> <p>Constructs a new charliexplexing array where the output pins are specified by the <em>numPins</em> entries in <em>pins</em>. </p>
<p>Note: <em>numPins</em> must be 2 or greater for correct operation.</p> <p>Note: <em>numPins</em> must be 2 or greater for correct operation.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e" title="Returns the number of LED&#39;s in this charlieplexed array based on the number of pins.">count()</a>, <a class="el" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5" title="Sets the value of the LED at index in the charliplexed array.">setLed()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e" title="Returns the number of LED&#39;s in this charlieplexed array based on the number of pins.">count()</a>, <a class="el" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5" title="Sets the value of the LED at index in the charliplexed array.">setLed()</a> </dd></dl>
<p>Definition at line <a class="el" href="Charlieplex_8cpp_source.html#l00121">121</a> of file <a class="el" href="Charlieplex_8cpp_source.html">Charlieplex.cpp</a>.</p> <p>Definition at line <a class="el" href="Charlieplex_8cpp_source.html#l00121">121</a> of file <a class="el" href="Charlieplex_8cpp_source.html">Charlieplex.cpp</a>.</p>
</div> </div>
</div> </div>
<hr/><h2>Member Function Documentation</h2> <h2>Member Function Documentation</h2>
<a class="anchor" id="a5008aa4143d381ce34a3aed1a3843e4e"></a><!-- doxytag: member="Charlieplex::count" ref="a5008aa4143d381ce34a3aed1a3843e4e" args="() const " --> <a class="anchor" id="a5008aa4143d381ce34a3aed1a3843e4e"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">int Charlieplex::count </td> <td class="memname">int Charlieplex::count </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of LED's in this charlieplexed array based on the number of pins. </p> <p>Returns the number of LED's in this charlieplexed array based on the number of pins. </p>
<table class="doxtable"> <table class="doxtable">
@@ -244,58 +271,72 @@ byte pins[3] = {9, 10, 11};
<tr> <tr>
<td>n</td><td>n * (n - 1) </td></tr> <td>n</td><td>n * (n - 1) </td></tr>
</table> </table>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d" title="Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...">led()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d" title="Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...">led()</a> </dd></dl>
<p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00034">34</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p> <p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00034">34</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="abb429659a7b1ee4c7306ea659050cb30"></a><!-- doxytag: member="Charlieplex::holdTime" ref="abb429659a7b1ee4c7306ea659050cb30" args="() const " --> <a class="anchor" id="abb429659a7b1ee4c7306ea659050cb30"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">unsigned long Charlieplex::holdTime </td> <td class="memname">unsigned long Charlieplex::holdTime </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of microseconds that each LED should be held on for before moving onto the next in <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a>. </p> <p>Returns the number of microseconds that each LED should be held on for before moving onto the next in <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a>. </p>
<p>The default value is calculated so that all LED's can be refreshed with a rate of at least 200 Hz, which is necessary for handling PWM output on multiple LED's. The less LED's that are lit at once, the faster the display will refresh.</p> <p>The default value is calculated so that all LED's can be refreshed with a rate of at least 200 Hz, which is necessary for handling PWM output on multiple LED's. The less LED's that are lit at once, the faster the display will refresh.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCharlieplex.html#a8502f4c752faba37023ced587695f6a4" title="Sets the number of microseconds that each LED should be held on for before moving onto the next in lo...">setHoldTime()</a>, <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classCharlieplex.html#a8502f4c752faba37023ced587695f6a4" title="Sets the number of microseconds that each LED should be held on for before moving onto the next in lo...">setHoldTime()</a>, <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a> </dd></dl>
<p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00042">42</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p> <p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00042">42</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a90fd09f24b62424b0b7b8bcdb0140b9d"></a><!-- doxytag: member="Charlieplex::led" ref="a90fd09f24b62424b0b7b8bcdb0140b9d" args="(int index) const " --> <a class="anchor" id="a90fd09f24b62424b0b7b8bcdb0140b9d"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">bool Charlieplex::led </td> <td class="memname">bool Charlieplex::led </td>
<td>(</td> <td>(</td>
<td class="paramtype">int&#160;</td> <td class="paramtype">int&#160;</td>
<td class="paramname"><em>index</em></td><td>)</td> <td class="paramname"><em>index</em></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the value of the LED at <em>index</em> in the charplexed array; true if lit; false if not lit. </p> <p>Returns the value of the LED at <em>index</em> in the charplexed array; true if lit; false if not lit. </p>
<p>If the LED is displaying a PWM value, then this function will return true for any non-zero PWM value.</p> <p>If the LED is displaying a PWM value, then this function will return true for any non-zero PWM value.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5" title="Sets the value of the LED at index in the charliplexed array.">setLed()</a>, <a class="el" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6" title="Returns the PWM value of the LED at index in the charplexed array; between 0 and 255.">pwmLed()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5" title="Sets the value of the LED at index in the charliplexed array.">setLed()</a>, <a class="el" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6" title="Returns the PWM value of the LED at index in the charplexed array; between 0 and 255.">pwmLed()</a> </dd></dl>
<p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00036">36</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p> <p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00036">36</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a8313edeacd8387c428b8299d52584d6a"></a><!-- doxytag: member="Charlieplex::loop" ref="a8313edeacd8387c428b8299d52584d6a" args="()" --> <a class="anchor" id="a8313edeacd8387c428b8299d52584d6a"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -306,42 +347,48 @@ byte pins[3] = {9, 10, 11};
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Runs the multiplexing loop, to display the LED states on the charlieplexed array. </p> <p>Runs the multiplexing loop, to display the LED states on the charlieplexed array. </p>
<p>If <a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30" title="Returns the number of microseconds that each LED should be held on for before moving onto the next in...">holdTime()</a> microseconds have elapsed since the last call to <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a>, then the current LED is turned off and the next LED that needs to be lit is turned on.</p> <p>If <a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30" title="Returns the number of microseconds that each LED should be held on for before moving onto the next in...">holdTime()</a> microseconds have elapsed since the last call to <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a>, then the current LED is turned off and the next LED that needs to be lit is turned on.</p>
<p>LED's that do not need to be lit are skipped. The total time for a single pass through all lit LED's may be very short if only a few LED's are lit at once. If all LED's are lit, then the total time for a single pass will be <a class="el" href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e" title="Returns the number of LED&#39;s in this charlieplexed array based on the number of pins.">count()</a> * <a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30" title="Returns the number of microseconds that each LED should be held on for before moving onto the next in...">holdTime()</a> microseconds.</p> <p>LED's that do not need to be lit are skipped. The total time for a single pass through all lit LED's may be very short if only a few LED's are lit at once. If all LED's are lit, then the total time for a single pass will be <a class="el" href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e" title="Returns the number of LED&#39;s in this charlieplexed array based on the number of pins.">count()</a> * <a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30" title="Returns the number of microseconds that each LED should be held on for before moving onto the next in...">holdTime()</a> microseconds.</p>
<p>If the application is using timer interrupts to drive the multiplexing process, then use <a class="el" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b" title="Refreshes the charlieplexed array by advancing to the next LED that needs to be lit.">refresh()</a> instead of <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a>.</p> <p>If the application is using timer interrupts to drive the multiplexing process, then use <a class="el" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b" title="Refreshes the charlieplexed array by advancing to the next LED that needs to be lit.">refresh()</a> instead of <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d" title="Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...">led()</a>, <a class="el" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6" title="Returns the PWM value of the LED at index in the charplexed array; between 0 and 255.">pwmLed()</a>, <a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30" title="Returns the number of microseconds that each LED should be held on for before moving onto the next in...">holdTime()</a>, <a class="el" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b" title="Refreshes the charlieplexed array by advancing to the next LED that needs to be lit.">refresh()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d" title="Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...">led()</a>, <a class="el" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6" title="Returns the PWM value of the LED at index in the charplexed array; between 0 and 255.">pwmLed()</a>, <a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30" title="Returns the number of microseconds that each LED should be held on for before moving onto the next in...">holdTime()</a>, <a class="el" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b" title="Refreshes the charlieplexed array by advancing to the next LED that needs to be lit.">refresh()</a> </dd></dl>
<p>Definition at line <a class="el" href="Charlieplex_8cpp_source.html#l00277">277</a> of file <a class="el" href="Charlieplex_8cpp_source.html">Charlieplex.cpp</a>.</p> <p>Definition at line <a class="el" href="Charlieplex_8cpp_source.html#l00277">277</a> of file <a class="el" href="Charlieplex_8cpp_source.html">Charlieplex.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a89312f2fd1d27c4e56346ed9cccfb9f6"></a><!-- doxytag: member="Charlieplex::pwmLed" ref="a89312f2fd1d27c4e56346ed9cccfb9f6" args="(int index) const " --> <a class="anchor" id="a89312f2fd1d27c4e56346ed9cccfb9f6"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">uint8_t Charlieplex::pwmLed </td> <td class="memname">uint8_t Charlieplex::pwmLed </td>
<td>(</td> <td>(</td>
<td class="paramtype">int&#160;</td> <td class="paramtype">int&#160;</td>
<td class="paramname"><em>index</em></td><td>)</td> <td class="paramname"><em>index</em></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the PWM value of the LED at <em>index</em> in the charplexed array; between 0 and 255. </p> <p>Returns the PWM value of the LED at <em>index</em> in the charplexed array; between 0 and 255. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b" title="Sets the PWM value of the LED at index in the charliplexed array; between 0 and 255.">setPwmLed()</a>, <a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d" title="Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...">led()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b" title="Sets the PWM value of the LED at index in the charliplexed array; between 0 and 255.">setPwmLed()</a>, <a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d" title="Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...">led()</a> </dd></dl>
<p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00039">39</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p> <p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00039">39</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a3c961bfff866e400dad371f0376f096b"></a><!-- doxytag: member="Charlieplex::refresh" ref="a3c961bfff866e400dad371f0376f096b" args="()" --> <a class="anchor" id="a3c961bfff866e400dad371f0376f096b"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -352,42 +399,51 @@ byte pins[3] = {9, 10, 11};
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Refreshes the charlieplexed array by advancing to the next LED that needs to be lit. </p> <p>Refreshes the charlieplexed array by advancing to the next LED that needs to be lit. </p>
<p>This function is intended to be called from a timer interrupt service routine to advance the multiplexing state without the main application having to explicitly call <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a>.</p> <p>This function is intended to be called from a timer interrupt service routine to advance the multiplexing state without the main application having to explicitly call <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a> </dd></dl>
<p>Definition at line <a class="el" href="Charlieplex_8cpp_source.html#l00296">296</a> of file <a class="el" href="Charlieplex_8cpp_source.html">Charlieplex.cpp</a>.</p> <p>Definition at line <a class="el" href="Charlieplex_8cpp_source.html#l00296">296</a> of file <a class="el" href="Charlieplex_8cpp_source.html">Charlieplex.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a8502f4c752faba37023ced587695f6a4"></a><!-- doxytag: member="Charlieplex::setHoldTime" ref="a8502f4c752faba37023ced587695f6a4" args="(unsigned long us)" --> <a class="anchor" id="a8502f4c752faba37023ced587695f6a4"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void Charlieplex::setHoldTime </td> <td class="memname">void Charlieplex::setHoldTime </td>
<td>(</td> <td>(</td>
<td class="paramtype">unsigned long&#160;</td> <td class="paramtype">unsigned long&#160;</td>
<td class="paramname"><em>us</em></td><td>)</td> <td class="paramname"><em>us</em></td><td>)</td>
<td><code> [inline]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the number of microseconds that each LED should be held on for before moving onto the next in <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a> to <em>us</em>. </p> <p>Sets the number of microseconds that each LED should be held on for before moving onto the next in <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a> to <em>us</em>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30" title="Returns the number of microseconds that each LED should be held on for before moving onto the next in...">holdTime()</a>, <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30" title="Returns the number of microseconds that each LED should be held on for before moving onto the next in...">holdTime()</a>, <a class="el" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a" title="Runs the multiplexing loop, to display the LED states on the charlieplexed array.">loop()</a> </dd></dl>
<p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00043">43</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p> <p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00043">43</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="ab103c9687a0890faf72e4da79e3de0a5"></a><!-- doxytag: member="Charlieplex::setLed" ref="ab103c9687a0890faf72e4da79e3de0a5" args="(int index, bool value)" --> <a class="anchor" id="ab103c9687a0890faf72e4da79e3de0a5"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void Charlieplex::setLed </td> <td class="memname">void Charlieplex::setLed </td>
@@ -404,23 +460,30 @@ byte pins[3] = {9, 10, 11};
<tr> <tr>
<td></td> <td></td>
<td>)</td> <td>)</td>
<td></td><td><code> [inline]</code></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the <em>value</em> of the LED at <em>index</em> in the charliplexed array. </p> <p>Sets the <em>value</em> of the LED at <em>index</em> in the charliplexed array. </p>
<p>The brightness of the LED will be proportional to the number of LED's that are currently lit, as the <a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30" title="Returns the number of microseconds that each LED should be held on for before moving onto the next in...">holdTime()</a> refresh rate will cause the LED to appear to dim; the more LED's that are lit the less overall time each individual LED is held on. For best results, only a single LED should be lit at once or higher-brightness LED's should be used.</p> <p>The brightness of the LED will be proportional to the number of LED's that are currently lit, as the <a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30" title="Returns the number of microseconds that each LED should be held on for before moving onto the next in...">holdTime()</a> refresh rate will cause the LED to appear to dim; the more LED's that are lit the less overall time each individual LED is held on. For best results, only a single LED should be lit at once or higher-brightness LED's should be used.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d" title="Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...">led()</a>, <a class="el" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b" title="Sets the PWM value of the LED at index in the charliplexed array; between 0 and 255.">setPwmLed()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d" title="Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...">led()</a>, <a class="el" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b" title="Sets the PWM value of the LED at index in the charliplexed array; between 0 and 255.">setPwmLed()</a> </dd></dl>
<p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00037">37</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p> <p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00037">37</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a605a302e13005a1aa3d68d0e22bc474b"></a><!-- doxytag: member="Charlieplex::setPwmLed" ref="a605a302e13005a1aa3d68d0e22bc474b" args="(int index, uint8_t value)" --> <a class="anchor" id="a605a302e13005a1aa3d68d0e22bc474b"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void Charlieplex::setPwmLed </td> <td class="memname">void Charlieplex::setPwmLed </td>
@@ -437,16 +500,20 @@ byte pins[3] = {9, 10, 11};
<tr> <tr>
<td></td> <td></td>
<td>)</td> <td>)</td>
<td></td><td><code> [inline]</code></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the PWM <em>value</em> of the LED at <em>index</em> in the charliplexed array; between 0 and 255. </p> <p>Sets the PWM <em>value</em> of the LED at <em>index</em> in the charliplexed array; between 0 and 255. </p>
<p>If this function is used, then it is assumed that the output pins are capable of PWM output.</p> <p>If this function is used, then it is assumed that the output pins are capable of PWM output.</p>
<p>The PWM-specified brightness of the LED will also be affected to the number of LED's that are currently lit, as the <a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30" title="Returns the number of microseconds that each LED should be held on for before moving onto the next in...">holdTime()</a> refresh rate will cause the LED to appear to dim; the more LED's that are lit the less overall time each individual LED is held on. For best results, only a single LED should be lit at once or higher-brightness LED's should be used.</p> <p>The PWM-specified brightness of the LED will also be affected to the number of LED's that are currently lit, as the <a class="el" href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30" title="Returns the number of microseconds that each LED should be held on for before moving onto the next in...">holdTime()</a> refresh rate will cause the LED to appear to dim; the more LED's that are lit the less overall time each individual LED is held on. For best results, only a single LED should be lit at once or higher-brightness LED's should be used.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6" title="Returns the PWM value of the LED at index in the charplexed array; between 0 and 255.">pwmLed()</a>, <a class="el" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5" title="Sets the value of the LED at index in the charliplexed array.">setLed()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6" title="Returns the PWM value of the LED at index in the charplexed array; between 0 and 255.">pwmLed()</a>, <a class="el" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5" title="Sets the value of the LED at index in the charliplexed array.">setLed()</a> </dd></dl>
<p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00040">40</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p> <p>Definition at line <a class="el" href="Charlieplex_8h_source.html#l00040">40</a> of file <a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a>.</p>
@@ -456,23 +523,12 @@ byte pins[3] = {9, 10, 11};
<li><a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a></li> <li><a class="el" href="Charlieplex_8h_source.html">Charlieplex.h</a></li>
<li><a class="el" href="Charlieplex_8cpp_source.html">Charlieplex.cpp</a></li> <li><a class="el" href="Charlieplex_8cpp_source.html">Charlieplex.cpp</a></li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,26 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">ChaseLEDs Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classChaseLEDs.html">ChaseLEDs</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b">advance</a>(uint8_t prevPin, uint8_t nextPin)</td><td><a class="el" href="classChaseLEDs.html">ChaseLEDs</a></td><td><code> [protected, virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700">advanceTime</a>() const </td><td><a class="el" href="classChaseLEDs.html">ChaseLEDs</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78">ChaseLEDs</a>(const uint8_t *pins, int num, unsigned long advanceTime)</td><td><a class="el" href="classChaseLEDs.html">ChaseLEDs</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">loop</a>()</td><td><a class="el" href="classChaseLEDs.html">ChaseLEDs</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525">previousPin</a>(int n) const </td><td><a class="el" href="classChaseLEDs.html">ChaseLEDs</a></td><td><code> [inline, protected]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7">setAdvanceTime</a>(unsigned long advanceTime)</td><td><a class="el" href="classChaseLEDs.html">ChaseLEDs</a></td><td><code> [inline]</code></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -86,8 +80,27 @@ This is the complete list of members for <a class="el" href="classChaseLEDs.html
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">ChaseLEDs Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classChaseLEDs.html">ChaseLEDs</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b">advance</a>(uint8_t prevPin, uint8_t nextPin)</td><td class="entry"><a class="el" href="classChaseLEDs.html">ChaseLEDs</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700">advanceTime</a>() const </td><td class="entry"><a class="el" href="classChaseLEDs.html">ChaseLEDs</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78">ChaseLEDs</a>(const uint8_t *pins, int num, unsigned long advanceTime)</td><td class="entry"><a class="el" href="classChaseLEDs.html">ChaseLEDs</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">loop</a>()</td><td class="entry"><a class="el" href="classChaseLEDs.html">ChaseLEDs</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525">previousPin</a>(int n) const </td><td class="entry"><a class="el" href="classChaseLEDs.html">ChaseLEDs</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7">setAdvanceTime</a>(unsigned long advanceTime)</td><td class="entry"><a class="el" href="classChaseLEDs.html">ChaseLEDs</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: ChaseLEDs Class Reference</title> <title>ArduinoLibs: ChaseLEDs Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,56 +66,70 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124; <a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> </div> <a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="classChaseLEDs-members.html">List of all members</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">ChaseLEDs Class Reference</div> </div> <div class="title">ChaseLEDs Class Reference</div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<!-- doxytag: class="ChaseLEDs" -->
<p>Chase LED's on output pins in a defined sequence. <p>Chase LED's on output pins in a defined sequence.
<a href="classChaseLEDs.html#details">More...</a></p> <a href="classChaseLEDs.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="ChaseLEDs_8h_source.html">ChaseLEDs.h</a>&gt;</code></p> <p><code>#include &lt;<a class="el" href="ChaseLEDs_8h_source.html">ChaseLEDs.h</a>&gt;</code></p>
<p><a href="classChaseLEDs-members.html">List of all members.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr> Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78">ChaseLEDs</a> (const uint8_t *pins, int num, unsigned long advanceTime)</td></tr> <tr class="memitem:ab6bb3da371d3730a6552e93a9b2eab78"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78">ChaseLEDs</a> (const uint8_t *pins, int num, unsigned long <a class="el" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700">advanceTime</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the LED chaser. <a href="#ab6bb3da371d3730a6552e93a9b2eab78"></a><br/></td></tr> <tr class="memdesc:ab6bb3da371d3730a6552e93a9b2eab78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the LED chaser. <a href="#ab6bb3da371d3730a6552e93a9b2eab78"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">loop</a> ()</td></tr> <tr class="memitem:a8745fa6b9f33b6c6274a563dd4dea786"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">loop</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700">advanceTime</a> () const </td></tr> <tr class="memitem:aed060c51bb63dd8065be89f895989700"><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700">advanceTime</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of milliseconds that each LED will be lit in the chase sequence. <a href="#aed060c51bb63dd8065be89f895989700"></a><br/></td></tr> <tr class="memdesc:aed060c51bb63dd8065be89f895989700"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of milliseconds that each LED will be lit in the chase sequence. <a href="#aed060c51bb63dd8065be89f895989700"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7">setAdvanceTime</a> (unsigned long advanceTime)</td></tr> <tr class="memitem:af560270f72302c19fb7f95002089c9d7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7">setAdvanceTime</a> (unsigned long <a class="el" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700">advanceTime</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the number of milliseconds to advance between LED's to <em>advanceTime</em>. <a href="#af560270f72302c19fb7f95002089c9d7"></a><br/></td></tr> <tr class="memdesc:af560270f72302c19fb7f95002089c9d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the number of milliseconds to advance between LED's to <em>advanceTime</em>. <a href="#af560270f72302c19fb7f95002089c9d7"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a> </table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr> Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b">advance</a> (uint8_t prevPin, uint8_t nextPin)</td></tr> <tr class="memitem:aa0f4e0bd07dd65ee5574e894a612486b"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b">advance</a> (uint8_t prevPin, uint8_t nextPin)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Advances to the next LED in sequence, turning off <em>prevPin</em>, and turning on <em>nextPin</em>. <a href="#aa0f4e0bd07dd65ee5574e894a612486b"></a><br/></td></tr> <tr class="memdesc:aa0f4e0bd07dd65ee5574e894a612486b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Advances to the next LED in sequence, turning off <em>prevPin</em>, and turning on <em>nextPin</em>. <a href="#aa0f4e0bd07dd65ee5574e894a612486b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525">previousPin</a> (int n) const </td></tr> <tr class="memitem:a27c460fcb341c2dc2fcf9341616eb525"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525">previousPin</a> (int n) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the pin that is <em>n</em> steps back in the sequence. <a href="#a27c460fcb341c2dc2fcf9341616eb525"></a><br/></td></tr> <tr class="memdesc:a27c460fcb341c2dc2fcf9341616eb525"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the pin that is <em>n</em> steps back in the sequence. <a href="#a27c460fcb341c2dc2fcf9341616eb525"></a><br/></td></tr>
</table> </table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Chase LED's on output pins in a defined sequence. </p> <div class="textblock"><p>Chase LED's on output pins in a defined sequence. </p>
<p>The following example performs a LED chase over the 6 PWM outputs on the Arduino Uno, with a 150 millisecond delay between each LED:</p> <p>The following example performs a LED chase over the 6 PWM outputs on the Arduino Uno, with a 150 millisecond delay between each LED:</p>
<div class="fragment"><pre class="fragment"> uint8_t pins[] = {3, 5, 6, 9, 10, 11}; <div class="fragment"><div class="line">uint8_t pins[] = {3, 5, 6, 9, 10, 11};</div>
<a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> chaser(pins, <span class="keyword">sizeof</span>(pins), 150); <div class="line"><a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> chaser(pins, <span class="keyword">sizeof</span>(pins), 150);</div>
<div class="line"></div>
<span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">loop</a>() { <div class="line"><span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">loop</a>() {</div>
chaser.loop(); <div class="line"> chaser.loop();</div>
} <div class="line">}</div>
</pre></div><p>After pin 11 is lit, the pattern will repeat at pin 3. To cause the chase to oscillate back and forth instead, extend the sequence as follows:</p> </div><!-- fragment --><p>After pin 11 is lit, the pattern will repeat at pin 3. To cause the chase to oscillate back and forth instead, extend the sequence as follows:</p>
<div class="fragment"><pre class="fragment"> uint8_t pins[] = {3, 5, 6, 9, 10, 11, 10, 9, 6, 5}; <div class="fragment"><div class="line">uint8_t pins[] = {3, 5, 6, 9, 10, 11, 10, 9, 6, 5};</div>
<a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> chaser(pins, <span class="keyword">sizeof</span>(pins), 150); <div class="line"><a class="code" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> chaser(pins, <span class="keyword">sizeof</span>(pins), 150);</div>
</pre></div><p>See the <a class="el" href="blink_cylon.html">Cylon</a> example for more information on how to use the <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> class in a practical application. </p> </div><!-- fragment --><p>See the <a class="el" href="blink_cylon.html">Cylon</a> example for more information on how to use the <a class="el" href="classChaseLEDs.html" title="Chase LED&#39;s on output pins in a defined sequence.">ChaseLEDs</a> class in a practical application. </p>
<p>Definition at line <a class="el" href="ChaseLEDs_8h_source.html#l00028">28</a> of file <a class="el" href="ChaseLEDs_8h_source.html">ChaseLEDs.h</a>.</p> <p>Definition at line <a class="el" href="ChaseLEDs_8h_source.html#l00028">28</a> of file <a class="el" href="ChaseLEDs_8h_source.html">ChaseLEDs.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2> </div><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ab6bb3da371d3730a6552e93a9b2eab78"></a><!-- doxytag: member="ChaseLEDs::ChaseLEDs" ref="ab6bb3da371d3730a6552e93a9b2eab78" args="(const uint8_t *pins, int num, unsigned long advanceTime)" --> <a class="anchor" id="ab6bb3da371d3730a6552e93a9b2eab78"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -135,22 +157,24 @@ Protected Member Functions</h2></td></tr>
<td></td><td></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Initializes the LED chaser. </p> <p>Initializes the LED chaser. </p>
<p>The chase sequence consists of <em>num</em> pins, whose names are given by the <em>pins</em> array. Each LED is lit for <em>advanceTime</em> milliseconds before advancing to the next LED.</p> <p>The chase sequence consists of <em>num</em> pins, whose names are given by the <em>pins</em> array. Each LED is lit for <em>advanceTime</em> milliseconds before advancing to the next LED.</p>
<p>This constructor configures all of the pins for output and sets their state to be LOW. The first LED will be lit when the program first calls <a class="el" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">loop()</a>.</p> <p>This constructor configures all of the pins for output and sets their state to be LOW. The first LED will be lit when the program first calls <a class="el" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">loop()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">loop()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">loop()</a> </dd></dl>
<p>Definition at line <a class="el" href="ChaseLEDs_8cpp_source.html#l00071">71</a> of file <a class="el" href="ChaseLEDs_8cpp_source.html">ChaseLEDs.cpp</a>.</p> <p>Definition at line <a class="el" href="ChaseLEDs_8cpp_source.html#l00071">71</a> of file <a class="el" href="ChaseLEDs_8cpp_source.html">ChaseLEDs.cpp</a>.</p>
</div> </div>
</div> </div>
<hr/><h2>Member Function Documentation</h2> <h2>Member Function Documentation</h2>
<a class="anchor" id="aa0f4e0bd07dd65ee5574e894a612486b"></a><!-- doxytag: member="ChaseLEDs::advance" ref="aa0f4e0bd07dd65ee5574e894a612486b" args="(uint8_t prevPin, uint8_t nextPin)" --> <a class="anchor" id="aa0f4e0bd07dd65ee5574e894a612486b"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void ChaseLEDs::advance </td> <td class="memname">void ChaseLEDs::advance </td>
@@ -167,45 +191,56 @@ Protected Member Functions</h2></td></tr>
<tr> <tr>
<td></td> <td></td>
<td>)</td> <td>)</td>
<td></td><td><code> [protected, virtual]</code></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Advances to the next LED in sequence, turning off <em>prevPin</em>, and turning on <em>nextPin</em>. </p> <p>Advances to the next LED in sequence, turning off <em>prevPin</em>, and turning on <em>nextPin</em>. </p>
<p>The default implementation is equivalent to the following code:</p> <p>The default implementation is equivalent to the following code:</p>
<div class="fragment"><pre class="fragment"> digitalWrite(prevPin, LOW); <div class="fragment"><div class="line">digitalWrite(prevPin, LOW);</div>
digitalWrite(nextPin, HIGH); <div class="line">digitalWrite(nextPin, HIGH);</div>
</pre></div><p>This method may be overridden in subclasses to provide special effects. See the documentation for <a class="el" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin()</a> for some example effects.</p> </div><!-- fragment --><p>This method may be overridden in subclasses to provide special effects. See the documentation for <a class="el" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin()</a> for some example effects.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin()</a> </dd></dl>
<p>Definition at line <a class="el" href="ChaseLEDs_8cpp_source.html#l00136">136</a> of file <a class="el" href="ChaseLEDs_8cpp_source.html">ChaseLEDs.cpp</a>.</p> <p>Definition at line <a class="el" href="ChaseLEDs_8cpp_source.html#l00136">136</a> of file <a class="el" href="ChaseLEDs_8cpp_source.html">ChaseLEDs.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="aed060c51bb63dd8065be89f895989700"></a><!-- doxytag: member="ChaseLEDs::advanceTime" ref="aed060c51bb63dd8065be89f895989700" args="() const " --> <a class="anchor" id="aed060c51bb63dd8065be89f895989700"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">unsigned long ChaseLEDs::advanceTime </td> <td class="memname">unsigned long ChaseLEDs::advanceTime </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of milliseconds that each LED will be lit in the chase sequence. </p> <p>Returns the number of milliseconds that each LED will be lit in the chase sequence. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7" title="Sets the number of milliseconds to advance between LED&#39;s to advanceTime.">setAdvanceTime()</a>, <a class="el" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7" title="Sets the number of milliseconds to advance between LED&#39;s to advanceTime.">setAdvanceTime()</a>, <a class="el" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance()</a> </dd></dl>
<p>Definition at line <a class="el" href="ChaseLEDs_8h_source.html#l00035">35</a> of file <a class="el" href="ChaseLEDs_8h_source.html">ChaseLEDs.h</a>.</p> <p>Definition at line <a class="el" href="ChaseLEDs_8h_source.html#l00035">35</a> of file <a class="el" href="ChaseLEDs_8h_source.html">ChaseLEDs.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a8745fa6b9f33b6c6274a563dd4dea786"></a><!-- doxytag: member="ChaseLEDs::loop" ref="a8745fa6b9f33b6c6274a563dd4dea786" args="()" --> <a class="anchor" id="a8745fa6b9f33b6c6274a563dd4dea786"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -216,70 +251,83 @@ Protected Member Functions</h2></td></tr>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Perform a single iteration of the control loop for this LED chaser. </p> <p>Perform a single iteration of the control loop for this LED chaser. </p>
<p>Definition at line <a class="el" href="ChaseLEDs_8cpp_source.html#l00087">87</a> of file <a class="el" href="ChaseLEDs_8cpp_source.html">ChaseLEDs.cpp</a>.</p> <p>Definition at line <a class="el" href="ChaseLEDs_8cpp_source.html#l00087">87</a> of file <a class="el" href="ChaseLEDs_8cpp_source.html">ChaseLEDs.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a27c460fcb341c2dc2fcf9341616eb525"></a><!-- doxytag: member="ChaseLEDs::previousPin" ref="a27c460fcb341c2dc2fcf9341616eb525" args="(int n) const " --> <a class="anchor" id="a27c460fcb341c2dc2fcf9341616eb525"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">uint8_t ChaseLEDs::previousPin </td> <td class="memname">uint8_t ChaseLEDs::previousPin </td>
<td>(</td> <td>(</td>
<td class="paramtype">int&#160;</td> <td class="paramtype">int&#160;</td>
<td class="paramname"><em>n</em></td><td>)</td> <td class="paramname"><em>n</em></td><td>)</td>
<td> const<code> [inline, protected]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the pin that is <em>n</em> steps back in the sequence. </p> <p>Returns the pin that is <em>n</em> steps back in the sequence. </p>
<p>If <em>n</em> is zero, then the current pin is returned; if <em>n</em> is 1, then the previous pin is returned; and so on.</p> <p>If <em>n</em> is zero, then the current pin is returned; if <em>n</em> is 1, then the previous pin is returned; and so on.</p>
<p>This function may be called by subclasses in their <a class="el" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance()</a> method to manipulate pins that are further back in the chase sequence than the immediately previous pin.</p> <p>This function may be called by subclasses in their <a class="el" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance()</a> method to manipulate pins that are further back in the chase sequence than the immediately previous pin.</p>
<p>For example, the following code implements a LED chaser that lights two pins at a time:</p> <p>For example, the following code implements a LED chaser that lights two pins at a time:</p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">DoubleChaser::advance</a>(uint8_t prevPin, uint8_t nextPin) <div class="fragment"><div class="line"><span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">DoubleChaser::advance</a>(uint8_t prevPin, uint8_t nextPin)</div>
{ <div class="line">{</div>
digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(2), LOW); <div class="line"> digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(2), LOW);</div>
digitalWrite(prevPin, HIGH); <div class="line"> digitalWrite(prevPin, HIGH);</div>
digitalWrite(nextPin, HIGH); <div class="line"> digitalWrite(nextPin, HIGH);</div>
} <div class="line">}</div>
</pre></div><p>As another exmaple, the following code uses PWM outputs to fade out the previous pin rather than turn it off immediately:</p> </div><!-- fragment --><p>As another exmaple, the following code uses PWM outputs to fade out the previous pin rather than turn it off immediately:</p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">FadingChaser::advance</a>(uint8_t prevPin, uint8_t nextPin) <div class="fragment"><div class="line"><span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">FadingChaser::advance</a>(uint8_t prevPin, uint8_t nextPin)</div>
{ <div class="line">{</div>
digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(2), LOW); <div class="line"> digitalWrite(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525" title="Returns the pin that is n steps back in the sequence.">previousPin</a>(2), LOW);</div>
analogWrite(prevPin, 32); <div class="line"> analogWrite(prevPin, 32);</div>
digitalWrite(nextPin, HIGH); <div class="line"> digitalWrite(nextPin, HIGH);</div>
} <div class="line">}</div>
</pre></div><p>Note: it is possible to retrieve the <em>following</em> pin in sequence using previousPin(-1). This could be used to fade in the LED that follows <em>nextPin</em>.</p> </div><!-- fragment --><p>Note: it is possible to retrieve the <em>following</em> pin in sequence using previousPin(-1). This could be used to fade in the LED that follows <em>nextPin</em>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance()</a> </dd></dl>
<p>Definition at line <a class="el" href="ChaseLEDs_8h_source.html#l00040">40</a> of file <a class="el" href="ChaseLEDs_8h_source.html">ChaseLEDs.h</a>.</p> <p>Definition at line <a class="el" href="ChaseLEDs_8h_source.html#l00040">40</a> of file <a class="el" href="ChaseLEDs_8h_source.html">ChaseLEDs.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="af560270f72302c19fb7f95002089c9d7"></a><!-- doxytag: member="ChaseLEDs::setAdvanceTime" ref="af560270f72302c19fb7f95002089c9d7" args="(unsigned long advanceTime)" --> <a class="anchor" id="af560270f72302c19fb7f95002089c9d7"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void ChaseLEDs::setAdvanceTime </td> <td class="memname">void ChaseLEDs::setAdvanceTime </td>
<td>(</td> <td>(</td>
<td class="paramtype">unsigned long&#160;</td> <td class="paramtype">unsigned long&#160;</td>
<td class="paramname"><em>advanceTime</em></td><td>)</td> <td class="paramname"><em>advanceTime</em></td><td>)</td>
<td><code> [inline]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the number of milliseconds to advance between LED's to <em>advanceTime</em>. </p> <p>Sets the number of milliseconds to advance between LED's to <em>advanceTime</em>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700" title="Returns the number of milliseconds that each LED will be lit in the chase sequence.">advanceTime()</a>, <a class="el" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700" title="Returns the number of milliseconds that each LED will be lit in the chase sequence.">advanceTime()</a>, <a class="el" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b" title="Advances to the next LED in sequence, turning off prevPin, and turning on nextPin.">advance()</a> </dd></dl>
<p>Definition at line <a class="el" href="ChaseLEDs_8h_source.html#l00036">36</a> of file <a class="el" href="ChaseLEDs_8h_source.html">ChaseLEDs.h</a>.</p> <p>Definition at line <a class="el" href="ChaseLEDs_8h_source.html#l00036">36</a> of file <a class="el" href="ChaseLEDs_8h_source.html">ChaseLEDs.h</a>.</p>
@@ -289,23 +337,12 @@ Protected Member Functions</h2></td></tr>
<li><a class="el" href="ChaseLEDs_8h_source.html">ChaseLEDs.h</a></li> <li><a class="el" href="ChaseLEDs_8h_source.html">ChaseLEDs.h</a></li>
<li><a class="el" href="ChaseLEDs_8cpp_source.html">ChaseLEDs.cpp</a></li> <li><a class="el" href="ChaseLEDs_8cpp_source.html">ChaseLEDs.cpp</a></li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,75 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">DMD Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classDMD.html">DMD</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a40526748415c8bbc58a8510d636c20f4">Bitmap</a>(int width, int height)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#ad18d3d5a1e77d541a95e93ad1f958411">bitsPerPixel</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a></td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a9b79ac13077ca865e4515510297780bd">charWidth</a>(char ch) const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1">clear</a>(Color color=Black)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> typedef</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#ab22fe1f3871934987a670b559f67c67c">copy</a>(int x, int y, int width, int height, Bitmap *dest, int destX, int destY)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d">data</a>()</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a20fea2a946545aa3b5edd78245149e5f">data</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33">disableTimer1</a>()</td><td><a class="el" href="classDMD.html">DMD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDMD.html#a52fe885bfb380b74df54c96221811cff">disableTimer2</a>()</td><td><a class="el" href="classDMD.html">DMD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDMD.html#affd37accffe951c8878434dfa1245809">DMD</a>(int widthPanels=1, int heightPanels=1)</td><td><a class="el" href="classDMD.html">DMD</a></td><td><code> [explicit]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec">doubleBuffer</a>() const </td><td><a class="el" href="classDMD.html">DMD</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72">drawBitmap</a>(int x, int y, const Bitmap &amp;bitmap, Color color=White)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#aa4089d785c59f16dcf0505ec04b4e658">drawBitmap</a>(int x, int y, const prog_uint8_t *bitmap, Color color=White)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd">drawChar</a>(int x, int y, char ch)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa">drawCircle</a>(int centerX, int centerY, int radius, Color borderColor=White, Color fillColor=NoFill)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a757291b9a39bcb0d64ac98d3a2fa061b">drawFilledCircle</a>(int centerX, int centerY, int radius, Color color=White)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a568acbca3818dd85dd62fff6d0b36ffb">drawFilledRect</a>(int x1, int y1, int x2, int y2, Color color=White)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a">drawInvertedBitmap</a>(int x, int y, const Bitmap &amp;bitmap)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#ae41aa6bfa8d508d216e25d80bb93747e">drawInvertedBitmap</a>(int x, int y, const prog_uint8_t *bitmap)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a>(int x1, int y1, int x2, int y2, Color color=White)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc">drawRect</a>(int x1, int y1, int x2, int y2, Color borderColor=White, Color fillColor=NoFill)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0">drawText</a>(int x, int y, const char *str, int len=-1)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a802f5d6bd19a3727670e61e7a88a0cac">drawText</a>(int x, int y, const String &amp;str, int start=0, int len=-1)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2">enableTimer1</a>()</td><td><a class="el" href="classDMD.html">DMD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97">enableTimer2</a>()</td><td><a class="el" href="classDMD.html">DMD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(int x, int y, int width, int height, Color color)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#aadcad6c9e1f10f0ddbb789401132aa6f">fill</a>(int x, int y, int width, int height, const prog_uint8_t *pattern, Color color=White)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#ab6bd47cb892b47b4c69b422ace182b87">font</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDMD.html#a557412f734fc4596e1102bf71e110ea0">fromRGB</a>(uint8_t r, uint8_t g, uint8_t b)</td><td><a class="el" href="classDMD.html">DMD</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a6d85556bcc9fac91d33f0f6f7a6430dd">invert</a>(int x, int y, int width, int height)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a3846a240722e847d3cf11f701da1ce7b">isValid</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114">loop</a>()</td><td><a class="el" href="classDMD.html">DMD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">NoFill</a></td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203">pixel</a>(int x, int y) const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8">refresh</a>()</td><td><a class="el" href="classDMD.html">DMD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a">scroll</a>(int dx, int dy, Color fillColor=Black)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#af79ad4432297ff453fddc55625fec485">scroll</a>(int x, int y, int width, int height, int dx, int dy, Color fillColor=Black)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723">setDoubleBuffer</a>(bool doubleBuffer)</td><td><a class="el" href="classDMD.html">DMD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#abf7adfceb267080aa9806388e96358c4">setFont</a>(const prog_uint8_t *font)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(int x, int y, Color color)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a8e225a4f188269bb18265ae4b49de0a3">setTextColor</a>(Color color)</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#af30df263729385ea2330effe3c80a1bc">stride</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a">swapBuffers</a>()</td><td><a class="el" href="classDMD.html">DMD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736">swapBuffersAndCopy</a>()</td><td><a class="el" href="classDMD.html">DMD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#ab6e5f5744fd2f18478aac428b751d848">textColor</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a628bb694fcfe6eab619a4f1e152d41c4">textHeight</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a0f7607b1c7867987f4500d490a666e8a">textWidth</a>(const char *str, int len=-1) const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a8ca70aa0f8f722a228358bffe794e925">textWidth</a>(const String &amp;str, int start=0, int len=-1) const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a></td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>() const </td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classBitmap.html#a72d2a301ec1eb1c8d0f3d64823659a8e">~Bitmap</a>()</td><td><a class="el" href="classBitmap.html">Bitmap</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDMD.html#a7b37e05584d3e0308163700920df99b2">~DMD</a>()</td><td><a class="el" href="classDMD.html">DMD</a></td><td></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -135,8 +80,78 @@ This is the complete list of members for <a class="el" href="classDMD.html">DMD<
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">DMD Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classDMD.html">DMD</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a40526748415c8bbc58a8510d636c20f4">Bitmap</a>(int width, int height)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#ad18d3d5a1e77d541a95e93ad1f958411">bitsPerPixel</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a></td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a9b79ac13077ca865e4515510297780bd">charWidth</a>(char ch) const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1">clear</a>(Color color=Black)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> typedef</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#ab22fe1f3871934987a670b559f67c67c">copy</a>(int x, int y, int width, int height, Bitmap *dest, int destX, int destY)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d">data</a>()</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a20fea2a946545aa3b5edd78245149e5f">data</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33">disableTimer1</a>()</td><td class="entry"><a class="el" href="classDMD.html">DMD</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDMD.html#a52fe885bfb380b74df54c96221811cff">disableTimer2</a>()</td><td class="entry"><a class="el" href="classDMD.html">DMD</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classDMD.html#affd37accffe951c8878434dfa1245809">DMD</a>(int widthPanels=1, int heightPanels=1)</td><td class="entry"><a class="el" href="classDMD.html">DMD</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec">doubleBuffer</a>() const </td><td class="entry"><a class="el" href="classDMD.html">DMD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72">drawBitmap</a>(int x, int y, const Bitmap &amp;bitmap, Color color=White)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a5e4f23e8f14e193410b5f071149401e4">drawBitmap</a>(int x, int y, Bitmap::ProgMem bitmap, Color color=White)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd">drawChar</a>(int x, int y, char ch)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa">drawCircle</a>(int centerX, int centerY, int radius, Color borderColor=White, Color fillColor=NoFill)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a757291b9a39bcb0d64ac98d3a2fa061b">drawFilledCircle</a>(int centerX, int centerY, int radius, Color color=White)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a568acbca3818dd85dd62fff6d0b36ffb">drawFilledRect</a>(int x1, int y1, int x2, int y2, Color color=White)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a">drawInvertedBitmap</a>(int x, int y, const Bitmap &amp;bitmap)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a2e862b72c2d6471af737fac320472d69">drawInvertedBitmap</a>(int x, int y, Bitmap::ProgMem bitmap)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a>(int x1, int y1, int x2, int y2, Color color=White)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc">drawRect</a>(int x1, int y1, int x2, int y2, Color borderColor=White, Color fillColor=NoFill)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0">drawText</a>(int x, int y, const char *str, int len=-1)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a802f5d6bd19a3727670e61e7a88a0cac">drawText</a>(int x, int y, const String &amp;str, int start=0, int len=-1)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2">enableTimer1</a>()</td><td class="entry"><a class="el" href="classDMD.html">DMD</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97">enableTimer2</a>()</td><td class="entry"><a class="el" href="classDMD.html">DMD</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(int x, int y, int width, int height, Color color)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#ac661adab340858b541a2fe44e6303f56">fill</a>(int x, int y, int width, int height, Bitmap::ProgMem pattern, Color color=White)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c">font</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf">Font</a> typedef</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classDMD.html#a557412f734fc4596e1102bf71e110ea0">fromRGB</a>(uint8_t r, uint8_t g, uint8_t b)</td><td class="entry"><a class="el" href="classDMD.html">DMD</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a6d85556bcc9fac91d33f0f6f7a6430dd">invert</a>(int x, int y, int width, int height)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a3846a240722e847d3cf11f701da1ce7b">isValid</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114">loop</a>()</td><td class="entry"><a class="el" href="classDMD.html">DMD</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">NoFill</a></td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203">pixel</a>(int x, int y) const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43">ProgMem</a> typedef</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8">refresh</a>()</td><td class="entry"><a class="el" href="classDMD.html">DMD</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a">scroll</a>(int dx, int dy, Color fillColor=Black)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#af79ad4432297ff453fddc55625fec485">scroll</a>(int x, int y, int width, int height, int dx, int dy, Color fillColor=Black)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723">setDoubleBuffer</a>(bool doubleBuffer)</td><td class="entry"><a class="el" href="classDMD.html">DMD</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a64d7a9651d5c385a044cc910a3b82837">setFont</a>(Font font)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(int x, int y, Color color)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a8e225a4f188269bb18265ae4b49de0a3">setTextColor</a>(Color color)</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#af30df263729385ea2330effe3c80a1bc">stride</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a">swapBuffers</a>()</td><td class="entry"><a class="el" href="classDMD.html">DMD</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736">swapBuffersAndCopy</a>()</td><td class="entry"><a class="el" href="classDMD.html">DMD</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#ab6e5f5744fd2f18478aac428b751d848">textColor</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a628bb694fcfe6eab619a4f1e152d41c4">textHeight</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a0f7607b1c7867987f4500d490a666e8a">textWidth</a>(const char *str, int len=-1) const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a8ca70aa0f8f722a228358bffe794e925">textWidth</a>(const String &amp;str, int start=0, int len=-1) const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a></td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>() const </td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classBitmap.html#a72d2a301ec1eb1c8d0f3d64823659a8e">~Bitmap</a>()</td><td class="entry"><a class="el" href="classBitmap.html">Bitmap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDMD.html#a7b37e05584d3e0308163700920df99b2">~DMD</a>()</td><td class="entry"><a class="el" href="classDMD.html">DMD</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: DMD Class Reference</title> <title>ArduinoLibs: DMD Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,16 +66,31 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124; <a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> </div> <a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classDMD-members.html">List of all members</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">DMD Class Reference</div> </div> <div class="title">DMD Class Reference</div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<!-- doxytag: class="DMD" --><!-- doxytag: inherits="Bitmap" -->
<p>Handle large dot matrix displays composed of LED's. <p>Handle large dot matrix displays composed of LED's.
<a href="classDMD.html#details">More...</a></p> <a href="classDMD.html#details">More...</a></p>
@@ -81,135 +104,234 @@ Inheritance diagram for DMD:</div>
<area href="classBitmap.html" title="Represents a monochrome bitmap within main memory." alt="Bitmap" shape="rect" coords="0,0,49,24"/> <area href="classBitmap.html" title="Represents a monochrome bitmap within main memory." alt="Bitmap" shape="rect" coords="0,0,49,24"/>
</map> </map>
</div></div> </div></div>
<p><a href="classDMD-members.html">List of all members.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr> Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#affd37accffe951c8878434dfa1245809">DMD</a> (int widthPanels=1, int heightPanels=1)</td></tr> <tr class="memitem:affd37accffe951c8878434dfa1245809"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#affd37accffe951c8878434dfa1245809">DMD</a> (int widthPanels=1, int heightPanels=1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new dot matrix display handler for a display that is <em>widthPanels</em> x <em>heightPanels</em> in size. <a href="#affd37accffe951c8878434dfa1245809"></a><br/></td></tr> <tr class="memdesc:affd37accffe951c8878434dfa1245809"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new dot matrix display handler for a display that is <em>widthPanels</em> x <em>heightPanels</em> in size. <a href="#affd37accffe951c8878434dfa1245809"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b37e05584d3e0308163700920df99b2"></a><!-- doxytag: member="DMD::~DMD" ref="a7b37e05584d3e0308163700920df99b2" args="()" --> <tr class="memitem:a7b37e05584d3e0308163700920df99b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b37e05584d3e0308163700920df99b2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a7b37e05584d3e0308163700920df99b2">~DMD</a> ()</td></tr> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a7b37e05584d3e0308163700920df99b2">~DMD</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys this dot matrix display handler. <br/></td></tr> <tr class="memdesc:a7b37e05584d3e0308163700920df99b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys this dot matrix display handler. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec">doubleBuffer</a> () const </td></tr> <tr class="memitem:aab1f3ba29c053d630ae12865d22166ec"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec">doubleBuffer</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the display is double-buffered; false if single-buffered. The default is false. <a href="#aab1f3ba29c053d630ae12865d22166ec"></a><br/></td></tr> <tr class="memdesc:aab1f3ba29c053d630ae12865d22166ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the display is double-buffered; false if single-buffered. The default is false. <a href="#aab1f3ba29c053d630ae12865d22166ec"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723">setDoubleBuffer</a> (bool doubleBuffer)</td></tr> <tr class="memitem:a6fbdcf8832f91d02500cb7a9b84d2723"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723">setDoubleBuffer</a> (bool <a class="el" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec">doubleBuffer</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables double-buffering according to <em>doubleBuffer</em>. <a href="#a6fbdcf8832f91d02500cb7a9b84d2723"></a><br/></td></tr> <tr class="memdesc:a6fbdcf8832f91d02500cb7a9b84d2723"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables double-buffering according to <em>doubleBuffer</em>. <a href="#a6fbdcf8832f91d02500cb7a9b84d2723"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a">swapBuffers</a> ()</td></tr> <tr class="memitem:a80269ccd44b3ef9ee15f0a1009b7a60a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a">swapBuffers</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Swaps the buffers that are used for rendering to the display. <a href="#a80269ccd44b3ef9ee15f0a1009b7a60a"></a><br/></td></tr> <tr class="memdesc:a80269ccd44b3ef9ee15f0a1009b7a60a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swaps the buffers that are used for rendering to the display. <a href="#a80269ccd44b3ef9ee15f0a1009b7a60a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736">swapBuffersAndCopy</a> ()</td></tr> <tr class="memitem:a0b1771cf790b2b62eea55e56b02e3736"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736">swapBuffersAndCopy</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Swaps the buffers that are used for rendering to the display and copies the former back buffer contents to the new back buffer. <a href="#a0b1771cf790b2b62eea55e56b02e3736"></a><br/></td></tr> <tr class="memdesc:a0b1771cf790b2b62eea55e56b02e3736"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swaps the buffers that are used for rendering to the display and copies the former back buffer contents to the new back buffer. <a href="#a0b1771cf790b2b62eea55e56b02e3736"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114">loop</a> ()</td></tr> <tr class="memitem:a2c74a0845ef6080056b972d490648114"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114">loop</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs regular display refresh activities from the application's main loop. <a href="#a2c74a0845ef6080056b972d490648114"></a><br/></td></tr> <tr class="memdesc:a2c74a0845ef6080056b972d490648114"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs regular display refresh activities from the application's main loop. <a href="#a2c74a0845ef6080056b972d490648114"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8">refresh</a> ()</td></tr> <tr class="memitem:a9e4bf2a9d247312d35c1401ff61261c8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8">refresh</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Refresh the display. <a href="#a9e4bf2a9d247312d35c1401ff61261c8"></a><br/></td></tr> <tr class="memdesc:a9e4bf2a9d247312d35c1401ff61261c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Refresh the display. <a href="#a9e4bf2a9d247312d35c1401ff61261c8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2">enableTimer1</a> ()</td></tr> <tr class="memitem:a4c3b04b384f3d656a9b59690836775e2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2">enableTimer1</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables Timer1 overflow interrupts for updating this display. <a href="#a4c3b04b384f3d656a9b59690836775e2"></a><br/></td></tr> <tr class="memdesc:a4c3b04b384f3d656a9b59690836775e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables Timer1 overflow interrupts for updating this display. <a href="#a4c3b04b384f3d656a9b59690836775e2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33">disableTimer1</a> ()</td></tr> <tr class="memitem:a39af27e216f654ecc7e60b0614cb6b33"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33">disableTimer1</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables Timer1 overflow interrupts. <a href="#a39af27e216f654ecc7e60b0614cb6b33"></a><br/></td></tr> <tr class="memdesc:a39af27e216f654ecc7e60b0614cb6b33"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables Timer1 overflow interrupts. <a href="#a39af27e216f654ecc7e60b0614cb6b33"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97">enableTimer2</a> ()</td></tr> <tr class="memitem:a5469775db7fafebca2cdbc6a6372fb97"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97">enableTimer2</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables Timer2 overflow interrupts for updating this display. <a href="#a5469775db7fafebca2cdbc6a6372fb97"></a><br/></td></tr> <tr class="memdesc:a5469775db7fafebca2cdbc6a6372fb97"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables Timer2 overflow interrupts for updating this display. <a href="#a5469775db7fafebca2cdbc6a6372fb97"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a52fe885bfb380b74df54c96221811cff">disableTimer2</a> ()</td></tr> <tr class="memitem:a52fe885bfb380b74df54c96221811cff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a52fe885bfb380b74df54c96221811cff">disableTimer2</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables Timer2 overflow interrupts. <a href="#a52fe885bfb380b74df54c96221811cff"></a><br/></td></tr> <tr class="memdesc:a52fe885bfb380b74df54c96221811cff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables Timer2 overflow interrupts. <a href="#a52fe885bfb380b74df54c96221811cff"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-static-methods"></a> <tr class="inherit_header pub_methods_classBitmap"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classBitmap')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classBitmap.html">Bitmap</a></td></tr>
<tr class="memitem:a40526748415c8bbc58a8510d636c20f4 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a40526748415c8bbc58a8510d636c20f4">Bitmap</a> (int <a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>, int <a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>)</td></tr>
<tr class="memdesc:a40526748415c8bbc58a8510d636c20f4 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new in-memory bitmap that is <em>width</em> x <em>height</em> pixels in size. <a href="#a40526748415c8bbc58a8510d636c20f4"></a><br/></td></tr>
<tr class="memitem:a72d2a301ec1eb1c8d0f3d64823659a8e inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72d2a301ec1eb1c8d0f3d64823659a8e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a72d2a301ec1eb1c8d0f3d64823659a8e">~Bitmap</a> ()</td></tr>
<tr class="memdesc:a72d2a301ec1eb1c8d0f3d64823659a8e inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys this bitmap. <br/></td></tr>
<tr class="memitem:a3846a240722e847d3cf11f701da1ce7b inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a3846a240722e847d3cf11f701da1ce7b">isValid</a> () const </td></tr>
<tr class="memdesc:a3846a240722e847d3cf11f701da1ce7b inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the memory for this bitmap is valid; false otherwise. <a href="#a3846a240722e847d3cf11f701da1ce7b"></a><br/></td></tr>
<tr class="memitem:a76c3b49e535761f07c553e7336daf523 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a> () const </td></tr>
<tr class="memdesc:a76c3b49e535761f07c553e7336daf523 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the width of the bitmap in pixels. <a href="#a76c3b49e535761f07c553e7336daf523"></a><br/></td></tr>
<tr class="memitem:adcd4e3dc7594421e647b0f52da9a41a3 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a> () const </td></tr>
<tr class="memdesc:adcd4e3dc7594421e647b0f52da9a41a3 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the height of the bitmap in pixels. <a href="#adcd4e3dc7594421e647b0f52da9a41a3"></a><br/></td></tr>
<tr class="memitem:af30df263729385ea2330effe3c80a1bc inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#af30df263729385ea2330effe3c80a1bc">stride</a> () const </td></tr>
<tr class="memdesc:af30df263729385ea2330effe3c80a1bc inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of bytes in each line of the bitmap's <a class="el" href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d" title="Returns a pointer to the start of the bitmap&#39;s data buffer.">data()</a> buffer. <a href="#af30df263729385ea2330effe3c80a1bc"></a><br/></td></tr>
<tr class="memitem:ad18d3d5a1e77d541a95e93ad1f958411 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#ad18d3d5a1e77d541a95e93ad1f958411">bitsPerPixel</a> () const </td></tr>
<tr class="memdesc:ad18d3d5a1e77d541a95e93ad1f958411 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of bits per pixel for the bitmap; always 1. <a href="#ad18d3d5a1e77d541a95e93ad1f958411"></a><br/></td></tr>
<tr class="memitem:a5eeed27c176eb6e4a2c39ea83444e27d inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d">data</a> ()</td></tr>
<tr class="memdesc:a5eeed27c176eb6e4a2c39ea83444e27d inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a pointer to the start of the bitmap's data buffer. <a href="#a5eeed27c176eb6e4a2c39ea83444e27d"></a><br/></td></tr>
<tr class="memitem:a20fea2a946545aa3b5edd78245149e5f inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a20fea2a946545aa3b5edd78245149e5f"></a>
const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a20fea2a946545aa3b5edd78245149e5f">data</a> () const </td></tr>
<tr class="memdesc:a20fea2a946545aa3b5edd78245149e5f inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a constant pointer to the start of the bitmap's data buffer.This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. <br/></td></tr>
<tr class="memitem:a839dc8fab05a5ebf7a6b2e61436b2fa1 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1">clear</a> (<a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color=<a class="el" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a>)</td></tr>
<tr class="memdesc:a839dc8fab05a5ebf7a6b2e61436b2fa1 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears the entire bitmap to the specified <em>color</em>. <a href="#a839dc8fab05a5ebf7a6b2e61436b2fa1"></a><br/></td></tr>
<tr class="memitem:a35aa38b377d509d6c4f061a0b988d203 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203">pixel</a> (int x, int y) const </td></tr>
<tr class="memdesc:a35aa38b377d509d6c4f061a0b988d203 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the color of the pixel at (<em>x</em>, <em>y</em>); either <a class="el" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a> or <a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a>. <a href="#a35aa38b377d509d6c4f061a0b988d203"></a><br/></td></tr>
<tr class="memitem:aac994b75418e7d37ec66829437329114 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a> (int x, int y, <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color)</td></tr>
<tr class="memdesc:aac994b75418e7d37ec66829437329114 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the pixel at (<em>x</em>, <em>y</em>) to <em>color</em>. <a href="#aac994b75418e7d37ec66829437329114"></a><br/></td></tr>
<tr class="memitem:aa0a84f3694e343d68e7021552c69f767 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a> (int x1, int y1, int x2, int y2, <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color=<a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a>)</td></tr>
<tr class="memdesc:aa0a84f3694e343d68e7021552c69f767 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a line from (<em>x1</em>, <em>y1</em>) to (<em>x2</em>, <em>y2</em>) in <em>color</em>. <a href="#aa0a84f3694e343d68e7021552c69f767"></a><br/></td></tr>
<tr class="memitem:aac61e3f7f625db568e37d88b52b3b2fc inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc">drawRect</a> (int x1, int y1, int x2, int y2, <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> borderColor=<a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a>, <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> fillColor=<a class="el" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">NoFill</a>)</td></tr>
<tr class="memdesc:aac61e3f7f625db568e37d88b52b3b2fc inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a rectangle from (<em>x1</em>, <em>y1</em>) to (<em>x2</em>, <em>y2</em>), with the outline in <em>borderColor</em> and the interior filled with <em>fillColor</em>. <a href="#aac61e3f7f625db568e37d88b52b3b2fc"></a><br/></td></tr>
<tr class="memitem:a568acbca3818dd85dd62fff6d0b36ffb inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a568acbca3818dd85dd62fff6d0b36ffb">drawFilledRect</a> (int x1, int y1, int x2, int y2, <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color=<a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a>)</td></tr>
<tr class="memdesc:a568acbca3818dd85dd62fff6d0b36ffb inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a filled rectangle from (<em>x1</em>, <em>y1</em>) to (<em>x2</em>, <em>y2</em>) in <em>color</em>. <a href="#a568acbca3818dd85dd62fff6d0b36ffb"></a><br/></td></tr>
<tr class="memitem:a933763a4f3cba79fbcf97ae6d0a864aa inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa">drawCircle</a> (int centerX, int centerY, int radius, <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> borderColor=<a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a>, <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> fillColor=<a class="el" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">NoFill</a>)</td></tr>
<tr class="memdesc:a933763a4f3cba79fbcf97ae6d0a864aa inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a circle with a specific center (<em>centerX</em>, <em>centerY</em>) and <em>radius</em>, with the outline in <em>borderColor</em> and the interior filled with <em>fillColor</em>. <a href="#a933763a4f3cba79fbcf97ae6d0a864aa"></a><br/></td></tr>
<tr class="memitem:a757291b9a39bcb0d64ac98d3a2fa061b inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a757291b9a39bcb0d64ac98d3a2fa061b">drawFilledCircle</a> (int centerX, int centerY, int radius, <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color=<a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a>)</td></tr>
<tr class="memdesc:a757291b9a39bcb0d64ac98d3a2fa061b inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a filled circle with a specific center (<em>centerX</em>, <em>centerY</em>) and <em>radius</em> in <em>color</em>. <a href="#a757291b9a39bcb0d64ac98d3a2fa061b"></a><br/></td></tr>
<tr class="memitem:a491e9c0bb20ddf5a5eb4933077c8ed72 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72">drawBitmap</a> (int x, int y, const <a class="el" href="classBitmap.html">Bitmap</a> &amp;bitmap, <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color=<a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a>)</td></tr>
<tr class="memdesc:a491e9c0bb20ddf5a5eb4933077c8ed72 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws <em>bitmap</em> at (<em>x</em>, <em>y</em>) in <em>color</em>. <a href="#a491e9c0bb20ddf5a5eb4933077c8ed72"></a><br/></td></tr>
<tr class="memitem:a5e4f23e8f14e193410b5f071149401e4 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a5e4f23e8f14e193410b5f071149401e4">drawBitmap</a> (int x, int y, <a class="el" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43">Bitmap::ProgMem</a> bitmap, <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color=<a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a>)</td></tr>
<tr class="memdesc:a5e4f23e8f14e193410b5f071149401e4 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws <em>bitmap</em> at (<em>x</em>, <em>y</em>) in <em>color</em>. <a href="#a5e4f23e8f14e193410b5f071149401e4"></a><br/></td></tr>
<tr class="memitem:a4321640464bc08b60348c09bff01b86a inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a4321640464bc08b60348c09bff01b86a">drawInvertedBitmap</a> (int x, int y, const <a class="el" href="classBitmap.html">Bitmap</a> &amp;bitmap)</td></tr>
<tr class="memdesc:a4321640464bc08b60348c09bff01b86a inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws <em>bitmap</em> at (<em>x</em>, <em>y</em>) in inverted colors. <a href="#a4321640464bc08b60348c09bff01b86a"></a><br/></td></tr>
<tr class="memitem:a2e862b72c2d6471af737fac320472d69 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a2e862b72c2d6471af737fac320472d69">drawInvertedBitmap</a> (int x, int y, <a class="el" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43">Bitmap::ProgMem</a> bitmap)</td></tr>
<tr class="memdesc:a2e862b72c2d6471af737fac320472d69 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws <em>bitmap</em> at (<em>x</em>, <em>y</em>) in inverted colors. <a href="#a2e862b72c2d6471af737fac320472d69"></a><br/></td></tr>
<tr class="memitem:a7bf0a232b4bd12573cc570cc0edef47c inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf">Font</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c">font</a> () const </td></tr>
<tr class="memdesc:a7bf0a232b4bd12573cc570cc0edef47c inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the currently selected font, or null if none selected. <a href="#a7bf0a232b4bd12573cc570cc0edef47c"></a><br/></td></tr>
<tr class="memitem:a64d7a9651d5c385a044cc910a3b82837 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a64d7a9651d5c385a044cc910a3b82837">setFont</a> (<a class="el" href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf">Font</a> <a class="el" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c">font</a>)</td></tr>
<tr class="memdesc:a64d7a9651d5c385a044cc910a3b82837 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <em>font</em> for use with <a class="el" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0" title="Draws the len characters of str at (x, y).">drawText()</a> and <a class="el" href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd" title="Draws a single character ch at (x, y).">drawChar()</a>. <a href="#a64d7a9651d5c385a044cc910a3b82837"></a><br/></td></tr>
<tr class="memitem:ab6e5f5744fd2f18478aac428b751d848 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#ab6e5f5744fd2f18478aac428b751d848">textColor</a> () const </td></tr>
<tr class="memdesc:ab6e5f5744fd2f18478aac428b751d848 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the color that will be used for drawing text with <a class="el" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0" title="Draws the len characters of str at (x, y).">drawText()</a> and <a class="el" href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd" title="Draws a single character ch at (x, y).">drawChar()</a>. The default is <a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a>. <a href="#ab6e5f5744fd2f18478aac428b751d848"></a><br/></td></tr>
<tr class="memitem:a8e225a4f188269bb18265ae4b49de0a3 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a8e225a4f188269bb18265ae4b49de0a3">setTextColor</a> (<a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color)</td></tr>
<tr class="memdesc:a8e225a4f188269bb18265ae4b49de0a3 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <em>color</em> that will be used for drawing text with <a class="el" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0" title="Draws the len characters of str at (x, y).">drawText()</a> and <a class="el" href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd" title="Draws a single character ch at (x, y).">drawChar()</a>. <a href="#a8e225a4f188269bb18265ae4b49de0a3"></a><br/></td></tr>
<tr class="memitem:a3e9bcbfb584d5020bd6f0a313ee275f0 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0">drawText</a> (int x, int y, const char *str, int len=-1)</td></tr>
<tr class="memdesc:a3e9bcbfb584d5020bd6f0a313ee275f0 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws the <em>len</em> characters of <em>str</em> at (<em>x</em>, <em>y</em>). <a href="#a3e9bcbfb584d5020bd6f0a313ee275f0"></a><br/></td></tr>
<tr class="memitem:a802f5d6bd19a3727670e61e7a88a0cac inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a802f5d6bd19a3727670e61e7a88a0cac">drawText</a> (int x, int y, const String &amp;str, int start=0, int len=-1)</td></tr>
<tr class="memdesc:a802f5d6bd19a3727670e61e7a88a0cac inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws <em>len</em> characters starting at <em>start</em> from <em>str</em> to the screen at (<em>x</em>, <em>y</em>). <a href="#a802f5d6bd19a3727670e61e7a88a0cac"></a><br/></td></tr>
<tr class="memitem:a1a11f29863ee7f36a3b15c91963102bd inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd">drawChar</a> (int x, int y, char ch)</td></tr>
<tr class="memdesc:a1a11f29863ee7f36a3b15c91963102bd inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a single character <em>ch</em> at (<em>x</em>, <em>y</em>). <a href="#a1a11f29863ee7f36a3b15c91963102bd"></a><br/></td></tr>
<tr class="memitem:a9b79ac13077ca865e4515510297780bd inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a9b79ac13077ca865e4515510297780bd">charWidth</a> (char ch) const </td></tr>
<tr class="memdesc:a9b79ac13077ca865e4515510297780bd inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the width in pixels of <em>ch</em> in the current <a class="el" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c" title="Returns the currently selected font, or null if none selected.">font()</a>. <a href="#a9b79ac13077ca865e4515510297780bd"></a><br/></td></tr>
<tr class="memitem:a0f7607b1c7867987f4500d490a666e8a inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a0f7607b1c7867987f4500d490a666e8a">textWidth</a> (const char *str, int len=-1) const </td></tr>
<tr class="memdesc:a0f7607b1c7867987f4500d490a666e8a inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the width in pixels of the <em>len</em> characters of <em>str</em> in the current <a class="el" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c" title="Returns the currently selected font, or null if none selected.">font()</a>, including inter-character spacing. <a href="#a0f7607b1c7867987f4500d490a666e8a"></a><br/></td></tr>
<tr class="memitem:a8ca70aa0f8f722a228358bffe794e925 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a8ca70aa0f8f722a228358bffe794e925">textWidth</a> (const String &amp;str, int start=0, int len=-1) const </td></tr>
<tr class="memdesc:a8ca70aa0f8f722a228358bffe794e925 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the width in pixels of the <em>len</em> characters of <em>str</em> in the current <a class="el" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c" title="Returns the currently selected font, or null if none selected.">font()</a>, starting at <em>start</em>, including inter-character spacing. <a href="#a8ca70aa0f8f722a228358bffe794e925"></a><br/></td></tr>
<tr class="memitem:a628bb694fcfe6eab619a4f1e152d41c4 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a628bb694fcfe6eab619a4f1e152d41c4">textHeight</a> () const </td></tr>
<tr class="memdesc:a628bb694fcfe6eab619a4f1e152d41c4 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the height in pixels of the current text drawing <a class="el" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c" title="Returns the currently selected font, or null if none selected.">font()</a>; or zero if <a class="el" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c" title="Returns the currently selected font, or null if none selected.">font()</a> is not set. <a href="#a628bb694fcfe6eab619a4f1e152d41c4"></a><br/></td></tr>
<tr class="memitem:ab22fe1f3871934987a670b559f67c67c inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#ab22fe1f3871934987a670b559f67c67c">copy</a> (int x, int y, int <a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>, int <a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>, <a class="el" href="classBitmap.html">Bitmap</a> *dest, int destX, int destY)</td></tr>
<tr class="memdesc:ab22fe1f3871934987a670b559f67c67c inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies the <em>width</em> x <em>height</em> pixels starting at top-left corner (<em>x</em>, <em>y</em>) to (<em>destX</em>, <em>destY</em>) in the bitmap <em>dest</em>. <a href="#ab22fe1f3871934987a670b559f67c67c"></a><br/></td></tr>
<tr class="memitem:a99da820f9280aace6b512801d5a5e2b2 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a> (int x, int y, int <a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>, int <a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>, <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color)</td></tr>
<tr class="memdesc:a99da820f9280aace6b512801d5a5e2b2 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fills the <em>width</em> x <em>height</em> pixels starting at top-left corner (<em>x</em>, <em>y</em>) with <em>color</em>. <a href="#a99da820f9280aace6b512801d5a5e2b2"></a><br/></td></tr>
<tr class="memitem:ac661adab340858b541a2fe44e6303f56 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#ac661adab340858b541a2fe44e6303f56">fill</a> (int x, int y, int <a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>, int <a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>, <a class="el" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43">Bitmap::ProgMem</a> pattern, <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color=<a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a>)</td></tr>
<tr class="memdesc:ac661adab340858b541a2fe44e6303f56 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fills the <em>width</em> x <em>height</em> pixels starting at top-left corner (<em>x</em>, <em>y</em>) with the contents of <em>pattern</em>. <a href="#ac661adab340858b541a2fe44e6303f56"></a><br/></td></tr>
<tr class="memitem:ae08eb6f9086f9923d8dc83a469ae4c4a inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a">scroll</a> (int dx, int dy, <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> fillColor=<a class="el" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a>)</td></tr>
<tr class="memdesc:ae08eb6f9086f9923d8dc83a469ae4c4a inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Scrolls the entire contents of the bitmap by <em>dx</em> and <em>dy</em>. <a href="#ae08eb6f9086f9923d8dc83a469ae4c4a"></a><br/></td></tr>
<tr class="memitem:af79ad4432297ff453fddc55625fec485 inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#af79ad4432297ff453fddc55625fec485">scroll</a> (int x, int y, int <a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>, int <a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>, int dx, int dy, <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> fillColor=<a class="el" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a>)</td></tr>
<tr class="memdesc:af79ad4432297ff453fddc55625fec485 inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Scrolls the <em>width</em> x <em>height</em> pixels starting at top-left corner (<em>x</em>, <em>y</em>) by <em>dx</em> and <em>dy</em>. <a href="#af79ad4432297ff453fddc55625fec485"></a><br/></td></tr>
<tr class="memitem:a6d85556bcc9fac91d33f0f6f7a6430dd inherit pub_methods_classBitmap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a6d85556bcc9fac91d33f0f6f7a6430dd">invert</a> (int x, int y, int <a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>, int <a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>)</td></tr>
<tr class="memdesc:a6d85556bcc9fac91d33f0f6f7a6430dd inherit pub_methods_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Inverts the <em>width</em> x <em>height</em> pixels starting at top-left corner (<em>x</em>, <em>y</em>). <a href="#a6d85556bcc9fac91d33f0f6f7a6430dd"></a><br/></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr> Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a557412f734fc4596e1102bf71e110ea0">fromRGB</a> (uint8_t r, uint8_t g, uint8_t b)</td></tr> <tr class="memitem:a557412f734fc4596e1102bf71e110ea0"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a557412f734fc4596e1102bf71e110ea0">fromRGB</a> (uint8_t r, uint8_t g, uint8_t b)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts an RGB value into a pixel color value. <a href="#a557412f734fc4596e1102bf71e110ea0"></a><br/></td></tr> <tr class="memdesc:a557412f734fc4596e1102bf71e110ea0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts an RGB value into a pixel color value. <a href="#a557412f734fc4596e1102bf71e110ea0"></a><br/></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_types_classBitmap"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classBitmap')"><img src="closed.png" alt="-"/>&nbsp;Public Types inherited from <a class="el" href="classBitmap.html">Bitmap</a></td></tr>
<tr class="memitem:a88d386944a7017aa776a177b10d8b2ba inherit pub_types_classBitmap"><td class="memItemLeft" align="right" valign="top">typedef uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a></td></tr>
<tr class="memdesc:a88d386944a7017aa776a177b10d8b2ba inherit pub_types_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type that represents the color of a pixel in a bitmap. <a href="#a88d386944a7017aa776a177b10d8b2ba"></a><br/></td></tr>
<tr class="memitem:a2fcc98fd7580932b218134126a29ce43 inherit pub_types_classBitmap"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fcc98fd7580932b218134126a29ce43"></a>
typedef PGM_VOID_P&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43">ProgMem</a></td></tr>
<tr class="memdesc:a2fcc98fd7580932b218134126a29ce43 inherit pub_types_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type that represents a bitmap within program memory. <br/></td></tr>
<tr class="memitem:a456f7d6da03189c1e7148563a891b3cf inherit pub_types_classBitmap"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a456f7d6da03189c1e7148563a891b3cf"></a>
typedef PGM_VOID_P&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf">Font</a></td></tr>
<tr class="memdesc:a456f7d6da03189c1e7148563a891b3cf inherit pub_types_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type that represents a font within program memory. <br/></td></tr>
<tr class="inherit_header pub_static_attribs_classBitmap"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classBitmap')"><img src="closed.png" alt="-"/>&nbsp;Static Public Attributes inherited from <a class="el" href="classBitmap.html">Bitmap</a></td></tr>
<tr class="memitem:a2c7faeeb89d3624b5bbca58871785adc inherit pub_static_attribs_classBitmap"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c7faeeb89d3624b5bbca58871785adc"></a>
static const <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a> = 0</td></tr>
<tr class="memdesc:a2c7faeeb89d3624b5bbca58871785adc inherit pub_static_attribs_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Color value corresponding to "black". <br/></td></tr>
<tr class="memitem:a39b6754cfe50a457bbfdb1980fd87eb7 inherit pub_static_attribs_classBitmap"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a> = 1</td></tr>
<tr class="memdesc:a39b6754cfe50a457bbfdb1980fd87eb7 inherit pub_static_attribs_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Color value corresponding to "white". If the bitmap is displayed on a LED array, then it may have a different physical color. <a href="#a39b6754cfe50a457bbfdb1980fd87eb7"></a><br/></td></tr>
<tr class="memitem:aa89170263dc1f51f6366c1907119715e inherit pub_static_attribs_classBitmap"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa89170263dc1f51f6366c1907119715e"></a>
static const <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">NoFill</a> = 2</td></tr>
<tr class="memdesc:aa89170263dc1f51f6366c1907119715e inherit pub_static_attribs_classBitmap"><td class="mdescLeft">&#160;</td><td class="mdescRight">Special color value that is used with <a class="el" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc" title="Draws a rectangle from (x1, y1) to (x2, y2), with the outline in borderColor and the interior filled ...">drawRect()</a> and <a class="el" href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa" title="Draws a circle with a specific center (centerX, centerY) and radius, with the outline in borderColor ...">drawCircle()</a> to indicate that the interior of the shape should not be filled. For all other uses, <a class="el" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">NoFill</a> is equivalent to <a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a>. <br/></td></tr>
</table> </table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Handle large dot matrix displays composed of LED's. </p> <div class="textblock"><p>Handle large dot matrix displays composed of LED's. </p>
<p>This class is designed for use with <a href="http://www.freetronics.com/dmd">Freetronics Large Dot Matrix Displays</a>. These displays have 512 LED's arranged in a 32x16 matrix and controlled by an SPI interface. The displays are available in red, blue, green, yellow, and white variations (for which this class always uses the constant <a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a> regardless of the physical color).</p> <p>This class is designed for use with <a href="http://www.freetronics.com/dmd">Freetronics Large Dot Matrix Displays</a>. These displays have 512 LED's arranged in a 32x16 matrix and controlled by an SPI interface. The displays are available in red, blue, green, yellow, and white variations (for which this class always uses the constant <a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a> regardless of the physical color).</p>
<h2><a class="anchor" id="dmd_drawing"></a> <h1><a class="anchor" id="dmd_drawing"></a>
Drawing</h2> Drawing</h1>
<p><a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> inherits from <a class="el" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> so that any of the drawing functions in that class can be used to draw directly to dot matrix displays. The following example initializes a single display panel and draws a rectangle and a circle into it at setup time:</p> <p><a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> inherits from <a class="el" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> so that any of the drawing functions in that class can be used to draw directly to dot matrix displays. The following example initializes a single display panel and draws a rectangle and a circle into it at setup time:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;DMD.h&gt;</span> <div class="fragment"><div class="line"><span class="preprocessor">#include &lt;DMD.h&gt;</span></div>
<div class="line"></div>
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display; <div class="line"><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display;</div>
<div class="line"></div>
<span class="keywordtype">void</span> setup() { <div class="line"><span class="keywordtype">void</span> setup() {</div>
display.<a class="code" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc" title="Draws a rectangle from (x1, y1) to (x2, y2), with the outline in borderColor and the interior filled ...">drawRect</a>(5, 2, 27, 13); <div class="line"> display.<a class="code" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc" title="Draws a rectangle from (x1, y1) to (x2, y2), with the outline in borderColor and the interior filled ...">drawRect</a>(5, 2, 27, 13);</div>
display.<a class="code" href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa" title="Draws a circle with a specific center (centerX, centerY) and radius, with the outline in borderColor ...">drawCircle</a>(16, 8, 4); <div class="line"> display.<a class="code" href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa" title="Draws a circle with a specific center (centerX, centerY) and radius, with the outline in borderColor ...">drawCircle</a>(16, 8, 4);</div>
} <div class="line">}</div>
</pre></div><p>The display must be updated frequently from the application's main loop:</p> </div><!-- fragment --><p>The display must be updated frequently from the application's main loop:</p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop</a>() { <div class="fragment"><div class="line"><span class="keywordtype">void</span> <a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop</a>() {</div>
display.<a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop</a>(); <div class="line"> display.<a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop</a>();</div>
} <div class="line">}</div>
</pre></div><h2><a class="anchor" id="dmd_interrupts"></a> </div><!-- fragment --><h1><a class="anchor" id="dmd_interrupts"></a>
Interrupt-driven display refresh</h2> Interrupt-driven display refresh</h1>
<p>The <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop()</a> method simplifies updating the display from the application's main loop but it can sometimes be inconvenient to arrange for it to be called regularly, especially if the application wishes to use <code>delay()</code> or <code>delayMicroseconds()</code>.</p> <p>The <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop()</a> method simplifies updating the display from the application's main loop but it can sometimes be inconvenient to arrange for it to be called regularly, especially if the application wishes to use <code>delay()</code> or <code>delayMicroseconds()</code>.</p>
<p><a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> provides an asynchronous display update mechanism using Timer1 interrupts. The application turns on interrupts using <a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1()</a> and then calls <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> from the interrupt service routine:</p> <p><a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> provides an asynchronous display update mechanism using Timer1 interrupts. The application turns on interrupts using <a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1()</a> and then calls <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> from the interrupt service routine:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;DMD.h&gt;</span> <div class="fragment"><div class="line"><span class="preprocessor">#include &lt;DMD.h&gt;</span></div>
<div class="line"></div>
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display; <div class="line"><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display;</div>
<div class="line"></div>
ISR(TIMER1_OVF_vect) <div class="line">ISR(TIMER1_OVF_vect)</div>
{ <div class="line">{</div>
display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>(); <div class="line"> display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();</div>
} <div class="line">}</div>
<div class="line"></div>
<span class="keywordtype">void</span> setup() { <div class="line"><span class="keywordtype">void</span> setup() {</div>
display.<a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1</a>(); <div class="line"> display.<a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1</a>();</div>
} <div class="line">}</div>
</pre></div><p>If Timer1 is already in use by some other part of your application, then Timer2 can be used as an alternative interrupt source:</p> </div><!-- fragment --><p>If Timer1 is already in use by some other part of your application, then Timer2 can be used as an alternative interrupt source:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;DMD.h&gt;</span> <div class="fragment"><div class="line"><span class="preprocessor">#include &lt;DMD.h&gt;</span></div>
<div class="line"></div>
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display; <div class="line"><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display;</div>
<div class="line"></div>
ISR(TIMER2_OVF_vect) <div class="line">ISR(TIMER2_OVF_vect)</div>
{ <div class="line">{</div>
display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>(); <div class="line"> display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();</div>
} <div class="line">}</div>
<div class="line"></div>
<span class="keywordtype">void</span> setup() { <div class="line"><span class="keywordtype">void</span> setup() {</div>
display.<a class="code" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">enableTimer2</a>(); <div class="line"> display.<a class="code" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">enableTimer2</a>();</div>
} <div class="line">}</div>
</pre></div><p><a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> can also be used with third-party timer libraries such as <a href="http://code.google.com/p/arduino-timerone/downloads/list">TimerOne</a>:</p> </div><!-- fragment --><p><a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> can also be used with third-party timer libraries such as <a href="http://code.google.com/p/arduino-timerone/downloads/list">TimerOne</a>:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;DMD.h&gt;</span> <div class="fragment"><div class="line"><span class="preprocessor">#include &lt;DMD.h&gt;</span></div>
<span class="preprocessor"> #include &lt;TimerOne.h&gt;</span> <div class="line"><span class="preprocessor">#include &lt;TimerOne.h&gt;</span></div>
<div class="line"></div>
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display; <div class="line"><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display;</div>
<div class="line"></div>
<span class="keywordtype">void</span> refreshDisplay() <div class="line"><span class="keywordtype">void</span> refreshDisplay()</div>
{ <div class="line">{</div>
display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>(); <div class="line"> display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();</div>
} <div class="line">}</div>
<div class="line"></div>
<span class="keywordtype">void</span> setup() { <div class="line"><span class="keywordtype">void</span> setup() {</div>
Timer1.initialize(5000); <div class="line"> Timer1.initialize(5000);</div>
Timer1.attachInterrupt(refreshDisplay); <div class="line"> Timer1.attachInterrupt(refreshDisplay);</div>
} <div class="line">}</div>
</pre></div><h2><a class="anchor" id="dmd_double_buffer"></a> </div><!-- fragment --><h1><a class="anchor" id="dmd_double_buffer"></a>
Double buffering</h2> Double buffering</h1>
<p>When using interrupts, the system can sometimes exhibit "tearing" artifacts where half-finished images are displayed because an interrupt fired in the middle of a screen update.</p> <p>When using interrupts, the system can sometimes exhibit "tearing" artifacts where half-finished images are displayed because an interrupt fired in the middle of a screen update.</p>
<p>This problem can be alleviated using double buffering: all rendering is done to an off-screen buffer that is swapped onto the screen once it is ready for display. Rendering then switches to the other buffer that is now off-screen. The following example demonstrates this:</p> <p>This problem can be alleviated using double buffering: all rendering is done to an off-screen buffer that is swapped onto the screen once it is ready for display. Rendering then switches to the other buffer that is now off-screen. The following example demonstrates this:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;DMD.h&gt;</span> <div class="fragment"><div class="line"><span class="preprocessor">#include &lt;DMD.h&gt;</span></div>
<div class="line"></div>
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display; <div class="line"><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display;</div>
<div class="line"></div>
ISR(TIMER1_OVF_vect) <div class="line">ISR(TIMER1_OVF_vect)</div>
{ <div class="line">{</div>
display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>(); <div class="line"> display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();</div>
} <div class="line">}</div>
<div class="line"></div>
<span class="keywordtype">void</span> setup() { <div class="line"><span class="keywordtype">void</span> setup() {</div>
display.<a class="code" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer</a>(<span class="keyword">true</span>); <div class="line"> display.<a class="code" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer</a>(<span class="keyword">true</span>);</div>
display.<a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1</a>(); <div class="line"> display.<a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1</a>();</div>
} <div class="line">}</div>
<div class="line"></div>
<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop</a>() { <div class="line"><span class="keywordtype">void</span> <a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop</a>() {</div>
updateDisplay(); <div class="line"> updateDisplay();</div>
display.<a class="code" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers</a>(); <div class="line"> display.<a class="code" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers</a>();</div>
delay(50); <span class="comment">// Delay between frames.</span> <div class="line"> delay(50); <span class="comment">// Delay between frames.</span></div>
} <div class="line">}</div>
<div class="line"></div>
<span class="keywordtype">void</span> updateDisplay() { <div class="line"><span class="keywordtype">void</span> updateDisplay() {</div>
<span class="comment">// Draw the new display contents into the off-screen buffer.</span> <div class="line"> <span class="comment">// Draw the new display contents into the off-screen buffer.</span></div>
display.<a class="code" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1" title="Clears the entire bitmap to the specified color.">clear</a>(); <div class="line"> display.<a class="code" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1" title="Clears the entire bitmap to the specified color.">clear</a>();</div>
... <div class="line"> ...</div>
} <div class="line">}</div>
</pre></div><p>The downside of double buffering is that it uses twice as much main memory to manage the contents of the screen.</p> </div><!-- fragment --><p>The downside of double buffering is that it uses twice as much main memory to manage the contents of the screen.</p>
<h2><a class="anchor" id="dmd_multi"></a> <h1><a class="anchor" id="dmd_multi"></a>
Multiple panels</h2> Multiple panels</h1>
<p>Multiple panels can be daisy-chained together using ribbon cables. If there is a single row of panels, then they must be connected to the Arduino board as follows:</p> <p>Multiple panels can be daisy-chained together using ribbon cables. If there is a single row of panels, then they must be connected to the Arduino board as follows:</p>
<div class="image"> <div class="image">
<img src="dmd-4x1.png" alt="dmd-4x1.png"/> <img src="dmd-4x1.png" alt="dmd-4x1.png"/>
@@ -223,15 +345,18 @@ Multiple panels</h2>
<img src="dmd-4x3.png" alt="dmd-4x3.png"/> <img src="dmd-4x3.png" alt="dmd-4x3.png"/>
</div> </div>
<p><a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> automatically takes care of flipping the data for panels in the alternating rows. No special action is required by the user except to physically connect the panels as shown and to initialize the <a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> class appropriately:</p> <p><a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> automatically takes care of flipping the data for panels in the alternating rows. No special action is required by the user except to physically connect the panels as shown and to initialize the <a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> class appropriately:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;DMD.h&gt;</span> <div class="fragment"><div class="line"><span class="preprocessor">#include &lt;DMD.h&gt;</span></div>
<div class="line"></div>
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display(4, 2); <span class="comment">// 4 panels wide, 2 panels high</span> <div class="line"><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display(4, 2); <span class="comment">// 4 panels wide, 2 panels high</span></div>
</pre></div> </div><!-- fragment -->
<p>Definition at line <a class="el" href="DMD_8h_source.html#l00028">28</a> of file <a class="el" href="DMD_8h_source.html">DMD.h</a>.</p> <p>Definition at line <a class="el" href="DMD_8h_source.html#l00028">28</a> of file <a class="el" href="DMD_8h_source.html">DMD.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2> </div><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="affd37accffe951c8878434dfa1245809"></a><!-- doxytag: member="DMD::DMD" ref="affd37accffe951c8878434dfa1245809" args="(int widthPanels=1, int heightPanels=1)" --> <a class="anchor" id="affd37accffe951c8878434dfa1245809"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">DMD::DMD </td> <td class="memname">DMD::DMD </td>
@@ -248,22 +373,26 @@ Multiple panels</h2>
<tr> <tr>
<td></td> <td></td>
<td>)</td> <td>)</td>
<td></td><td><code> [explicit]</code></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructs a new dot matrix display handler for a display that is <em>widthPanels</em> x <em>heightPanels</em> in size. </p> <p>Constructs a new dot matrix display handler for a display that is <em>widthPanels</em> x <em>heightPanels</em> in size. </p>
<p>Note: the parameters to this constructor are specified in panels, whereas <a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523" title="Returns the width of the bitmap in pixels.">width()</a> and <a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3" title="Returns the height of the bitmap in pixels.">height()</a> are specified in pixels.</p> <p>Note: the parameters to this constructor are specified in panels, whereas <a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523" title="Returns the width of the bitmap in pixels.">width()</a> and <a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3" title="Returns the height of the bitmap in pixels.">height()</a> are specified in pixels.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523" title="Returns the width of the bitmap in pixels.">width()</a>, <a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3" title="Returns the height of the bitmap in pixels.">height()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523" title="Returns the width of the bitmap in pixels.">width()</a>, <a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3" title="Returns the height of the bitmap in pixels.">height()</a> </dd></dl>
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00237">237</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p> <p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00237">237</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
</div> </div>
</div> </div>
<hr/><h2>Member Function Documentation</h2> <h2>Member Function Documentation</h2>
<a class="anchor" id="a39af27e216f654ecc7e60b0614cb6b33"></a><!-- doxytag: member="DMD::disableTimer1" ref="a39af27e216f654ecc7e60b0614cb6b33" args="()" --> <a class="anchor" id="a39af27e216f654ecc7e60b0614cb6b33"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -274,17 +403,16 @@ Multiple panels</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Disables Timer1 overflow interrupts. </p> <p>Disables Timer1 overflow interrupts. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1()</a> </dd></dl>
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00614">614</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p> <p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00614">614</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a52fe885bfb380b74df54c96221811cff"></a><!-- doxytag: member="DMD::disableTimer2" ref="a52fe885bfb380b74df54c96221811cff" args="()" --> <a class="anchor" id="a52fe885bfb380b74df54c96221811cff"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -295,38 +423,44 @@ Multiple panels</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Disables Timer2 overflow interrupts. </p> <p>Disables Timer2 overflow interrupts. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">enableTimer2()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">enableTimer2()</a> </dd></dl>
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00674">674</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p> <p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00674">674</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="aab1f3ba29c053d630ae12865d22166ec"></a><!-- doxytag: member="DMD::doubleBuffer" ref="aab1f3ba29c053d630ae12865d22166ec" args="() const " --> <a class="anchor" id="aab1f3ba29c053d630ae12865d22166ec"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">bool DMD::doubleBuffer </td> <td class="memname">bool DMD::doubleBuffer </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if the display is double-buffered; false if single-buffered. The default is false. </p> <p>Returns true if the display is double-buffered; false if single-buffered. The default is false. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a>, <a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a>, <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a>, <a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a>, <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> </dd></dl>
<p>Definition at line <a class="el" href="DMD_8h_source.html#l00034">34</a> of file <a class="el" href="DMD_8h_source.html">DMD.h</a>.</p> <p>Definition at line <a class="el" href="DMD_8h_source.html#l00034">34</a> of file <a class="el" href="DMD_8h_source.html">DMD.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a4c3b04b384f3d656a9b59690836775e2"></a><!-- doxytag: member="DMD::enableTimer1" ref="a4c3b04b384f3d656a9b59690836775e2" args="()" --> <a class="anchor" id="a4c3b04b384f3d656a9b59690836775e2"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -337,31 +471,30 @@ Multiple panels</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Enables Timer1 overflow interrupts for updating this display. </p> <p>Enables Timer1 overflow interrupts for updating this display. </p>
<p>The application must also provide an interrupt service routine for Timer1 that calls <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a>:</p> <p>The application must also provide an interrupt service routine for Timer1 that calls <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a>:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;DMD.h&gt;</span> <div class="fragment"><div class="line"><span class="preprocessor">#include &lt;DMD.h&gt;</span></div>
<div class="line"></div>
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display; <div class="line"><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display;</div>
<div class="line"></div>
ISR(TIMER1_OVF_vect) <div class="line">ISR(TIMER1_OVF_vect)</div>
{ <div class="line">{</div>
display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>(); <div class="line"> display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();</div>
} <div class="line">}</div>
<div class="line"></div>
<span class="keywordtype">void</span> setup() { <div class="line"><span class="keywordtype">void</span> setup() {</div>
display.<a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1</a>(); <div class="line"> display.<a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1</a>();</div>
} <div class="line">}</div>
</pre></div><p>If timer interrupts are being used to update the display, then it is unnecessary to call <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop()</a>.</p> </div><!-- fragment --><p>If timer interrupts are being used to update the display, then it is unnecessary to call <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a>, <a class="el" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33" title="Disables Timer1 overflow interrupts.">disableTimer1()</a>, <a class="el" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">enableTimer2()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a>, <a class="el" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33" title="Disables Timer1 overflow interrupts.">disableTimer1()</a>, <a class="el" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">enableTimer2()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> </dd></dl>
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00563">563</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p> <p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00563">563</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a5469775db7fafebca2cdbc6a6372fb97"></a><!-- doxytag: member="DMD::enableTimer2" ref="a5469775db7fafebca2cdbc6a6372fb97" args="()" --> <a class="anchor" id="a5469775db7fafebca2cdbc6a6372fb97"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -372,33 +505,35 @@ Multiple panels</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Enables Timer2 overflow interrupts for updating this display. </p> <p>Enables Timer2 overflow interrupts for updating this display. </p>
<p>The application must also provide an interrupt service routine for Timer2 that calls <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a>:</p> <p>The application must also provide an interrupt service routine for Timer2 that calls <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a>:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;DMD.h&gt;</span> <div class="fragment"><div class="line"><span class="preprocessor">#include &lt;DMD.h&gt;</span></div>
<div class="line"></div>
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display; <div class="line"><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display;</div>
<div class="line"></div>
ISR(TIMER2_OVF_vect) <div class="line">ISR(TIMER2_OVF_vect)</div>
{ <div class="line">{</div>
display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>(); <div class="line"> display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();</div>
} <div class="line">}</div>
<div class="line"></div>
<span class="keywordtype">void</span> setup() { <div class="line"><span class="keywordtype">void</span> setup() {</div>
display.<a class="code" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">enableTimer2</a>(); <div class="line"> display.<a class="code" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">enableTimer2</a>();</div>
} <div class="line">}</div>
</pre></div><p>If timer interrupts are being used to update the display, then it is unnecessary to call <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop()</a>.</p> </div><!-- fragment --><p>If timer interrupts are being used to update the display, then it is unnecessary to call <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a>, <a class="el" href="classDMD.html#a52fe885bfb380b74df54c96221811cff" title="Disables Timer2 overflow interrupts.">disableTimer2()</a>, <a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a>, <a class="el" href="classDMD.html#a52fe885bfb380b74df54c96221811cff" title="Disables Timer2 overflow interrupts.">disableTimer2()</a>, <a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> </dd></dl>
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00646">646</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p> <p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00646">646</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a557412f734fc4596e1102bf71e110ea0"></a><!-- doxytag: member="DMD::fromRGB" ref="a557412f734fc4596e1102bf71e110ea0" args="(uint8_t r, uint8_t g, uint8_t b)" --> <a class="anchor" id="a557412f734fc4596e1102bf71e110ea0"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname"><a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">DMD::Color</a> DMD::fromRGB </td> <td class="memname"><a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">DMD::Color</a> DMD::fromRGB </td>
@@ -421,11 +556,15 @@ Multiple panels</h2>
<tr> <tr>
<td></td> <td></td>
<td>)</td> <td>)</td>
<td></td><td><code> [static]</code></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Converts an RGB value into a pixel color value. </p> <p>Converts an RGB value into a pixel color value. </p>
<p>Returns <a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a> if any of <em>r</em>, <em>g</em>, or <em>b</em> are non-zero; otherwise returns <a class="el" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a>.</p> <p>Returns <a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a> if any of <em>r</em>, <em>g</em>, or <em>b</em> are non-zero; otherwise returns <a class="el" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a>.</p>
@@ -435,7 +574,7 @@ Multiple panels</h2>
</div> </div>
</div> </div>
<a class="anchor" id="a2c74a0845ef6080056b972d490648114"></a><!-- doxytag: member="DMD::loop" ref="a2c74a0845ef6080056b972d490648114" args="()" --> <a class="anchor" id="a2c74a0845ef6080056b972d490648114"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -446,23 +585,22 @@ Multiple panels</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Performs regular display refresh activities from the application's main loop. </p> <p>Performs regular display refresh activities from the application's main loop. </p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display; <div class="fragment"><div class="line"><a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED&#39;s.">DMD</a> display;</div>
<div class="line"></div>
<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop</a>() { <div class="line"><span class="keywordtype">void</span> <a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop</a>() {</div>
display.<a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop</a>(); <div class="line"> display.<a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop</a>();</div>
} <div class="line">}</div>
</pre></div><p>If you are using a timer interrupt service routine, then call <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> in response to the interrupt instead of calling <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop()</a>.</p> </div><!-- fragment --><p>If you are using a timer interrupt service routine, then call <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> in response to the interrupt instead of calling <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> </dd></dl>
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00420">420</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p> <p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00420">420</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a9e4bf2a9d247312d35c1401ff61261c8"></a><!-- doxytag: member="DMD::refresh" ref="a9e4bf2a9d247312d35c1401ff61261c8" args="()" --> <a class="anchor" id="a9e4bf2a9d247312d35c1401ff61261c8"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -473,19 +611,18 @@ Multiple panels</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Refresh the display. </p> <p>Refresh the display. </p>
<p>This function must be called at least once every 5 milliseconds for smooth non-flickering update of the display. It is usually called by <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop()</a>, but can also be called in response to a timer interrupt.</p> <p>This function must be called at least once every 5 milliseconds for smooth non-flickering update of the display. It is usually called by <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop()</a>, but can also be called in response to a timer interrupt.</p>
<p>If this function is called from an interrupt service routine, then it is recommended that double-buffering be enabled with <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> to prevent "tearing" artifacts that result from simultaneous update of a single shared buffer.</p> <p>If this function is called from an interrupt service routine, then it is recommended that double-buffering be enabled with <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> to prevent "tearing" artifacts that result from simultaneous update of a single shared buffer.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a>, <a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application&#39;s main loop.">loop()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a>, <a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1()</a> </dd></dl>
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00478">478</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p> <p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00478">478</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a6fbdcf8832f91d02500cb7a9b84d2723"></a><!-- doxytag: member="DMD::setDoubleBuffer" ref="a6fbdcf8832f91d02500cb7a9b84d2723" args="(bool doubleBuffer)" --> <a class="anchor" id="a6fbdcf8832f91d02500cb7a9b84d2723"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -497,20 +634,19 @@ Multiple panels</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Enables or disables double-buffering according to <em>doubleBuffer</em>. </p> <p>Enables or disables double-buffering according to <em>doubleBuffer</em>. </p>
<p>When double-buffering is enabled, rendering operations are sent to a memory buffer that isn't currently displayed on-screen. Once the application has completed the screen update, it calls <a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a> to display the current buffer and switch rendering to the other now invisible buffer.</p> <p>When double-buffering is enabled, rendering operations are sent to a memory buffer that isn't currently displayed on-screen. Once the application has completed the screen update, it calls <a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a> to display the current buffer and switch rendering to the other now invisible buffer.</p>
<p>Double-buffering is recommended if <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> is being called from an interrupt service routine, to prevent "tearing" artifacts that result from simultaneous update of a single shared buffer.</p> <p>Double-buffering is recommended if <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> is being called from an interrupt service routine, to prevent "tearing" artifacts that result from simultaneous update of a single shared buffer.</p>
<p>This function will allocate memory for the extra buffer when <em>doubleBuffer</em> is true. If there is insufficient memory for the second screen buffer, then this class will revert to single-buffered mode.</p> <p>This function will allocate memory for the extra buffer when <em>doubleBuffer</em> is true. If there is insufficient memory for the second screen buffer, then this class will revert to single-buffered mode.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec" title="Returns true if the display is double-buffered; false if single-buffered. The default is false...">doubleBuffer()</a>, <a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a>, <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec" title="Returns true if the display is double-buffered; false if single-buffered. The default is false...">doubleBuffer()</a>, <a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a>, <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> </dd></dl>
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00314">314</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p> <p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00314">314</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a80269ccd44b3ef9ee15f0a1009b7a60a"></a><!-- doxytag: member="DMD::swapBuffers" ref="a80269ccd44b3ef9ee15f0a1009b7a60a" args="()" --> <a class="anchor" id="a80269ccd44b3ef9ee15f0a1009b7a60a"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -521,19 +657,18 @@ Multiple panels</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Swaps the buffers that are used for rendering to the display. </p> <p>Swaps the buffers that are used for rendering to the display. </p>
<p>When <a class="el" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec" title="Returns true if the display is double-buffered; false if single-buffered. The default is false...">doubleBuffer()</a> is false, this function does nothing. Otherwise the front and back rendering buffers are swapped. See the description of <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> for more information.</p> <p>When <a class="el" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec" title="Returns true if the display is double-buffered; false if single-buffered. The default is false...">doubleBuffer()</a> is false, this function does nothing. Otherwise the front and back rendering buffers are swapped. See the description of <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> for more information.</p>
<p>The new rendering back buffer will have undefined contents and will probably need to be re-inialized with <a class="el" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1" title="Clears the entire bitmap to the specified color.">clear()</a> or <a class="el" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2" title="Fills the width x height pixels starting at top-left corner (x, y) with color.">fill()</a> before drawing to it. The <a class="el" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736" title="Swaps the buffers that are used for rendering to the display and copies the former back buffer conten...">swapBuffersAndCopy()</a> function can be used instead to preserve the screen contents from one frame to the next.</p> <p>The new rendering back buffer will have undefined contents and will probably need to be re-inialized with <a class="el" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1" title="Clears the entire bitmap to the specified color.">clear()</a> or <a class="el" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2" title="Fills the width x height pixels starting at top-left corner (x, y) with color.">fill()</a> before drawing to it. The <a class="el" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736" title="Swaps the buffers that are used for rendering to the display and copies the former back buffer conten...">swapBuffersAndCopy()</a> function can be used instead to preserve the screen contents from one frame to the next.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736" title="Swaps the buffers that are used for rendering to the display and copies the former back buffer conten...">swapBuffersAndCopy()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736" title="Swaps the buffers that are used for rendering to the display and copies the former back buffer conten...">swapBuffersAndCopy()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> </dd></dl>
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00363">363</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p> <p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00363">363</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a0b1771cf790b2b62eea55e56b02e3736"></a><!-- doxytag: member="DMD::swapBuffersAndCopy" ref="a0b1771cf790b2b62eea55e56b02e3736" args="()" --> <a class="anchor" id="a0b1771cf790b2b62eea55e56b02e3736"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -544,13 +679,12 @@ Multiple panels</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Swaps the buffers that are used for rendering to the display and copies the former back buffer contents to the new back buffer. </p> <p>Swaps the buffers that are used for rendering to the display and copies the former back buffer contents to the new back buffer. </p>
<p>Normally when <a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a> is called, the new rendering back buffer will have undefined contents from two frames prior and must be cleared with <a class="el" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1" title="Clears the entire bitmap to the specified color.">clear()</a> or <a class="el" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2" title="Fills the width x height pixels starting at top-left corner (x, y) with color.">fill()</a> before writing new contents to it. This function instead copies the previous frame into the new rendering buffer so that it can be updated in-place.</p> <p>Normally when <a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a> is called, the new rendering back buffer will have undefined contents from two frames prior and must be cleared with <a class="el" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1" title="Clears the entire bitmap to the specified color.">clear()</a> or <a class="el" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2" title="Fills the width x height pixels starting at top-left corner (x, y) with color.">fill()</a> before writing new contents to it. This function instead copies the previous frame into the new rendering buffer so that it can be updated in-place.</p>
<p>This function is useful if the screen does not change much from one frame to the next. If the screen changes a lot between frames, then it is usually better to explicitly <a class="el" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1" title="Clears the entire bitmap to the specified color.">clear()</a> or <a class="el" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2" title="Fills the width x height pixels starting at top-left corner (x, y) with color.">fill()</a> the new back buffer.</p> <p>This function is useful if the screen does not change much from one frame to the next. If the screen changes a lot between frames, then it is usually better to explicitly <a class="el" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1" title="Clears the entire bitmap to the specified color.">clear()</a> or <a class="el" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2" title="Fills the width x height pixels starting at top-left corner (x, y) with color.">fill()</a> the new back buffer.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> </dd></dl>
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00396">396</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p> <p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00396">396</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
@@ -560,23 +694,12 @@ Multiple panels</h2>
<li><a class="el" href="DMD_8h_source.html">DMD.h</a></li> <li><a class="el" href="DMD_8h_source.html">DMD.h</a></li>
<li><a class="el" href="DMD_8cpp_source.html">DMD.cpp</a></li> <li><a class="el" href="DMD_8cpp_source.html">DMD.cpp</a></li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 B

After

Width:  |  Height:  |  Size: 329 B

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,52 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">DS1307RTC Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classDS1307RTC.html">DS1307RTC</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d">adjustDays</a>(RTCDate *date, uint8_t flags)</td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4">adjustMonths</a>(RTCDate *date, uint8_t flags)</td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d">adjustYears</a>(RTCDate *date, uint8_t flags)</td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">ALARM_COUNT</a></td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248">byteCount</a>() const </td><td><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#a525a9c1dad89613708f47a683eb316aa">dayOfWeek</a>(const RTCDate *date)</td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11">DayOfWeek</a> enum name</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f">DECREMENT</a></td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS1307RTC.html#a092805d75bea323dc4be062638bff866">DS1307RTC</a>(I2CMaster &amp;bus, uint8_t oneHzPin=255)</td><td><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Friday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0">hasUpdates</a>()</td><td><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#aacbe3ebbf893685950b05327c11d5c37">INCREMENT</a></td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS1307RTC.html#aba01ca4c2f7863b610e5dfe9146886bd">isRealTime</a>() const </td><td><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Monday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8">NO_TEMPERATURE</a></td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a">readAlarm</a>(uint8_t alarmNum, RTCAlarm *value)</td><td><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a">readByte</a>(uint8_t offset)</td><td><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4">readDate</a>(RTCDate *value)</td><td><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#aeca3c8387332e8cabfd09c1806276e5a">readTemperature</a>()</td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6">readTime</a>(RTCTime *value)</td><td><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#ada31c5120d18d2dd2863b3d440308da2">RTC</a>()</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Saturday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Sunday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Thursday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Tuesday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Wednesday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#a02ace2d775063be9a99035851c9274eb">WRAP</a></td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75">writeAlarm</a>(uint8_t alarmNum, const RTCAlarm *value)</td><td><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6">writeByte</a>(uint8_t offset, uint8_t value)</td><td><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230">writeDate</a>(const RTCDate *value)</td><td><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8">writeTime</a>(const RTCTime *value)</td><td><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><b>~RTC</b>() (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -112,8 +80,53 @@ This is the complete list of members for <a class="el" href="classDS1307RTC.html
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">DS1307RTC Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classDS1307RTC.html">DS1307RTC</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d">adjustDays</a>(RTCDate *date, uint8_t flags)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4">adjustMonths</a>(RTCDate *date, uint8_t flags)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d">adjustYears</a>(RTCDate *date, uint8_t flags)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">ALARM_COUNT</a></td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248">byteCount</a>() const </td><td class="entry"><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classRTC.html#a525a9c1dad89613708f47a683eb316aa">dayOfWeek</a>(const RTCDate *date)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11">DayOfWeek</a> enum name</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f">DECREMENT</a></td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS1307RTC.html#a092805d75bea323dc4be062638bff866">DS1307RTC</a>(I2CMaster &amp;bus, uint8_t oneHzPin=255)</td><td class="entry"><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Friday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0">hasUpdates</a>()</td><td class="entry"><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classRTC.html#aacbe3ebbf893685950b05327c11d5c37">INCREMENT</a></td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS1307RTC.html#aba01ca4c2f7863b610e5dfe9146886bd">isRealTime</a>() const </td><td class="entry"><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Monday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8">NO_TEMPERATURE</a></td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a">readAlarm</a>(uint8_t alarmNum, RTCAlarm *value)</td><td class="entry"><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a">readByte</a>(uint8_t offset)</td><td class="entry"><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4">readDate</a>(RTCDate *value)</td><td class="entry"><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRTC.html#aeca3c8387332e8cabfd09c1806276e5a">readTemperature</a>()</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6">readTime</a>(RTCTime *value)</td><td class="entry"><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRTC.html#ada31c5120d18d2dd2863b3d440308da2">RTC</a>()</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Saturday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"class="even"><td class="entry"><b>Sunday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Thursday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"class="even"><td class="entry"><b>Tuesday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Wednesday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRTC.html#a02ace2d775063be9a99035851c9274eb">WRAP</a></td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75">writeAlarm</a>(uint8_t alarmNum, const RTCAlarm *value)</td><td class="entry"><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6">writeByte</a>(uint8_t offset, uint8_t value)</td><td class="entry"><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230">writeDate</a>(const RTCDate *value)</td><td class="entry"><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8">writeTime</a>(const RTCTime *value)</td><td class="entry"><a class="el" href="classDS1307RTC.html">DS1307RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>~RTC</b>() (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: DS1307RTC Class Reference</title> <title>ArduinoLibs: DS1307RTC Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,15 +66,30 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div> <a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classDS1307RTC-members.html">List of all members</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">DS1307RTC Class Reference</div> </div> <div class="title">DS1307RTC Class Reference</div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<!-- doxytag: class="DS1307RTC" --><!-- doxytag: inherits="RTC" -->
<p>Communicates with a DS1307 realtime clock chip via I2C. <p>Communicates with a DS1307 realtime clock chip via I2C.
<a href="classDS1307RTC.html#details">More...</a></p> <a href="classDS1307RTC.html#details">More...</a></p>
@@ -80,48 +103,92 @@ Inheritance diagram for DS1307RTC:</div>
<area href="classRTC.html" title="Base class for realtime clock handlers." alt="RTC" shape="rect" coords="0,0,81,24"/> <area href="classRTC.html" title="Base class for realtime clock handlers." alt="RTC" shape="rect" coords="0,0,81,24"/>
</map> </map>
</div></div> </div></div>
<p><a href="classDS1307RTC-members.html">List of all members.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr> Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a092805d75bea323dc4be062638bff866">DS1307RTC</a> (<a class="el" href="classI2CMaster.html">I2CMaster</a> &amp;bus, uint8_t oneHzPin=255)</td></tr> <tr class="memitem:a092805d75bea323dc4be062638bff866"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a092805d75bea323dc4be062638bff866">DS1307RTC</a> (<a class="el" href="classI2CMaster.html">I2CMaster</a> &amp;bus, uint8_t oneHzPin=255)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Attaches to a realtime clock slave device on <em>bus</em>. <a href="#a092805d75bea323dc4be062638bff866"></a><br/></td></tr> <tr class="memdesc:a092805d75bea323dc4be062638bff866"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attaches to a realtime clock slave device on <em>bus</em>. <a href="#a092805d75bea323dc4be062638bff866"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba01ca4c2f7863b610e5dfe9146886bd"></a><!-- doxytag: member="DS1307RTC::isRealTime" ref="aba01ca4c2f7863b610e5dfe9146886bd" args="() const " --> <tr class="memitem:aba01ca4c2f7863b610e5dfe9146886bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba01ca4c2f7863b610e5dfe9146886bd"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#aba01ca4c2f7863b610e5dfe9146886bd">isRealTime</a> () const </td></tr> bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#aba01ca4c2f7863b610e5dfe9146886bd">isRealTime</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the realtime clock is on the I2C bus; false if the time and date are simulated. <br/></td></tr> <tr class="memdesc:aba01ca4c2f7863b610e5dfe9146886bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the realtime clock is on the I2C bus; false if the time and date are simulated. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0">hasUpdates</a> ()</td></tr> <tr class="memitem:a6fec8ff71f33cc1a129eb0bd009600b0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0">hasUpdates</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the realtime clock has updated since the last call to this function. <a href="#a6fec8ff71f33cc1a129eb0bd009600b0"></a><br/></td></tr> <tr class="memdesc:a6fec8ff71f33cc1a129eb0bd009600b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the realtime clock has updated since the last call to this function. <a href="#a6fec8ff71f33cc1a129eb0bd009600b0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6">readTime</a> (<a class="el" href="structRTCTime.html">RTCTime</a> *value)</td></tr> <tr class="memitem:acd9800d6df2244b8e4e790480a1d62a6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6">readTime</a> (<a class="el" href="structRTCTime.html">RTCTime</a> *value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the current time from the realtime clock into <em>value</em>. <a href="#acd9800d6df2244b8e4e790480a1d62a6"></a><br/></td></tr> <tr class="memdesc:acd9800d6df2244b8e4e790480a1d62a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the current time from the realtime clock into <em>value</em>. <a href="#acd9800d6df2244b8e4e790480a1d62a6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4">readDate</a> (<a class="el" href="structRTCDate.html">RTCDate</a> *value)</td></tr> <tr class="memitem:a6fb56d1690bc30e7995961a5b5e5fdc4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4">readDate</a> (<a class="el" href="structRTCDate.html">RTCDate</a> *value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the current date from the realtime clock into <em>value</em>. <a href="#a6fb56d1690bc30e7995961a5b5e5fdc4"></a><br/></td></tr> <tr class="memdesc:a6fb56d1690bc30e7995961a5b5e5fdc4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the current date from the realtime clock into <em>value</em>. <a href="#a6fb56d1690bc30e7995961a5b5e5fdc4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8">writeTime</a> (const <a class="el" href="structRTCTime.html">RTCTime</a> *value)</td></tr> <tr class="memitem:a0a5d0d86a0345420ebb289ea724b19e8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8">writeTime</a> (const <a class="el" href="structRTCTime.html">RTCTime</a> *value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the time in the realtime clock to match <em>value</em>. <a href="#a0a5d0d86a0345420ebb289ea724b19e8"></a><br/></td></tr> <tr class="memdesc:a0a5d0d86a0345420ebb289ea724b19e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the time in the realtime clock to match <em>value</em>. <a href="#a0a5d0d86a0345420ebb289ea724b19e8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230">writeDate</a> (const <a class="el" href="structRTCDate.html">RTCDate</a> *value)</td></tr> <tr class="memitem:a4f7346be33612cf9ecd96080eb046230"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230">writeDate</a> (const <a class="el" href="structRTCDate.html">RTCDate</a> *value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the date in the realtime clock to match <em>value</em>. <a href="#a4f7346be33612cf9ecd96080eb046230"></a><br/></td></tr> <tr class="memdesc:a4f7346be33612cf9ecd96080eb046230"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the date in the realtime clock to match <em>value</em>. <a href="#a4f7346be33612cf9ecd96080eb046230"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a">readAlarm</a> (uint8_t alarmNum, <a class="el" href="structRTCAlarm.html">RTCAlarm</a> *value)</td></tr> <tr class="memitem:aab608eb1630520ee122306b721fdc47a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a">readAlarm</a> (uint8_t alarmNum, <a class="el" href="structRTCAlarm.html">RTCAlarm</a> *value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the details of the alarm with index <em>alarmNum</em> into <em>value</em>. <a href="#aab608eb1630520ee122306b721fdc47a"></a><br/></td></tr> <tr class="memdesc:aab608eb1630520ee122306b721fdc47a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the details of the alarm with index <em>alarmNum</em> into <em>value</em>. <a href="#aab608eb1630520ee122306b721fdc47a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75">writeAlarm</a> (uint8_t alarmNum, const <a class="el" href="structRTCAlarm.html">RTCAlarm</a> *value)</td></tr> <tr class="memitem:a7354aed91d7c94d0d7b2144b1bf32c75"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75">writeAlarm</a> (uint8_t alarmNum, const <a class="el" href="structRTCAlarm.html">RTCAlarm</a> *value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the details of the alarm with index <em>alarmNum</em> from <em>value</em>. <a href="#a7354aed91d7c94d0d7b2144b1bf32c75"></a><br/></td></tr> <tr class="memdesc:a7354aed91d7c94d0d7b2144b1bf32c75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the details of the alarm with index <em>alarmNum</em> from <em>value</em>. <a href="#a7354aed91d7c94d0d7b2144b1bf32c75"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248">byteCount</a> () const </td></tr> <tr class="memitem:a93c25269a9b78ab3331354db26672248"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248">byteCount</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings, excluding storage used by alarms. <a href="#a93c25269a9b78ab3331354db26672248"></a><br/></td></tr> <tr class="memdesc:a93c25269a9b78ab3331354db26672248"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings, excluding storage used by alarms. <a href="#a93c25269a9b78ab3331354db26672248"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a">readByte</a> (uint8_t offset)</td></tr> <tr class="memitem:a7364609a201022688778ab116c3e4f4a"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a">readByte</a> (uint8_t offset)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the byte at <em>offset</em> within the realtime clock's non-volatile memory. <a href="#a7364609a201022688778ab116c3e4f4a"></a><br/></td></tr> <tr class="memdesc:a7364609a201022688778ab116c3e4f4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the byte at <em>offset</em> within the realtime clock's non-volatile memory. <a href="#a7364609a201022688778ab116c3e4f4a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6">writeByte</a> (uint8_t offset, uint8_t value)</td></tr> <tr class="memitem:a6ef435fd4aa4adf8eefdf8b1741f5ba6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6">writeByte</a> (uint8_t offset, uint8_t value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes <em>value</em> to <em>offset</em> within the realtime clock's non-volatile memory. <a href="#a6ef435fd4aa4adf8eefdf8b1741f5ba6"></a><br/></td></tr> <tr class="memdesc:a6ef435fd4aa4adf8eefdf8b1741f5ba6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes <em>value</em> to <em>offset</em> within the realtime clock's non-volatile memory. <a href="#a6ef435fd4aa4adf8eefdf8b1741f5ba6"></a><br/></td></tr>
<tr class="inherit_header pub_methods_classRTC"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classRTC')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classRTC.html">RTC</a></td></tr>
<tr class="memitem:ada31c5120d18d2dd2863b3d440308da2 inherit pub_methods_classRTC"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#ada31c5120d18d2dd2863b3d440308da2">RTC</a> ()</td></tr>
<tr class="memdesc:ada31c5120d18d2dd2863b3d440308da2 inherit pub_methods_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new realtime clock handler. <a href="#ada31c5120d18d2dd2863b3d440308da2"></a><br/></td></tr>
<tr class="memitem:aeca3c8387332e8cabfd09c1806276e5a inherit pub_methods_classRTC"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#aeca3c8387332e8cabfd09c1806276e5a">readTemperature</a> ()</td></tr>
<tr class="memdesc:aeca3c8387332e8cabfd09c1806276e5a inherit pub_methods_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius. <a href="#aeca3c8387332e8cabfd09c1806276e5a"></a><br/></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_types_classRTC"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classRTC')"><img src="closed.png" alt="-"/>&nbsp;Public Types inherited from <a class="el" href="classRTC.html">RTC</a></td></tr>
<tr class="memitem:ab2ca0cbee608ec32d3d6e04d40298f11 inherit pub_types_classRTC"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11">DayOfWeek</a> { <br/>
&#160;&#160;<b>Monday</b> = 1,
<b>Tuesday</b>,
<b>Wednesday</b>,
<b>Thursday</b>,
<br/>
&#160;&#160;<b>Friday</b>,
<b>Saturday</b>,
<b>Sunday</b>
<br/>
}</td></tr>
<tr class="memdesc:ab2ca0cbee608ec32d3d6e04d40298f11"><td class="mdescLeft">&#160;</td><td class="mdescRight">Day of the week corresponding to a date. <a href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11">More...</a><br/></td></tr>
<tr class="inherit_header pub_static_methods_classRTC"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classRTC')"><img src="closed.png" alt="-"/>&nbsp;Static Public Member Functions inherited from <a class="el" href="classRTC.html">RTC</a></td></tr>
<tr class="memitem:adc29d7c43efc5a192d21965da5c3ee1d inherit pub_static_methods_classRTC"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d">adjustDays</a> (<a class="el" href="structRTCDate.html">RTCDate</a> *date, uint8_t flags)</td></tr>
<tr class="memdesc:adc29d7c43efc5a192d21965da5c3ee1d inherit pub_static_methods_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adjusts <em>date</em> up or down one day according to <em>flags</em>. <a href="#adc29d7c43efc5a192d21965da5c3ee1d"></a><br/></td></tr>
<tr class="memitem:aeca597e6e37a05716e664242f9cfc5f4 inherit pub_static_methods_classRTC"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4">adjustMonths</a> (<a class="el" href="structRTCDate.html">RTCDate</a> *date, uint8_t flags)</td></tr>
<tr class="memdesc:aeca597e6e37a05716e664242f9cfc5f4 inherit pub_static_methods_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adjusts <em>date</em> up or down one month according to <em>flags</em>. <a href="#aeca597e6e37a05716e664242f9cfc5f4"></a><br/></td></tr>
<tr class="memitem:a31d10cb2f7cac8839bd4be2d858b802d inherit pub_static_methods_classRTC"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d">adjustYears</a> (<a class="el" href="structRTCDate.html">RTCDate</a> *date, uint8_t flags)</td></tr>
<tr class="memdesc:a31d10cb2f7cac8839bd4be2d858b802d inherit pub_static_methods_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adjusts <em>date</em> up or down one year according to <em>flags</em>. <a href="#a31d10cb2f7cac8839bd4be2d858b802d"></a><br/></td></tr>
<tr class="memitem:a525a9c1dad89613708f47a683eb316aa inherit pub_static_methods_classRTC"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11">DayOfWeek</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#a525a9c1dad89613708f47a683eb316aa">dayOfWeek</a> (const <a class="el" href="structRTCDate.html">RTCDate</a> *date)</td></tr>
<tr class="memdesc:a525a9c1dad89613708f47a683eb316aa inherit pub_static_methods_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the day of the week corresponding to <em>date</em>. <a href="#a525a9c1dad89613708f47a683eb316aa"></a><br/></td></tr>
<tr class="inherit_header pub_static_attribs_classRTC"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classRTC')"><img src="closed.png" alt="-"/>&nbsp;Static Public Attributes inherited from <a class="el" href="classRTC.html">RTC</a></td></tr>
<tr class="memitem:aee5ae8f600ee5296e65635c0d836fca3 inherit pub_static_attribs_classRTC"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5ae8f600ee5296e65635c0d836fca3"></a>
static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">ALARM_COUNT</a> = 4</td></tr>
<tr class="memdesc:aee5ae8f600ee5296e65635c0d836fca3 inherit pub_static_attribs_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of alarms that are supported by <a class="el" href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66" title="Reads the details of the alarm with index alarmNum into value.">RTC::readAlarm()</a> and <a class="el" href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e" title="Updates the details of the alarm with index alarmNum from value.">RTC::writeAlarm()</a>. <br/></td></tr>
<tr class="memitem:a9ed5480b362a83f1f45c4d3bcf7c3bf8 inherit pub_static_attribs_classRTC"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ed5480b362a83f1f45c4d3bcf7c3bf8"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8">NO_TEMPERATURE</a> = 32767</td></tr>
<tr class="memdesc:a9ed5480b362a83f1f45c4d3bcf7c3bf8 inherit pub_static_attribs_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Value that is returned from <a class="el" href="classRTC.html#aeca3c8387332e8cabfd09c1806276e5a" title="Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius...">readTemperature()</a> if the realtime clock chip cannot determine the temperature. <br/></td></tr>
<tr class="memitem:aacbe3ebbf893685950b05327c11d5c37 inherit pub_static_attribs_classRTC"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacbe3ebbf893685950b05327c11d5c37"></a>
static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#aacbe3ebbf893685950b05327c11d5c37">INCREMENT</a> = 0x0000</td></tr>
<tr class="memdesc:aacbe3ebbf893685950b05327c11d5c37 inherit pub_static_attribs_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Increment the day, month, or year in a call to <a class="el" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d" title="Adjusts date up or down one day according to flags.">adjustDays()</a>, <a class="el" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4" title="Adjusts date up or down one month according to flags.">adjustMonths()</a>, or <a class="el" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d" title="Adjusts date up or down one year according to flags.">adjustYears()</a>. <br/></td></tr>
<tr class="memitem:a05b1bd1479afc80682abdd4f3e58dc6f inherit pub_static_attribs_classRTC"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05b1bd1479afc80682abdd4f3e58dc6f"></a>
static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f">DECREMENT</a> = 0x0001</td></tr>
<tr class="memdesc:a05b1bd1479afc80682abdd4f3e58dc6f inherit pub_static_attribs_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrement the day, month, or year in a call to <a class="el" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d" title="Adjusts date up or down one day according to flags.">adjustDays()</a>, <a class="el" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4" title="Adjusts date up or down one month according to flags.">adjustMonths()</a>, or <a class="el" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d" title="Adjusts date up or down one year according to flags.">adjustYears()</a>. <br/></td></tr>
<tr class="memitem:a02ace2d775063be9a99035851c9274eb inherit pub_static_attribs_classRTC"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a02ace2d775063be9a99035851c9274eb"></a>
static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#a02ace2d775063be9a99035851c9274eb">WRAP</a> = 0x0002</td></tr>
<tr class="memdesc:a02ace2d775063be9a99035851c9274eb inherit pub_static_attribs_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wrap around to the beginning of the current month/year rather than advance to the next one. <br/></td></tr>
</table> </table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Communicates with a DS1307 realtime clock chip via I2C. </p> <div class="textblock"><p>Communicates with a DS1307 realtime clock chip via I2C. </p>
<p>This class simplifies the process of reading and writing the time and date information in a DS1307 realtime clock chip. The class also provides support for reading and writing information about alarms and other clock settings.</p> <p>This class simplifies the process of reading and writing the time and date information in a DS1307 realtime clock chip. The class also provides support for reading and writing information about alarms and other clock settings.</p>
<p>If there is no DS1307 chip on the I2C bus, this class will fall back to the <a class="el" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a> class to simulate the current time and date based on the value of millis().</p> <p>If there is no DS1307 chip on the I2C bus, this class will fall back to the <a class="el" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a> class to simulate the current time and date based on the value of millis().</p>
<p>The DS1307 uses a 2-digit year so this class is limited to dates between 2000 and 2099 inclusive.</p> <p>The DS1307 uses a 2-digit year so this class is limited to dates between 2000 and 2099 inclusive.</p>
<p>Note: if this class has not been used with the DS1307 chip before, then the contents of NVRAM will be cleared. Any previous contents will be lost.</p> <p>Note: if this class has not been used with the DS1307 chip before, then the contents of NVRAM will be cleared. Any previous contents will be lost.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a>, <a class="el" href="classDS3232RTC.html" title="Communicates with a DS3232 realtime clock chip via I2C.">DS3232RTC</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a>, <a class="el" href="classDS3232RTC.html" title="Communicates with a DS3232 realtime clock chip via I2C.">DS3232RTC</a> </dd></dl>
<p>Definition at line <a class="el" href="DS1307RTC_8h_source.html#l00030">30</a> of file <a class="el" href="DS1307RTC_8h_source.html">DS1307RTC.h</a>.</p> <p>Definition at line <a class="el" href="DS1307RTC_8h_source.html#l00030">30</a> of file <a class="el" href="DS1307RTC_8h_source.html">DS1307RTC.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2> </div><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a092805d75bea323dc4be062638bff866"></a><!-- doxytag: member="DS1307RTC::DS1307RTC" ref="a092805d75bea323dc4be062638bff866" args="(I2CMaster &amp;bus, uint8_t oneHzPin=255)" --> <a class="anchor" id="a092805d75bea323dc4be062638bff866"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -143,34 +210,40 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<td></td><td></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Attaches to a realtime clock slave device on <em>bus</em>. </p> <p>Attaches to a realtime clock slave device on <em>bus</em>. </p>
<p>If <em>oneHzPin</em> is not 255, then it indicates a digital input pin that is connected to the 1 Hz square wave output on the realtime clock. This input is used by <a class="el" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates()</a> to determine if the time information has changed in a non-trivial manner.</p> <p>If <em>oneHzPin</em> is not 255, then it indicates a digital input pin that is connected to the 1 Hz square wave output on the realtime clock. This input is used by <a class="el" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates()</a> to determine if the time information has changed in a non-trivial manner.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates()</a> </dd></dl>
<p>Definition at line <a class="el" href="DS1307RTC_8cpp_source.html#l00083">83</a> of file <a class="el" href="DS1307RTC_8cpp_source.html">DS1307RTC.cpp</a>.</p> <p>Definition at line <a class="el" href="DS1307RTC_8cpp_source.html#l00083">83</a> of file <a class="el" href="DS1307RTC_8cpp_source.html">DS1307RTC.cpp</a>.</p>
</div> </div>
</div> </div>
<hr/><h2>Member Function Documentation</h2> <h2>Member Function Documentation</h2>
<a class="anchor" id="a93c25269a9b78ab3331354db26672248"></a><!-- doxytag: member="DS1307RTC::byteCount" ref="a93c25269a9b78ab3331354db26672248" args="() const " --> <a class="anchor" id="a93c25269a9b78ab3331354db26672248"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">int DS1307RTC::byteCount </td> <td class="memname">int DS1307RTC::byteCount </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [virtual]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings, excluding storage used by alarms. </p> <p>Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings, excluding storage used by alarms. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">readByte()</a>, <a class="el" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">writeByte()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">readByte()</a>, <a class="el" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">writeByte()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#acfdebfb449710e44e11f9a3675e14fd8">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#acfdebfb449710e44e11f9a3675e14fd8">RTC</a>.</p>
@@ -178,19 +251,26 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="a6fec8ff71f33cc1a129eb0bd009600b0"></a><!-- doxytag: member="DS1307RTC::hasUpdates" ref="a6fec8ff71f33cc1a129eb0bd009600b0" args="()" --> <a class="anchor" id="a6fec8ff71f33cc1a129eb0bd009600b0"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">bool DS1307RTC::hasUpdates </td> <td class="memname">bool DS1307RTC::hasUpdates </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if the realtime clock has updated since the last call to this function. </p> <p>Returns true if the realtime clock has updated since the last call to this function. </p>
<p>The default implementation returns true, indicating that an update is always available to be read. </p> <p>The default implementation returns true, indicating that an update is always available to be read. </p>
@@ -201,9 +281,12 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="aab608eb1630520ee122306b721fdc47a"></a><!-- doxytag: member="DS1307RTC::readAlarm" ref="aab608eb1630520ee122306b721fdc47a" args="(uint8_t alarmNum, RTCAlarm *value)" --> <a class="anchor" id="aab608eb1630520ee122306b721fdc47a"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void DS1307RTC::readAlarm </td> <td class="memname">void DS1307RTC::readAlarm </td>
@@ -220,16 +303,20 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<tr> <tr>
<td></td> <td></td>
<td>)</td> <td>)</td>
<td></td><td><code> [virtual]</code></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads the details of the alarm with index <em>alarmNum</em> into <em>value</em>. </p> <p>Reads the details of the alarm with index <em>alarmNum</em> into <em>value</em>. </p>
<p>The <em>alarmNum</em> parameter must be between 0 and <a class="el" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">ALARM_COUNT</a> - 1.</p> <p>The <em>alarmNum</em> parameter must be between 0 and <a class="el" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">ALARM_COUNT</a> - 1.</p>
<p>Alarm details are stored at the end of the realtime clock's non-volatile memory.</p> <p>Alarm details are stored at the end of the realtime clock's non-volatile memory.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75" title="Updates the details of the alarm with index alarmNum from value.">writeAlarm()</a>, alarmCount() </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75" title="Updates the details of the alarm with index alarmNum from value.">writeAlarm()</a>, alarmCount() </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66">RTC</a>.</p>
@@ -237,24 +324,31 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="a7364609a201022688778ab116c3e4f4a"></a><!-- doxytag: member="DS1307RTC::readByte" ref="a7364609a201022688778ab116c3e4f4a" args="(uint8_t offset)" --> <a class="anchor" id="a7364609a201022688778ab116c3e4f4a"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">uint8_t DS1307RTC::readByte </td> <td class="memname">uint8_t DS1307RTC::readByte </td>
<td>(</td> <td>(</td>
<td class="paramtype">uint8_t&#160;</td> <td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>offset</em></td><td>)</td> <td class="paramname"><em>offset</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads the byte at <em>offset</em> within the realtime clock's non-volatile memory. </p> <p>Reads the byte at <em>offset</em> within the realtime clock's non-volatile memory. </p>
<p>The <em>offset</em> parameter must be between 0 and <a class="el" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> - 1.</p> <p>The <em>offset</em> parameter must be between 0 and <a class="el" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> - 1.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">writeByte()</a>, <a class="el" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">writeByte()</a>, <a class="el" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#a0f47b10b436e3f9d36e04ec907579431">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#a0f47b10b436e3f9d36e04ec907579431">RTC</a>.</p>
@@ -262,24 +356,31 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="a6fb56d1690bc30e7995961a5b5e5fdc4"></a><!-- doxytag: member="DS1307RTC::readDate" ref="a6fb56d1690bc30e7995961a5b5e5fdc4" args="(RTCDate *value)" --> <a class="anchor" id="a6fb56d1690bc30e7995961a5b5e5fdc4"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void DS1307RTC::readDate </td> <td class="memname">void DS1307RTC::readDate </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="structRTCDate.html">RTCDate</a> *&#160;</td> <td class="paramtype"><a class="el" href="structRTCDate.html">RTCDate</a> *&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td> <td class="paramname"><em>value</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads the current date from the realtime clock into <em>value</em>. </p> <p>Reads the current date from the realtime clock into <em>value</em>. </p>
<p>The time should be read first with <a class="el" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6" title="Reads the current time from the realtime clock into value.">readTime()</a> as the default implementation only advances the date when the time is read and it crosses midnight.</p> <p>The time should be read first with <a class="el" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6" title="Reads the current time from the realtime clock into value.">readTime()</a> as the default implementation only advances the date when the time is read and it crosses midnight.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230" title="Updates the date in the realtime clock to match value.">writeDate()</a>, <a class="el" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6" title="Reads the current time from the realtime clock into value.">readTime()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230" title="Updates the date in the realtime clock to match value.">writeDate()</a>, <a class="el" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6" title="Reads the current time from the realtime clock into value.">readTime()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e">RTC</a>.</p>
@@ -287,23 +388,30 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="acd9800d6df2244b8e4e790480a1d62a6"></a><!-- doxytag: member="DS1307RTC::readTime" ref="acd9800d6df2244b8e4e790480a1d62a6" args="(RTCTime *value)" --> <a class="anchor" id="acd9800d6df2244b8e4e790480a1d62a6"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void DS1307RTC::readTime </td> <td class="memname">void DS1307RTC::readTime </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="structRTCTime.html">RTCTime</a> *&#160;</td> <td class="paramtype"><a class="el" href="structRTCTime.html">RTCTime</a> *&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td> <td class="paramname"><em>value</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads the current time from the realtime clock into <em>value</em>. </p> <p>Reads the current time from the realtime clock into <em>value</em>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8" title="Updates the time in the realtime clock to match value.">writeTime()</a>, <a class="el" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4" title="Reads the current date from the realtime clock into value.">readDate()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8" title="Updates the time in the realtime clock to match value.">writeTime()</a>, <a class="el" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4" title="Reads the current date from the realtime clock into value.">readDate()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec">RTC</a>.</p>
@@ -311,9 +419,12 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="a7354aed91d7c94d0d7b2144b1bf32c75"></a><!-- doxytag: member="DS1307RTC::writeAlarm" ref="a7354aed91d7c94d0d7b2144b1bf32c75" args="(uint8_t alarmNum, const RTCAlarm *value)" --> <a class="anchor" id="a7354aed91d7c94d0d7b2144b1bf32c75"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void DS1307RTC::writeAlarm </td> <td class="memname">void DS1307RTC::writeAlarm </td>
@@ -330,16 +441,20 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<tr> <tr>
<td></td> <td></td>
<td>)</td> <td>)</td>
<td></td><td><code> [virtual]</code></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Updates the details of the alarm with index <em>alarmNum</em> from <em>value</em>. </p> <p>Updates the details of the alarm with index <em>alarmNum</em> from <em>value</em>. </p>
<p>The <em>alarmNum</em> parameter must be between 0 and <a class="el" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">ALARM_COUNT</a> - 1.</p> <p>The <em>alarmNum</em> parameter must be between 0 and <a class="el" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">ALARM_COUNT</a> - 1.</p>
<p>Alarm details are stored at the end of the realtime clock's non-volatile memory.</p> <p>Alarm details are stored at the end of the realtime clock's non-volatile memory.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a" title="Reads the details of the alarm with index alarmNum into value.">readAlarm()</a>, alarmCount() </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a" title="Reads the details of the alarm with index alarmNum into value.">readAlarm()</a>, alarmCount() </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e">RTC</a>.</p>
@@ -347,9 +462,12 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="a6ef435fd4aa4adf8eefdf8b1741f5ba6"></a><!-- doxytag: member="DS1307RTC::writeByte" ref="a6ef435fd4aa4adf8eefdf8b1741f5ba6" args="(uint8_t offset, uint8_t value)" --> <a class="anchor" id="a6ef435fd4aa4adf8eefdf8b1741f5ba6"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void DS1307RTC::writeByte </td> <td class="memname">void DS1307RTC::writeByte </td>
@@ -366,15 +484,19 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<tr> <tr>
<td></td> <td></td>
<td>)</td> <td>)</td>
<td></td><td><code> [virtual]</code></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Writes <em>value</em> to <em>offset</em> within the realtime clock's non-volatile memory. </p> <p>Writes <em>value</em> to <em>offset</em> within the realtime clock's non-volatile memory. </p>
<p>The <em>offset</em> parameter must be between 0 and <a class="el" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> - 1.</p> <p>The <em>offset</em> parameter must be between 0 and <a class="el" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> - 1.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">readByte()</a>, <a class="el" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">readByte()</a>, <a class="el" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#a1cab6397ec04b1e2b3feea5b3cd1f749">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#a1cab6397ec04b1e2b3feea5b3cd1f749">RTC</a>.</p>
@@ -382,23 +504,30 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="a4f7346be33612cf9ecd96080eb046230"></a><!-- doxytag: member="DS1307RTC::writeDate" ref="a4f7346be33612cf9ecd96080eb046230" args="(const RTCDate *value)" --> <a class="anchor" id="a4f7346be33612cf9ecd96080eb046230"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void DS1307RTC::writeDate </td> <td class="memname">void DS1307RTC::writeDate </td>
<td>(</td> <td>(</td>
<td class="paramtype">const <a class="el" href="structRTCDate.html">RTCDate</a> *&#160;</td> <td class="paramtype">const <a class="el" href="structRTCDate.html">RTCDate</a> *&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td> <td class="paramname"><em>value</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Updates the date in the realtime clock to match <em>value</em>. </p> <p>Updates the date in the realtime clock to match <em>value</em>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4" title="Reads the current date from the realtime clock into value.">readDate()</a>, <a class="el" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8" title="Updates the time in the realtime clock to match value.">writeTime()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4" title="Reads the current date from the realtime clock into value.">readDate()</a>, <a class="el" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8" title="Updates the time in the realtime clock to match value.">writeTime()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7">RTC</a>.</p>
@@ -406,23 +535,30 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="a0a5d0d86a0345420ebb289ea724b19e8"></a><!-- doxytag: member="DS1307RTC::writeTime" ref="a0a5d0d86a0345420ebb289ea724b19e8" args="(const RTCTime *value)" --> <a class="anchor" id="a0a5d0d86a0345420ebb289ea724b19e8"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void DS1307RTC::writeTime </td> <td class="memname">void DS1307RTC::writeTime </td>
<td>(</td> <td>(</td>
<td class="paramtype">const <a class="el" href="structRTCTime.html">RTCTime</a> *&#160;</td> <td class="paramtype">const <a class="el" href="structRTCTime.html">RTCTime</a> *&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td> <td class="paramname"><em>value</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Updates the time in the realtime clock to match <em>value</em>. </p> <p>Updates the time in the realtime clock to match <em>value</em>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6" title="Reads the current time from the realtime clock into value.">readTime()</a>, <a class="el" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230" title="Updates the date in the realtime clock to match value.">writeDate()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6" title="Reads the current time from the realtime clock into value.">readTime()</a>, <a class="el" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230" title="Updates the date in the realtime clock to match value.">writeDate()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e">RTC</a>.</p>
@@ -434,23 +570,12 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<li><a class="el" href="DS1307RTC_8h_source.html">DS1307RTC.h</a></li> <li><a class="el" href="DS1307RTC_8h_source.html">DS1307RTC.h</a></li>
<li><a class="el" href="DS1307RTC_8cpp_source.html">DS1307RTC.cpp</a></li> <li><a class="el" href="DS1307RTC_8cpp_source.html">DS1307RTC.cpp</a></li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 370 B

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,57 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">DS3232RTC Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classDS3232RTC.html">DS3232RTC</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d">adjustDays</a>(RTCDate *date, uint8_t flags)</td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4">adjustMonths</a>(RTCDate *date, uint8_t flags)</td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d">adjustYears</a>(RTCDate *date, uint8_t flags)</td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">ALARM_COUNT</a></td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e">byteCount</a>() const </td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#a525a9c1dad89613708f47a683eb316aa">dayOfWeek</a>(const RTCDate *date)</td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11">DayOfWeek</a> enum name</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f">DECREMENT</a></td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb">disable32kHzOutput</a>()</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9">disableAlarmInterrupts</a>()</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#aa959454ae01b11c48d6ec7ec192b4ccb">DS3232RTC</a>(I2CMaster &amp;bus, uint8_t oneHzPin=255)</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a">enable32kHzOutput</a>()</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9">enableAlarmInterrupts</a>()</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3">firedAlarm</a>()</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Friday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc">hasUpdates</a>()</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#aacbe3ebbf893685950b05327c11d5c37">INCREMENT</a></td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#acc5908a3743afb4c26bd75e22cad87a4">isRealTime</a>() const </td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Monday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8">NO_TEMPERATURE</a></td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873">readAlarm</a>(uint8_t alarmNum, RTCAlarm *value)</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7">readByte</a>(uint8_t offset)</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca">readDate</a>(RTCDate *value)</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#a0faf40c25ab019a326a60f301c2bb41b">readTemperature</a>()</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747">readTime</a>(RTCTime *value)</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#ada31c5120d18d2dd2863b3d440308da2">RTC</a>()</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Saturday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Sunday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Thursday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Tuesday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Wednesday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classRTC.html#a02ace2d775063be9a99035851c9274eb">WRAP</a></td><td><a class="el" href="classRTC.html">RTC</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75">writeAlarm</a>(uint8_t alarmNum, const RTCAlarm *value)</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a">writeByte</a>(uint8_t offset, uint8_t value)</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed">writeDate</a>(const RTCDate *value)</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78">writeTime</a>(const RTCTime *value)</td><td><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><b>~RTC</b>() (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td><a class="el" href="classRTC.html">RTC</a></td><td></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -117,8 +80,58 @@ This is the complete list of members for <a class="el" href="classDS3232RTC.html
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">DS3232RTC Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classDS3232RTC.html">DS3232RTC</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d">adjustDays</a>(RTCDate *date, uint8_t flags)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4">adjustMonths</a>(RTCDate *date, uint8_t flags)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d">adjustYears</a>(RTCDate *date, uint8_t flags)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">ALARM_COUNT</a></td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e">byteCount</a>() const </td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classRTC.html#a525a9c1dad89613708f47a683eb316aa">dayOfWeek</a>(const RTCDate *date)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11">DayOfWeek</a> enum name</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f">DECREMENT</a></td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb">disable32kHzOutput</a>()</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9">disableAlarmInterrupts</a>()</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS3232RTC.html#aa959454ae01b11c48d6ec7ec192b4ccb">DS3232RTC</a>(I2CMaster &amp;bus, uint8_t oneHzPin=255)</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a">enable32kHzOutput</a>()</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9">enableAlarmInterrupts</a>()</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3">firedAlarm</a>()</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"class="even"><td class="entry"><b>Friday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc">hasUpdates</a>()</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRTC.html#aacbe3ebbf893685950b05327c11d5c37">INCREMENT</a></td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classDS3232RTC.html#acc5908a3743afb4c26bd75e22cad87a4">isRealTime</a>() const </td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"class="even"><td class="entry"><b>Monday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8">NO_TEMPERATURE</a></td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873">readAlarm</a>(uint8_t alarmNum, RTCAlarm *value)</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7">readByte</a>(uint8_t offset)</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca">readDate</a>(RTCDate *value)</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classDS3232RTC.html#a0faf40c25ab019a326a60f301c2bb41b">readTemperature</a>()</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747">readTime</a>(RTCTime *value)</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classRTC.html#ada31c5120d18d2dd2863b3d440308da2">RTC</a>()</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"class="even"><td class="entry"><b>Saturday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Sunday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"class="even"><td class="entry"><b>Thursday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Tuesday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"class="even"><td class="entry"><b>Wednesday</b> enum value (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classRTC.html#a02ace2d775063be9a99035851c9274eb">WRAP</a></td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75">writeAlarm</a>(uint8_t alarmNum, const RTCAlarm *value)</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a">writeByte</a>(uint8_t offset, uint8_t value)</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed">writeDate</a>(const RTCDate *value)</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78">writeTime</a>(const RTCTime *value)</td><td class="entry"><a class="el" href="classDS3232RTC.html">DS3232RTC</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"class="even"><td class="entry"><b>~RTC</b>() (defined in <a class="el" href="classRTC.html">RTC</a>)</td><td class="entry"><a class="el" href="classRTC.html">RTC</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: DS3232RTC Class Reference</title> <title>ArduinoLibs: DS3232RTC Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,15 +66,30 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div> <a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classDS3232RTC-members.html">List of all members</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">DS3232RTC Class Reference</div> </div> <div class="title">DS3232RTC Class Reference</div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<!-- doxytag: class="DS3232RTC" --><!-- doxytag: inherits="RTC" -->
<p>Communicates with a DS3232 realtime clock chip via I2C. <p>Communicates with a DS3232 realtime clock chip via I2C.
<a href="classDS3232RTC.html#details">More...</a></p> <a href="classDS3232RTC.html#details">More...</a></p>
@@ -80,61 +103,103 @@ Inheritance diagram for DS3232RTC:</div>
<area href="classRTC.html" title="Base class for realtime clock handlers." alt="RTC" shape="rect" coords="0,0,81,24"/> <area href="classRTC.html" title="Base class for realtime clock handlers." alt="RTC" shape="rect" coords="0,0,81,24"/>
</map> </map>
</div></div> </div></div>
<p><a href="classDS3232RTC-members.html">List of all members.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr> Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#aa959454ae01b11c48d6ec7ec192b4ccb">DS3232RTC</a> (<a class="el" href="classI2CMaster.html">I2CMaster</a> &amp;bus, uint8_t oneHzPin=255)</td></tr> <tr class="memitem:aa959454ae01b11c48d6ec7ec192b4ccb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#aa959454ae01b11c48d6ec7ec192b4ccb">DS3232RTC</a> (<a class="el" href="classI2CMaster.html">I2CMaster</a> &amp;bus, uint8_t oneHzPin=255)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Attaches to a realtime clock slave device on <em>bus</em>. <a href="#aa959454ae01b11c48d6ec7ec192b4ccb"></a><br/></td></tr> <tr class="memdesc:aa959454ae01b11c48d6ec7ec192b4ccb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attaches to a realtime clock slave device on <em>bus</em>. <a href="#aa959454ae01b11c48d6ec7ec192b4ccb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc5908a3743afb4c26bd75e22cad87a4"></a><!-- doxytag: member="DS3232RTC::isRealTime" ref="acc5908a3743afb4c26bd75e22cad87a4" args="() const " --> <tr class="memitem:acc5908a3743afb4c26bd75e22cad87a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc5908a3743afb4c26bd75e22cad87a4"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#acc5908a3743afb4c26bd75e22cad87a4">isRealTime</a> () const </td></tr> bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#acc5908a3743afb4c26bd75e22cad87a4">isRealTime</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the realtime clock is on the I2C bus; false if the time and date are simulated. <br/></td></tr> <tr class="memdesc:acc5908a3743afb4c26bd75e22cad87a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the realtime clock is on the I2C bus; false if the time and date are simulated. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc">hasUpdates</a> ()</td></tr> <tr class="memitem:a619ffee1bc013c9ddf4ae415115798bc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc">hasUpdates</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the realtime clock has updated since the last call to this function. <a href="#a619ffee1bc013c9ddf4ae415115798bc"></a><br/></td></tr> <tr class="memdesc:a619ffee1bc013c9ddf4ae415115798bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the realtime clock has updated since the last call to this function. <a href="#a619ffee1bc013c9ddf4ae415115798bc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747">readTime</a> (<a class="el" href="structRTCTime.html">RTCTime</a> *value)</td></tr> <tr class="memitem:af89e68c68f1c4b7e94286f800b5b2747"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747">readTime</a> (<a class="el" href="structRTCTime.html">RTCTime</a> *value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the current time from the realtime clock into <em>value</em>. <a href="#af89e68c68f1c4b7e94286f800b5b2747"></a><br/></td></tr> <tr class="memdesc:af89e68c68f1c4b7e94286f800b5b2747"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the current time from the realtime clock into <em>value</em>. <a href="#af89e68c68f1c4b7e94286f800b5b2747"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca">readDate</a> (<a class="el" href="structRTCDate.html">RTCDate</a> *value)</td></tr> <tr class="memitem:ab03358e3b5996e38d766e2f9f6ab62ca"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca">readDate</a> (<a class="el" href="structRTCDate.html">RTCDate</a> *value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the current date from the realtime clock into <em>value</em>. <a href="#ab03358e3b5996e38d766e2f9f6ab62ca"></a><br/></td></tr> <tr class="memdesc:ab03358e3b5996e38d766e2f9f6ab62ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the current date from the realtime clock into <em>value</em>. <a href="#ab03358e3b5996e38d766e2f9f6ab62ca"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78">writeTime</a> (const <a class="el" href="structRTCTime.html">RTCTime</a> *value)</td></tr> <tr class="memitem:ab0ca13a8b80da856b37fc53b84e27c78"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78">writeTime</a> (const <a class="el" href="structRTCTime.html">RTCTime</a> *value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the time in the realtime clock to match <em>value</em>. <a href="#ab0ca13a8b80da856b37fc53b84e27c78"></a><br/></td></tr> <tr class="memdesc:ab0ca13a8b80da856b37fc53b84e27c78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the time in the realtime clock to match <em>value</em>. <a href="#ab0ca13a8b80da856b37fc53b84e27c78"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed">writeDate</a> (const <a class="el" href="structRTCDate.html">RTCDate</a> *value)</td></tr> <tr class="memitem:a31c004a90c724979d8267c31f2dbf5ed"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed">writeDate</a> (const <a class="el" href="structRTCDate.html">RTCDate</a> *value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the date in the realtime clock to match <em>value</em>. <a href="#a31c004a90c724979d8267c31f2dbf5ed"></a><br/></td></tr> <tr class="memdesc:a31c004a90c724979d8267c31f2dbf5ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the date in the realtime clock to match <em>value</em>. <a href="#a31c004a90c724979d8267c31f2dbf5ed"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873">readAlarm</a> (uint8_t alarmNum, <a class="el" href="structRTCAlarm.html">RTCAlarm</a> *value)</td></tr> <tr class="memitem:a09c7073c687dcbbc423baf48074c7873"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873">readAlarm</a> (uint8_t alarmNum, <a class="el" href="structRTCAlarm.html">RTCAlarm</a> *value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the details of the alarm with index <em>alarmNum</em> into <em>value</em>. <a href="#a09c7073c687dcbbc423baf48074c7873"></a><br/></td></tr> <tr class="memdesc:a09c7073c687dcbbc423baf48074c7873"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the details of the alarm with index <em>alarmNum</em> into <em>value</em>. <a href="#a09c7073c687dcbbc423baf48074c7873"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75">writeAlarm</a> (uint8_t alarmNum, const <a class="el" href="structRTCAlarm.html">RTCAlarm</a> *value)</td></tr> <tr class="memitem:a8b0a65e0ac479aec8fad6ca3147dbe75"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75">writeAlarm</a> (uint8_t alarmNum, const <a class="el" href="structRTCAlarm.html">RTCAlarm</a> *value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the details of the alarm with index <em>alarmNum</em> from <em>value</em>. <a href="#a8b0a65e0ac479aec8fad6ca3147dbe75"></a><br/></td></tr> <tr class="memdesc:a8b0a65e0ac479aec8fad6ca3147dbe75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the details of the alarm with index <em>alarmNum</em> from <em>value</em>. <a href="#a8b0a65e0ac479aec8fad6ca3147dbe75"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e">byteCount</a> () const </td></tr> <tr class="memitem:a1319fe936dcb7e9d6bdf200b77a94f8e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e">byteCount</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings, excluding storage used by alarms. <a href="#a1319fe936dcb7e9d6bdf200b77a94f8e"></a><br/></td></tr> <tr class="memdesc:a1319fe936dcb7e9d6bdf200b77a94f8e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings, excluding storage used by alarms. <a href="#a1319fe936dcb7e9d6bdf200b77a94f8e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7">readByte</a> (uint8_t offset)</td></tr> <tr class="memitem:a5ba83a3ef7d65d45c2f3241afdd8fef7"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7">readByte</a> (uint8_t offset)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the byte at <em>offset</em> within the realtime clock's non-volatile memory. <a href="#a5ba83a3ef7d65d45c2f3241afdd8fef7"></a><br/></td></tr> <tr class="memdesc:a5ba83a3ef7d65d45c2f3241afdd8fef7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the byte at <em>offset</em> within the realtime clock's non-volatile memory. <a href="#a5ba83a3ef7d65d45c2f3241afdd8fef7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a">writeByte</a> (uint8_t offset, uint8_t value)</td></tr> <tr class="memitem:a9acebf12c5cecdd6d84e0ff9ed41765a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a">writeByte</a> (uint8_t offset, uint8_t value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes <em>value</em> to <em>offset</em> within the realtime clock's non-volatile memory. <a href="#a9acebf12c5cecdd6d84e0ff9ed41765a"></a><br/></td></tr> <tr class="memdesc:a9acebf12c5cecdd6d84e0ff9ed41765a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes <em>value</em> to <em>offset</em> within the realtime clock's non-volatile memory. <a href="#a9acebf12c5cecdd6d84e0ff9ed41765a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a0faf40c25ab019a326a60f301c2bb41b">readTemperature</a> ()</td></tr> <tr class="memitem:a0faf40c25ab019a326a60f301c2bb41b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a0faf40c25ab019a326a60f301c2bb41b">readTemperature</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius. <a href="#a0faf40c25ab019a326a60f301c2bb41b"></a><br/></td></tr> <tr class="memdesc:a0faf40c25ab019a326a60f301c2bb41b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius. <a href="#a0faf40c25ab019a326a60f301c2bb41b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9">enableAlarmInterrupts</a> ()</td></tr> <tr class="memitem:ab91e79271a1f8e75b07bddbb04445dc9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9">enableAlarmInterrupts</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the generation of interrupts for alarms 0 and 1. <a href="#ab91e79271a1f8e75b07bddbb04445dc9"></a><br/></td></tr> <tr class="memdesc:ab91e79271a1f8e75b07bddbb04445dc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the generation of interrupts for alarms 0 and 1. <a href="#ab91e79271a1f8e75b07bddbb04445dc9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9">disableAlarmInterrupts</a> ()</td></tr> <tr class="memitem:a225b8c62d617aa1b7be7d20e8a033be9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9">disableAlarmInterrupts</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the generation of interrupts for alarms 0 and 1. <a href="#a225b8c62d617aa1b7be7d20e8a033be9"></a><br/></td></tr> <tr class="memdesc:a225b8c62d617aa1b7be7d20e8a033be9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the generation of interrupts for alarms 0 and 1. <a href="#a225b8c62d617aa1b7be7d20e8a033be9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3">firedAlarm</a> ()</td></tr> <tr class="memitem:a79649f100a4562b9c1ba7c69e85cbca3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3">firedAlarm</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines which of alarms 0 or 1 have fired since the last call. <a href="#a79649f100a4562b9c1ba7c69e85cbca3"></a><br/></td></tr> <tr class="memdesc:a79649f100a4562b9c1ba7c69e85cbca3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines which of alarms 0 or 1 have fired since the last call. <a href="#a79649f100a4562b9c1ba7c69e85cbca3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a">enable32kHzOutput</a> ()</td></tr> <tr class="memitem:a3966de6f4241d86f198a8b9dd5e7e59a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a">enable32kHzOutput</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the 32 kHz output on the DS3232 chip. <a href="#a3966de6f4241d86f198a8b9dd5e7e59a"></a><br/></td></tr> <tr class="memdesc:a3966de6f4241d86f198a8b9dd5e7e59a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the 32 kHz output on the DS3232 chip. <a href="#a3966de6f4241d86f198a8b9dd5e7e59a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb">disable32kHzOutput</a> ()</td></tr> <tr class="memitem:ada732bae42fc2833e59ae293aa27ddcb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb">disable32kHzOutput</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the 32 kHz output on the DS3232 chip. <a href="#ada732bae42fc2833e59ae293aa27ddcb"></a><br/></td></tr> <tr class="memdesc:ada732bae42fc2833e59ae293aa27ddcb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the 32 kHz output on the DS3232 chip. <a href="#ada732bae42fc2833e59ae293aa27ddcb"></a><br/></td></tr>
<tr class="inherit_header pub_methods_classRTC"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classRTC')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classRTC.html">RTC</a></td></tr>
<tr class="memitem:ada31c5120d18d2dd2863b3d440308da2 inherit pub_methods_classRTC"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#ada31c5120d18d2dd2863b3d440308da2">RTC</a> ()</td></tr>
<tr class="memdesc:ada31c5120d18d2dd2863b3d440308da2 inherit pub_methods_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new realtime clock handler. <a href="#ada31c5120d18d2dd2863b3d440308da2"></a><br/></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_types_classRTC"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classRTC')"><img src="closed.png" alt="-"/>&nbsp;Public Types inherited from <a class="el" href="classRTC.html">RTC</a></td></tr>
<tr class="memitem:ab2ca0cbee608ec32d3d6e04d40298f11 inherit pub_types_classRTC"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11">DayOfWeek</a> { <br/>
&#160;&#160;<b>Monday</b> = 1,
<b>Tuesday</b>,
<b>Wednesday</b>,
<b>Thursday</b>,
<br/>
&#160;&#160;<b>Friday</b>,
<b>Saturday</b>,
<b>Sunday</b>
<br/>
}</td></tr>
<tr class="memdesc:ab2ca0cbee608ec32d3d6e04d40298f11"><td class="mdescLeft">&#160;</td><td class="mdescRight">Day of the week corresponding to a date. <a href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11">More...</a><br/></td></tr>
<tr class="inherit_header pub_static_methods_classRTC"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classRTC')"><img src="closed.png" alt="-"/>&nbsp;Static Public Member Functions inherited from <a class="el" href="classRTC.html">RTC</a></td></tr>
<tr class="memitem:adc29d7c43efc5a192d21965da5c3ee1d inherit pub_static_methods_classRTC"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d">adjustDays</a> (<a class="el" href="structRTCDate.html">RTCDate</a> *date, uint8_t flags)</td></tr>
<tr class="memdesc:adc29d7c43efc5a192d21965da5c3ee1d inherit pub_static_methods_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adjusts <em>date</em> up or down one day according to <em>flags</em>. <a href="#adc29d7c43efc5a192d21965da5c3ee1d"></a><br/></td></tr>
<tr class="memitem:aeca597e6e37a05716e664242f9cfc5f4 inherit pub_static_methods_classRTC"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4">adjustMonths</a> (<a class="el" href="structRTCDate.html">RTCDate</a> *date, uint8_t flags)</td></tr>
<tr class="memdesc:aeca597e6e37a05716e664242f9cfc5f4 inherit pub_static_methods_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adjusts <em>date</em> up or down one month according to <em>flags</em>. <a href="#aeca597e6e37a05716e664242f9cfc5f4"></a><br/></td></tr>
<tr class="memitem:a31d10cb2f7cac8839bd4be2d858b802d inherit pub_static_methods_classRTC"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d">adjustYears</a> (<a class="el" href="structRTCDate.html">RTCDate</a> *date, uint8_t flags)</td></tr>
<tr class="memdesc:a31d10cb2f7cac8839bd4be2d858b802d inherit pub_static_methods_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adjusts <em>date</em> up or down one year according to <em>flags</em>. <a href="#a31d10cb2f7cac8839bd4be2d858b802d"></a><br/></td></tr>
<tr class="memitem:a525a9c1dad89613708f47a683eb316aa inherit pub_static_methods_classRTC"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11">DayOfWeek</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#a525a9c1dad89613708f47a683eb316aa">dayOfWeek</a> (const <a class="el" href="structRTCDate.html">RTCDate</a> *date)</td></tr>
<tr class="memdesc:a525a9c1dad89613708f47a683eb316aa inherit pub_static_methods_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the day of the week corresponding to <em>date</em>. <a href="#a525a9c1dad89613708f47a683eb316aa"></a><br/></td></tr>
<tr class="inherit_header pub_static_attribs_classRTC"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classRTC')"><img src="closed.png" alt="-"/>&nbsp;Static Public Attributes inherited from <a class="el" href="classRTC.html">RTC</a></td></tr>
<tr class="memitem:aee5ae8f600ee5296e65635c0d836fca3 inherit pub_static_attribs_classRTC"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5ae8f600ee5296e65635c0d836fca3"></a>
static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">ALARM_COUNT</a> = 4</td></tr>
<tr class="memdesc:aee5ae8f600ee5296e65635c0d836fca3 inherit pub_static_attribs_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of alarms that are supported by <a class="el" href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66" title="Reads the details of the alarm with index alarmNum into value.">RTC::readAlarm()</a> and <a class="el" href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e" title="Updates the details of the alarm with index alarmNum from value.">RTC::writeAlarm()</a>. <br/></td></tr>
<tr class="memitem:a9ed5480b362a83f1f45c4d3bcf7c3bf8 inherit pub_static_attribs_classRTC"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ed5480b362a83f1f45c4d3bcf7c3bf8"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8">NO_TEMPERATURE</a> = 32767</td></tr>
<tr class="memdesc:a9ed5480b362a83f1f45c4d3bcf7c3bf8 inherit pub_static_attribs_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Value that is returned from <a class="el" href="classRTC.html#aeca3c8387332e8cabfd09c1806276e5a" title="Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius...">readTemperature()</a> if the realtime clock chip cannot determine the temperature. <br/></td></tr>
<tr class="memitem:aacbe3ebbf893685950b05327c11d5c37 inherit pub_static_attribs_classRTC"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacbe3ebbf893685950b05327c11d5c37"></a>
static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#aacbe3ebbf893685950b05327c11d5c37">INCREMENT</a> = 0x0000</td></tr>
<tr class="memdesc:aacbe3ebbf893685950b05327c11d5c37 inherit pub_static_attribs_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Increment the day, month, or year in a call to <a class="el" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d" title="Adjusts date up or down one day according to flags.">adjustDays()</a>, <a class="el" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4" title="Adjusts date up or down one month according to flags.">adjustMonths()</a>, or <a class="el" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d" title="Adjusts date up or down one year according to flags.">adjustYears()</a>. <br/></td></tr>
<tr class="memitem:a05b1bd1479afc80682abdd4f3e58dc6f inherit pub_static_attribs_classRTC"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05b1bd1479afc80682abdd4f3e58dc6f"></a>
static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f">DECREMENT</a> = 0x0001</td></tr>
<tr class="memdesc:a05b1bd1479afc80682abdd4f3e58dc6f inherit pub_static_attribs_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrement the day, month, or year in a call to <a class="el" href="classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d" title="Adjusts date up or down one day according to flags.">adjustDays()</a>, <a class="el" href="classRTC.html#aeca597e6e37a05716e664242f9cfc5f4" title="Adjusts date up or down one month according to flags.">adjustMonths()</a>, or <a class="el" href="classRTC.html#a31d10cb2f7cac8839bd4be2d858b802d" title="Adjusts date up or down one year according to flags.">adjustYears()</a>. <br/></td></tr>
<tr class="memitem:a02ace2d775063be9a99035851c9274eb inherit pub_static_attribs_classRTC"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a02ace2d775063be9a99035851c9274eb"></a>
static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRTC.html#a02ace2d775063be9a99035851c9274eb">WRAP</a> = 0x0002</td></tr>
<tr class="memdesc:a02ace2d775063be9a99035851c9274eb inherit pub_static_attribs_classRTC"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wrap around to the beginning of the current month/year rather than advance to the next one. <br/></td></tr>
</table> </table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Communicates with a DS3232 realtime clock chip via I2C. </p> <div class="textblock"><p>Communicates with a DS3232 realtime clock chip via I2C. </p>
<p>This class simplifies the process of reading and writing the time and date information in a DS3232 realtime clock chip. The class also provides support for reading and writing information about alarms and other clock settings.</p> <p>This class simplifies the process of reading and writing the time and date information in a DS3232 realtime clock chip. The class also provides support for reading and writing information about alarms and other clock settings.</p>
<p>If there is no DS3232 chip on the I2C bus, this class will fall back to the <a class="el" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a> class to simulate the current time and date based on the value of millis().</p> <p>If there is no DS3232 chip on the I2C bus, this class will fall back to the <a class="el" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a> class to simulate the current time and date based on the value of millis().</p>
<p>Alarms 0 and 1 can be set to generate an interrupt when they fire using <a class="el" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9" title="Enables the generation of interrupts for alarms 0 and 1.">enableAlarmInterrupts()</a>. The <a class="el" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3" title="Determines which of alarms 0 or 1 have fired since the last call.">firedAlarm()</a> function can be used to determine which alarm has fired. Alarms 2 and 3 cannot be monitored with interrupts.</p> <p>Alarms 0 and 1 can be set to generate an interrupt when they fire using <a class="el" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9" title="Enables the generation of interrupts for alarms 0 and 1.">enableAlarmInterrupts()</a>. The <a class="el" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3" title="Determines which of alarms 0 or 1 have fired since the last call.">firedAlarm()</a> function can be used to determine which alarm has fired. Alarms 2 and 3 cannot be monitored with interrupts.</p>
<p>The DS3232 uses a 2-digit year so this class is limited to dates between 2000 and 2099 inclusive.</p> <p>The DS3232 uses a 2-digit year so this class is limited to dates between 2000 and 2099 inclusive.</p>
<p>Note: if this class has not been used with the DS3232 chip before, then the contents of NVRAM will be cleared. Any previous contents will be lost.</p> <p>Note: if this class has not been used with the DS3232 chip before, then the contents of NVRAM will be cleared. Any previous contents will be lost.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a>, <a class="el" href="classDS1307RTC.html" title="Communicates with a DS1307 realtime clock chip via I2C.">DS1307RTC</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classRTC.html" title="Base class for realtime clock handlers.">RTC</a>, <a class="el" href="classDS1307RTC.html" title="Communicates with a DS1307 realtime clock chip via I2C.">DS1307RTC</a> </dd></dl>
<p>Definition at line <a class="el" href="DS3232RTC_8h_source.html#l00030">30</a> of file <a class="el" href="DS3232RTC_8h_source.html">DS3232RTC.h</a>.</p> <p>Definition at line <a class="el" href="DS3232RTC_8h_source.html#l00030">30</a> of file <a class="el" href="DS3232RTC_8h_source.html">DS3232RTC.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2> </div><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="aa959454ae01b11c48d6ec7ec192b4ccb"></a><!-- doxytag: member="DS3232RTC::DS3232RTC" ref="aa959454ae01b11c48d6ec7ec192b4ccb" args="(I2CMaster &amp;bus, uint8_t oneHzPin=255)" --> <a class="anchor" id="aa959454ae01b11c48d6ec7ec192b4ccb"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -156,35 +221,41 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<td></td><td></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Attaches to a realtime clock slave device on <em>bus</em>. </p> <p>Attaches to a realtime clock slave device on <em>bus</em>. </p>
<p>If <em>oneHzPin</em> is not 255, then it indicates a digital input pin that is connected to the 1 Hz square wave output on the realtime clock. This input is used by <a class="el" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates()</a> to determine if the time information has changed in a non-trivial manner.</p> <p>If <em>oneHzPin</em> is not 255, then it indicates a digital input pin that is connected to the 1 Hz square wave output on the realtime clock. This input is used by <a class="el" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates()</a> to determine if the time information has changed in a non-trivial manner.</p>
<p>If you wish to use <a class="el" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9" title="Enables the generation of interrupts for alarms 0 and 1.">enableAlarmInterrupts()</a>, then <em>oneHzPin</em> must be 255.</p> <p>If you wish to use <a class="el" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9" title="Enables the generation of interrupts for alarms 0 and 1.">enableAlarmInterrupts()</a>, then <em>oneHzPin</em> must be 255.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates()</a>, <a class="el" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9" title="Enables the generation of interrupts for alarms 0 and 1.">enableAlarmInterrupts()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates()</a>, <a class="el" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9" title="Enables the generation of interrupts for alarms 0 and 1.">enableAlarmInterrupts()</a> </dd></dl>
<p>Definition at line <a class="el" href="DS3232RTC_8cpp_source.html#l00126">126</a> of file <a class="el" href="DS3232RTC_8cpp_source.html">DS3232RTC.cpp</a>.</p> <p>Definition at line <a class="el" href="DS3232RTC_8cpp_source.html#l00126">126</a> of file <a class="el" href="DS3232RTC_8cpp_source.html">DS3232RTC.cpp</a>.</p>
</div> </div>
</div> </div>
<hr/><h2>Member Function Documentation</h2> <h2>Member Function Documentation</h2>
<a class="anchor" id="a1319fe936dcb7e9d6bdf200b77a94f8e"></a><!-- doxytag: member="DS3232RTC::byteCount" ref="a1319fe936dcb7e9d6bdf200b77a94f8e" args="() const " --> <a class="anchor" id="a1319fe936dcb7e9d6bdf200b77a94f8e"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">int DS3232RTC::byteCount </td> <td class="memname">int DS3232RTC::byteCount </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [virtual]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings, excluding storage used by alarms. </p> <p>Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings, excluding storage used by alarms. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">readByte()</a>, <a class="el" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">writeByte()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">readByte()</a>, <a class="el" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">writeByte()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#acfdebfb449710e44e11f9a3675e14fd8">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#acfdebfb449710e44e11f9a3675e14fd8">RTC</a>.</p>
@@ -192,7 +263,7 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="ada732bae42fc2833e59ae293aa27ddcb"></a><!-- doxytag: member="DS3232RTC::disable32kHzOutput" ref="ada732bae42fc2833e59ae293aa27ddcb" args="()" --> <a class="anchor" id="ada732bae42fc2833e59ae293aa27ddcb"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -203,17 +274,16 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Disables the 32 kHz output on the DS3232 chip. </p> <p>Disables the 32 kHz output on the DS3232 chip. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a" title="Enables the 32 kHz output on the DS3232 chip.">enable32kHzOutput()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a" title="Enables the 32 kHz output on the DS3232 chip.">enable32kHzOutput()</a> </dd></dl>
<p>Definition at line <a class="el" href="DS3232RTC_8cpp_source.html#l00458">458</a> of file <a class="el" href="DS3232RTC_8cpp_source.html">DS3232RTC.cpp</a>.</p> <p>Definition at line <a class="el" href="DS3232RTC_8cpp_source.html#l00458">458</a> of file <a class="el" href="DS3232RTC_8cpp_source.html">DS3232RTC.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a225b8c62d617aa1b7be7d20e8a033be9"></a><!-- doxytag: member="DS3232RTC::disableAlarmInterrupts" ref="a225b8c62d617aa1b7be7d20e8a033be9" args="()" --> <a class="anchor" id="a225b8c62d617aa1b7be7d20e8a033be9"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -224,17 +294,16 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Disables the generation of interrupts for alarms 0 and 1. </p> <p>Disables the generation of interrupts for alarms 0 and 1. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9" title="Enables the generation of interrupts for alarms 0 and 1.">enableAlarmInterrupts()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9" title="Enables the generation of interrupts for alarms 0 and 1.">enableAlarmInterrupts()</a> </dd></dl>
<p>Definition at line <a class="el" href="DS3232RTC_8cpp_source.html#l00393">393</a> of file <a class="el" href="DS3232RTC_8cpp_source.html">DS3232RTC.cpp</a>.</p> <p>Definition at line <a class="el" href="DS3232RTC_8cpp_source.html#l00393">393</a> of file <a class="el" href="DS3232RTC_8cpp_source.html">DS3232RTC.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a3966de6f4241d86f198a8b9dd5e7e59a"></a><!-- doxytag: member="DS3232RTC::enable32kHzOutput" ref="a3966de6f4241d86f198a8b9dd5e7e59a" args="()" --> <a class="anchor" id="a3966de6f4241d86f198a8b9dd5e7e59a"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -245,17 +314,16 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Enables the 32 kHz output on the DS3232 chip. </p> <p>Enables the 32 kHz output on the DS3232 chip. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb" title="Disables the 32 kHz output on the DS3232 chip.">disable32kHzOutput()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb" title="Disables the 32 kHz output on the DS3232 chip.">disable32kHzOutput()</a> </dd></dl>
<p>Definition at line <a class="el" href="DS3232RTC_8cpp_source.html#l00444">444</a> of file <a class="el" href="DS3232RTC_8cpp_source.html">DS3232RTC.cpp</a>.</p> <p>Definition at line <a class="el" href="DS3232RTC_8cpp_source.html#l00444">444</a> of file <a class="el" href="DS3232RTC_8cpp_source.html">DS3232RTC.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="ab91e79271a1f8e75b07bddbb04445dc9"></a><!-- doxytag: member="DS3232RTC::enableAlarmInterrupts" ref="ab91e79271a1f8e75b07bddbb04445dc9" args="()" --> <a class="anchor" id="ab91e79271a1f8e75b07bddbb04445dc9"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -266,19 +334,18 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Enables the generation of interrupts for alarms 0 and 1. </p> <p>Enables the generation of interrupts for alarms 0 and 1. </p>
<p>When the interrupt occurs, use <a class="el" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3" title="Determines which of alarms 0 or 1 have fired since the last call.">firedAlarm()</a> to determine which alarm has fired. The application is responsible for implementing the interrupt service routine to watch for the interrupt.</p> <p>When the interrupt occurs, use <a class="el" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3" title="Determines which of alarms 0 or 1 have fired since the last call.">firedAlarm()</a> to determine which alarm has fired. The application is responsible for implementing the interrupt service routine to watch for the interrupt.</p>
<p>Note: this function does nothing if the 1 Hz pin was enabled in the constructor, but <a class="el" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3" title="Determines which of alarms 0 or 1 have fired since the last call.">firedAlarm()</a> can still be used to determine which alarm has fired when <a class="el" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates()</a> reports that there is an update available.</p> <p>Note: this function does nothing if the 1 Hz pin was enabled in the constructor, but <a class="el" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3" title="Determines which of alarms 0 or 1 have fired since the last call.">firedAlarm()</a> can still be used to determine which alarm has fired when <a class="el" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc" title="Returns true if the realtime clock has updated since the last call to this function.">hasUpdates()</a> reports that there is an update available.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9" title="Disables the generation of interrupts for alarms 0 and 1.">disableAlarmInterrupts()</a>, <a class="el" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3" title="Determines which of alarms 0 or 1 have fired since the last call.">firedAlarm()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9" title="Disables the generation of interrupts for alarms 0 and 1.">disableAlarmInterrupts()</a>, <a class="el" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3" title="Determines which of alarms 0 or 1 have fired since the last call.">firedAlarm()</a> </dd></dl>
<p>Definition at line <a class="el" href="DS3232RTC_8cpp_source.html#l00380">380</a> of file <a class="el" href="DS3232RTC_8cpp_source.html">DS3232RTC.cpp</a>.</p> <p>Definition at line <a class="el" href="DS3232RTC_8cpp_source.html#l00380">380</a> of file <a class="el" href="DS3232RTC_8cpp_source.html">DS3232RTC.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a79649f100a4562b9c1ba7c69e85cbca3"></a><!-- doxytag: member="DS3232RTC::firedAlarm" ref="a79649f100a4562b9c1ba7c69e85cbca3" args="()" --> <a class="anchor" id="a79649f100a4562b9c1ba7c69e85cbca3"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -289,32 +356,38 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Determines which of alarms 0 or 1 have fired since the last call. </p> <p>Determines which of alarms 0 or 1 have fired since the last call. </p>
<p>Returns 0 if alarm 0 has fired, 1 if alarm 1 has fired, 2 if both alarms have fired, or -1 if neither alarm has fired.</p> <p>Returns 0 if alarm 0 has fired, 1 if alarm 1 has fired, 2 if both alarms have fired, or -1 if neither alarm has fired.</p>
<p>The fired alarm state will be cleared, ready for the next call.</p> <p>The fired alarm state will be cleared, ready for the next call.</p>
<p>This function cannot be used to determine if alarms 2 or 3 have fired as they are stored in NVRAM and are not handled specially by the DS3232.</p> <p>This function cannot be used to determine if alarms 2 or 3 have fired as they are stored in NVRAM and are not handled specially by the DS3232.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9" title="Enables the generation of interrupts for alarms 0 and 1.">enableAlarmInterrupts()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9" title="Enables the generation of interrupts for alarms 0 and 1.">enableAlarmInterrupts()</a> </dd></dl>
<p>Definition at line <a class="el" href="DS3232RTC_8cpp_source.html#l00416">416</a> of file <a class="el" href="DS3232RTC_8cpp_source.html">DS3232RTC.cpp</a>.</p> <p>Definition at line <a class="el" href="DS3232RTC_8cpp_source.html#l00416">416</a> of file <a class="el" href="DS3232RTC_8cpp_source.html">DS3232RTC.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a619ffee1bc013c9ddf4ae415115798bc"></a><!-- doxytag: member="DS3232RTC::hasUpdates" ref="a619ffee1bc013c9ddf4ae415115798bc" args="()" --> <a class="anchor" id="a619ffee1bc013c9ddf4ae415115798bc"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">bool DS3232RTC::hasUpdates </td> <td class="memname">bool DS3232RTC::hasUpdates </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if the realtime clock has updated since the last call to this function. </p> <p>Returns true if the realtime clock has updated since the last call to this function. </p>
<p>The default implementation returns true, indicating that an update is always available to be read. </p> <p>The default implementation returns true, indicating that an update is always available to be read. </p>
@@ -325,9 +398,12 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="a09c7073c687dcbbc423baf48074c7873"></a><!-- doxytag: member="DS3232RTC::readAlarm" ref="a09c7073c687dcbbc423baf48074c7873" args="(uint8_t alarmNum, RTCAlarm *value)" --> <a class="anchor" id="a09c7073c687dcbbc423baf48074c7873"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void DS3232RTC::readAlarm </td> <td class="memname">void DS3232RTC::readAlarm </td>
@@ -344,16 +420,20 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<tr> <tr>
<td></td> <td></td>
<td>)</td> <td>)</td>
<td></td><td><code> [virtual]</code></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads the details of the alarm with index <em>alarmNum</em> into <em>value</em>. </p> <p>Reads the details of the alarm with index <em>alarmNum</em> into <em>value</em>. </p>
<p>The <em>alarmNum</em> parameter must be between 0 and <a class="el" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">ALARM_COUNT</a> - 1.</p> <p>The <em>alarmNum</em> parameter must be between 0 and <a class="el" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">ALARM_COUNT</a> - 1.</p>
<p>Alarm details are stored at the end of the realtime clock's non-volatile memory.</p> <p>Alarm details are stored at the end of the realtime clock's non-volatile memory.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75" title="Updates the details of the alarm with index alarmNum from value.">writeAlarm()</a>, alarmCount() </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75" title="Updates the details of the alarm with index alarmNum from value.">writeAlarm()</a>, alarmCount() </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66">RTC</a>.</p>
@@ -361,24 +441,31 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="a5ba83a3ef7d65d45c2f3241afdd8fef7"></a><!-- doxytag: member="DS3232RTC::readByte" ref="a5ba83a3ef7d65d45c2f3241afdd8fef7" args="(uint8_t offset)" --> <a class="anchor" id="a5ba83a3ef7d65d45c2f3241afdd8fef7"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">uint8_t DS3232RTC::readByte </td> <td class="memname">uint8_t DS3232RTC::readByte </td>
<td>(</td> <td>(</td>
<td class="paramtype">uint8_t&#160;</td> <td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>offset</em></td><td>)</td> <td class="paramname"><em>offset</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads the byte at <em>offset</em> within the realtime clock's non-volatile memory. </p> <p>Reads the byte at <em>offset</em> within the realtime clock's non-volatile memory. </p>
<p>The <em>offset</em> parameter must be between 0 and <a class="el" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> - 1.</p> <p>The <em>offset</em> parameter must be between 0 and <a class="el" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> - 1.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">writeByte()</a>, <a class="el" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a" title="Writes value to offset within the realtime clock&#39;s non-volatile memory.">writeByte()</a>, <a class="el" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#a0f47b10b436e3f9d36e04ec907579431">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#a0f47b10b436e3f9d36e04ec907579431">RTC</a>.</p>
@@ -386,24 +473,31 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="ab03358e3b5996e38d766e2f9f6ab62ca"></a><!-- doxytag: member="DS3232RTC::readDate" ref="ab03358e3b5996e38d766e2f9f6ab62ca" args="(RTCDate *value)" --> <a class="anchor" id="ab03358e3b5996e38d766e2f9f6ab62ca"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void DS3232RTC::readDate </td> <td class="memname">void DS3232RTC::readDate </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="structRTCDate.html">RTCDate</a> *&#160;</td> <td class="paramtype"><a class="el" href="structRTCDate.html">RTCDate</a> *&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td> <td class="paramname"><em>value</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads the current date from the realtime clock into <em>value</em>. </p> <p>Reads the current date from the realtime clock into <em>value</em>. </p>
<p>The time should be read first with <a class="el" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747" title="Reads the current time from the realtime clock into value.">readTime()</a> as the default implementation only advances the date when the time is read and it crosses midnight.</p> <p>The time should be read first with <a class="el" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747" title="Reads the current time from the realtime clock into value.">readTime()</a> as the default implementation only advances the date when the time is read and it crosses midnight.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed" title="Updates the date in the realtime clock to match value.">writeDate()</a>, <a class="el" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747" title="Reads the current time from the realtime clock into value.">readTime()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed" title="Updates the date in the realtime clock to match value.">writeDate()</a>, <a class="el" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747" title="Reads the current time from the realtime clock into value.">readTime()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e">RTC</a>.</p>
@@ -411,19 +505,26 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="a0faf40c25ab019a326a60f301c2bb41b"></a><!-- doxytag: member="DS3232RTC::readTemperature" ref="a0faf40c25ab019a326a60f301c2bb41b" args="()" --> <a class="anchor" id="a0faf40c25ab019a326a60f301c2bb41b"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">int DS3232RTC::readTemperature </td> <td class="memname">int DS3232RTC::readTemperature </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius. </p> <p>Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius. </p>
<p>Returns the value NO_TEMPERATURE if the realtime clock chip cannot determine the temperature. </p> <p>Returns the value NO_TEMPERATURE if the realtime clock chip cannot determine the temperature. </p>
@@ -434,23 +535,30 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="af89e68c68f1c4b7e94286f800b5b2747"></a><!-- doxytag: member="DS3232RTC::readTime" ref="af89e68c68f1c4b7e94286f800b5b2747" args="(RTCTime *value)" --> <a class="anchor" id="af89e68c68f1c4b7e94286f800b5b2747"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void DS3232RTC::readTime </td> <td class="memname">void DS3232RTC::readTime </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="structRTCTime.html">RTCTime</a> *&#160;</td> <td class="paramtype"><a class="el" href="structRTCTime.html">RTCTime</a> *&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td> <td class="paramname"><em>value</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads the current time from the realtime clock into <em>value</em>. </p> <p>Reads the current time from the realtime clock into <em>value</em>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78" title="Updates the time in the realtime clock to match value.">writeTime()</a>, <a class="el" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca" title="Reads the current date from the realtime clock into value.">readDate()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78" title="Updates the time in the realtime clock to match value.">writeTime()</a>, <a class="el" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca" title="Reads the current date from the realtime clock into value.">readDate()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec">RTC</a>.</p>
@@ -458,9 +566,12 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="a8b0a65e0ac479aec8fad6ca3147dbe75"></a><!-- doxytag: member="DS3232RTC::writeAlarm" ref="a8b0a65e0ac479aec8fad6ca3147dbe75" args="(uint8_t alarmNum, const RTCAlarm *value)" --> <a class="anchor" id="a8b0a65e0ac479aec8fad6ca3147dbe75"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void DS3232RTC::writeAlarm </td> <td class="memname">void DS3232RTC::writeAlarm </td>
@@ -477,16 +588,20 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<tr> <tr>
<td></td> <td></td>
<td>)</td> <td>)</td>
<td></td><td><code> [virtual]</code></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Updates the details of the alarm with index <em>alarmNum</em> from <em>value</em>. </p> <p>Updates the details of the alarm with index <em>alarmNum</em> from <em>value</em>. </p>
<p>The <em>alarmNum</em> parameter must be between 0 and <a class="el" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">ALARM_COUNT</a> - 1.</p> <p>The <em>alarmNum</em> parameter must be between 0 and <a class="el" href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">ALARM_COUNT</a> - 1.</p>
<p>Alarm details are stored at the end of the realtime clock's non-volatile memory.</p> <p>Alarm details are stored at the end of the realtime clock's non-volatile memory.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873" title="Reads the details of the alarm with index alarmNum into value.">readAlarm()</a>, alarmCount() </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873" title="Reads the details of the alarm with index alarmNum into value.">readAlarm()</a>, alarmCount() </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e">RTC</a>.</p>
@@ -494,9 +609,12 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="a9acebf12c5cecdd6d84e0ff9ed41765a"></a><!-- doxytag: member="DS3232RTC::writeByte" ref="a9acebf12c5cecdd6d84e0ff9ed41765a" args="(uint8_t offset, uint8_t value)" --> <a class="anchor" id="a9acebf12c5cecdd6d84e0ff9ed41765a"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void DS3232RTC::writeByte </td> <td class="memname">void DS3232RTC::writeByte </td>
@@ -513,15 +631,19 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<tr> <tr>
<td></td> <td></td>
<td>)</td> <td>)</td>
<td></td><td><code> [virtual]</code></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Writes <em>value</em> to <em>offset</em> within the realtime clock's non-volatile memory. </p> <p>Writes <em>value</em> to <em>offset</em> within the realtime clock's non-volatile memory. </p>
<p>The <em>offset</em> parameter must be between 0 and <a class="el" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> - 1.</p> <p>The <em>offset</em> parameter must be between 0 and <a class="el" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> - 1.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">readByte()</a>, <a class="el" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7" title="Reads the byte at offset within the realtime clock&#39;s non-volatile memory.">readByte()</a>, <a class="el" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e" title="Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...">byteCount()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#a1cab6397ec04b1e2b3feea5b3cd1f749">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#a1cab6397ec04b1e2b3feea5b3cd1f749">RTC</a>.</p>
@@ -529,23 +651,30 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="a31c004a90c724979d8267c31f2dbf5ed"></a><!-- doxytag: member="DS3232RTC::writeDate" ref="a31c004a90c724979d8267c31f2dbf5ed" args="(const RTCDate *value)" --> <a class="anchor" id="a31c004a90c724979d8267c31f2dbf5ed"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void DS3232RTC::writeDate </td> <td class="memname">void DS3232RTC::writeDate </td>
<td>(</td> <td>(</td>
<td class="paramtype">const <a class="el" href="structRTCDate.html">RTCDate</a> *&#160;</td> <td class="paramtype">const <a class="el" href="structRTCDate.html">RTCDate</a> *&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td> <td class="paramname"><em>value</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Updates the date in the realtime clock to match <em>value</em>. </p> <p>Updates the date in the realtime clock to match <em>value</em>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca" title="Reads the current date from the realtime clock into value.">readDate()</a>, <a class="el" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78" title="Updates the time in the realtime clock to match value.">writeTime()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca" title="Reads the current date from the realtime clock into value.">readDate()</a>, <a class="el" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78" title="Updates the time in the realtime clock to match value.">writeTime()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7">RTC</a>.</p>
@@ -553,23 +682,30 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div> </div>
</div> </div>
<a class="anchor" id="ab0ca13a8b80da856b37fc53b84e27c78"></a><!-- doxytag: member="DS3232RTC::writeTime" ref="ab0ca13a8b80da856b37fc53b84e27c78" args="(const RTCTime *value)" --> <a class="anchor" id="ab0ca13a8b80da856b37fc53b84e27c78"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void DS3232RTC::writeTime </td> <td class="memname">void DS3232RTC::writeTime </td>
<td>(</td> <td>(</td>
<td class="paramtype">const <a class="el" href="structRTCTime.html">RTCTime</a> *&#160;</td> <td class="paramtype">const <a class="el" href="structRTCTime.html">RTCTime</a> *&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td> <td class="paramname"><em>value</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Updates the time in the realtime clock to match <em>value</em>. </p> <p>Updates the time in the realtime clock to match <em>value</em>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747" title="Reads the current time from the realtime clock into value.">readTime()</a>, <a class="el" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed" title="Updates the date in the realtime clock to match value.">writeDate()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747" title="Reads the current time from the realtime clock into value.">readTime()</a>, <a class="el" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed" title="Updates the date in the realtime clock to match value.">writeDate()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e">RTC</a>.</p> <p>Reimplemented from <a class="el" href="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e">RTC</a>.</p>
@@ -581,23 +717,12 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<li><a class="el" href="DS3232RTC_8h_source.html">DS3232RTC.h</a></li> <li><a class="el" href="DS3232RTC_8h_source.html">DS3232RTC.h</a></li>
<li><a class="el" href="DS3232RTC_8cpp_source.html">DS3232RTC.cpp</a></li> <li><a class="el" href="DS3232RTC_8cpp_source.html">DS3232RTC.cpp</a></li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 372 B

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,28 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">EEPROM24 Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classEEPROM24.html">EEPROM24</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf">available</a>()</td><td><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classEEPROM24.html#ae8547f6ff7711496e1959ee24a142995">EEPROM24</a>(I2CMaster &amp;bus, unsigned long type, uint8_t bank=0)</td><td><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a">pageSize</a>() const </td><td><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586">read</a>(unsigned long address)</td><td><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classEEPROM24.html#a63e23dc014415f947975359ac09f627e">read</a>(unsigned long address, void *data, size_t length)</td><td><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c">size</a>() const </td><td><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8">write</a>(unsigned long address, uint8_t value)</td><td><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classEEPROM24.html#a3d918ed34da7ca6d21a776c0614eebf3">write</a>(unsigned long address, const void *data, size_t length)</td><td><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -88,8 +80,29 @@ This is the complete list of members for <a class="el" href="classEEPROM24.html"
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">EEPROM24 Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classEEPROM24.html">EEPROM24</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf">available</a>()</td><td class="entry"><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classEEPROM24.html#ae8547f6ff7711496e1959ee24a142995">EEPROM24</a>(I2CMaster &amp;bus, unsigned long type, uint8_t bank=0)</td><td class="entry"><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a">pageSize</a>() const </td><td class="entry"><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586">read</a>(unsigned long address)</td><td class="entry"><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classEEPROM24.html#a63e23dc014415f947975359ac09f627e">read</a>(unsigned long address, void *data, size_t length)</td><td class="entry"><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c">size</a>() const </td><td class="entry"><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8">write</a>(unsigned long address, uint8_t value)</td><td class="entry"><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classEEPROM24.html#a3d918ed34da7ca6d21a776c0614eebf3">write</a>(unsigned long address, const void *data, size_t length)</td><td class="entry"><a class="el" href="classEEPROM24.html">EEPROM24</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: EEPROM24 Class Reference</title> <title>ArduinoLibs: EEPROM24 Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,51 +66,64 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div> <a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classEEPROM24-members.html">List of all members</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">EEPROM24 Class Reference</div> </div> <div class="title">EEPROM24 Class Reference</div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<!-- doxytag: class="EEPROM24" -->
<p>Reading and writing EEPROM's from the 24LCXX family. <p>Reading and writing EEPROM's from the 24LCXX family.
<a href="classEEPROM24.html#details">More...</a></p> <a href="classEEPROM24.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="EEPROM24_8h_source.html">EEPROM24.h</a>&gt;</code></p> <p><code>#include &lt;<a class="el" href="EEPROM24_8h_source.html">EEPROM24.h</a>&gt;</code></p>
<p><a href="classEEPROM24-members.html">List of all members.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr> Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#ae8547f6ff7711496e1959ee24a142995">EEPROM24</a> (<a class="el" href="classI2CMaster.html">I2CMaster</a> &amp;bus, unsigned long type, uint8_t bank=0)</td></tr> <tr class="memitem:ae8547f6ff7711496e1959ee24a142995"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#ae8547f6ff7711496e1959ee24a142995">EEPROM24</a> (<a class="el" href="classI2CMaster.html">I2CMaster</a> &amp;bus, unsigned long type, uint8_t bank=0)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new EEPROM access object on <em>bus</em> for an EEPROM of the specified <em>type</em>. <a href="#ae8547f6ff7711496e1959ee24a142995"></a><br/></td></tr> <tr class="memdesc:ae8547f6ff7711496e1959ee24a142995"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new EEPROM access object on <em>bus</em> for an EEPROM of the specified <em>type</em>. <a href="#ae8547f6ff7711496e1959ee24a142995"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c">size</a> () const </td></tr> <tr class="memitem:aa544875cef9bd05bf71d6c19be06cf7c"><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c">size</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the size of the EEPROM in bytes. <a href="#aa544875cef9bd05bf71d6c19be06cf7c"></a><br/></td></tr> <tr class="memdesc:aa544875cef9bd05bf71d6c19be06cf7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the size of the EEPROM in bytes. <a href="#aa544875cef9bd05bf71d6c19be06cf7c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a">pageSize</a> () const </td></tr> <tr class="memitem:af33b23e2614f3966bbaf2554890c032a"><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a">pageSize</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the size of a single EEPROM page in bytes. <a href="#af33b23e2614f3966bbaf2554890c032a"></a><br/></td></tr> <tr class="memdesc:af33b23e2614f3966bbaf2554890c032a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the size of a single EEPROM page in bytes. <a href="#af33b23e2614f3966bbaf2554890c032a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf">available</a> ()</td></tr> <tr class="memitem:af8b70971d882b06de3fc6644a8ece3cf"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf">available</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the EEPROM is available on the I2C bus; false otherwise. <a href="#af8b70971d882b06de3fc6644a8ece3cf"></a><br/></td></tr> <tr class="memdesc:af8b70971d882b06de3fc6644a8ece3cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the EEPROM is available on the I2C bus; false otherwise. <a href="#af8b70971d882b06de3fc6644a8ece3cf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586">read</a> (unsigned long address)</td></tr> <tr class="memitem:a960971377d4decb122ff38d12603e586"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586">read</a> (unsigned long address)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads a single byte from the EEPROM at <em>address</em>. <a href="#a960971377d4decb122ff38d12603e586"></a><br/></td></tr> <tr class="memdesc:a960971377d4decb122ff38d12603e586"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads a single byte from the EEPROM at <em>address</em>. <a href="#a960971377d4decb122ff38d12603e586"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#a63e23dc014415f947975359ac09f627e">read</a> (unsigned long address, void *data, size_t length)</td></tr> <tr class="memitem:a63e23dc014415f947975359ac09f627e"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#a63e23dc014415f947975359ac09f627e">read</a> (unsigned long address, void *data, size_t length)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads a block of <em>length</em> bytes from the EEPROM at <em>address</em> into the specified <em>data</em> buffer. <a href="#a63e23dc014415f947975359ac09f627e"></a><br/></td></tr> <tr class="memdesc:a63e23dc014415f947975359ac09f627e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads a block of <em>length</em> bytes from the EEPROM at <em>address</em> into the specified <em>data</em> buffer. <a href="#a63e23dc014415f947975359ac09f627e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8">write</a> (unsigned long address, uint8_t value)</td></tr> <tr class="memitem:a9e017772e3459ee4ab987e27d78937f8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8">write</a> (unsigned long address, uint8_t value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes a byte <em>value</em> to <em>address</em> in the EEPROM. <a href="#a9e017772e3459ee4ab987e27d78937f8"></a><br/></td></tr> <tr class="memdesc:a9e017772e3459ee4ab987e27d78937f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes a byte <em>value</em> to <em>address</em> in the EEPROM. <a href="#a9e017772e3459ee4ab987e27d78937f8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#a3d918ed34da7ca6d21a776c0614eebf3">write</a> (unsigned long address, const void *data, size_t length)</td></tr> <tr class="memitem:a3d918ed34da7ca6d21a776c0614eebf3"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEEPROM24.html#a3d918ed34da7ca6d21a776c0614eebf3">write</a> (unsigned long address, const void *data, size_t length)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes <em>length</em> bytes from a <em>data</em> buffer to <em>address</em> in the EEPROM. <a href="#a3d918ed34da7ca6d21a776c0614eebf3"></a><br/></td></tr> <tr class="memdesc:a3d918ed34da7ca6d21a776c0614eebf3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes <em>length</em> bytes from a <em>data</em> buffer to <em>address</em> in the EEPROM. <a href="#a3d918ed34da7ca6d21a776c0614eebf3"></a><br/></td></tr>
</table> </table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Reading and writing EEPROM's from the 24LCXX family. </p> <div class="textblock"><p>Reading and writing EEPROM's from the 24LCXX family. </p>
<p>The 24LCXX family of EEPROM's provide a variety of memory sizes from 16 bytes up to 128 kBytes that can be accessed via the I2C protocol. These chips can be used to augment the 1 kByte or so of builtin EEPROM memory that is typical on Arduino boards. The EEPROM should be wired to an Arduino Uno as follows:</p> <p>The 24LCXX family of EEPROM's provide a variety of memory sizes from 16 bytes up to 128 kBytes that can be accessed via the I2C protocol. These chips can be used to augment the 1 kByte or so of builtin EEPROM memory that is typical on Arduino boards. The EEPROM should be wired to an Arduino Uno as follows:</p>
<div class="image"> <div class="image">
<img src="eeprom_circuit.png" alt="eeprom_circuit.png"/> <img src="eeprom_circuit.png" alt="eeprom_circuit.png"/>
</div> </div>
<p>Access to a 24LCXX chip is initialized as follows:</p> <p>Access to a 24LCXX chip is initialized as follows:</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classSoftI2C.html" title="Bit-banged implementation of an I2C master.">SoftI2C</a> i2c(A4, A5); <div class="fragment"><div class="line"><a class="code" href="classSoftI2C.html" title="Bit-banged implementation of an I2C master.">SoftI2C</a> i2c(A4, A5);</div>
<a class="code" href="classEEPROM24.html" title="Reading and writing EEPROM&#39;s from the 24LCXX family.">EEPROM24</a> eeprom(i2c, EEPROM_24LC256); <div class="line"><a class="code" href="classEEPROM24.html" title="Reading and writing EEPROM&#39;s from the 24LCXX family.">EEPROM24</a> eeprom(i2c, EEPROM_24LC256);</div>
</pre></div><p>Once initialized, <a class="el" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">read()</a> and <a class="el" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">write()</a> can be used to manipulate the contents of the EEPROM's memory.</p> </div><!-- fragment --><p>Once initialized, <a class="el" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">read()</a> and <a class="el" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">write()</a> can be used to manipulate the contents of the EEPROM's memory.</p>
<p>The following EEPROM types are supported by this class:</p> <p>The following EEPROM types are supported by this class:</p>
<table class="doxtable"> <table class="doxtable">
<tr> <tr>
@@ -141,14 +162,14 @@ Public Member Functions</h2></td></tr>
<td>24lc1026</td><td><code>EEPROM_24LC1026</code> </td><td>128 kBytes </td></tr> <td>24lc1026</td><td><code>EEPROM_24LC1026</code> </td><td>128 kBytes </td></tr>
</table> </table>
<p>There can be multiple 24LCXX chips on the same I2C bus, as long as their A0, A1, and A2 address pins are set to different values. For example, two 24LC256 chips can be used to provide the same memory capacity as a single 24LC512 chip. The optional <em>bank</em> parameter to the constructor is used to assign different bank addresses to each chip:</p> <p>There can be multiple 24LCXX chips on the same I2C bus, as long as their A0, A1, and A2 address pins are set to different values. For example, two 24LC256 chips can be used to provide the same memory capacity as a single 24LC512 chip. The optional <em>bank</em> parameter to the constructor is used to assign different bank addresses to each chip:</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classSoftI2C.html" title="Bit-banged implementation of an I2C master.">SoftI2C</a> i2c(A4, A5); <div class="fragment"><div class="line"><a class="code" href="classSoftI2C.html" title="Bit-banged implementation of an I2C master.">SoftI2C</a> i2c(A4, A5);</div>
<a class="code" href="classEEPROM24.html" title="Reading and writing EEPROM&#39;s from the 24LCXX family.">EEPROM24</a> eeprom0(i2c, EEPROM_24LC256, 0); <div class="line"><a class="code" href="classEEPROM24.html" title="Reading and writing EEPROM&#39;s from the 24LCXX family.">EEPROM24</a> eeprom0(i2c, EEPROM_24LC256, 0);</div>
<a class="code" href="classEEPROM24.html" title="Reading and writing EEPROM&#39;s from the 24LCXX family.">EEPROM24</a> eeprom1(i2c, EEPROM_24LC256, 1); <div class="line"><a class="code" href="classEEPROM24.html" title="Reading and writing EEPROM&#39;s from the 24LCXX family.">EEPROM24</a> eeprom1(i2c, EEPROM_24LC256, 1);</div>
</pre></div><dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> </dd></dl> </div><!-- fragment --><dl class="section see"><dt>See Also</dt><dd><a class="el" href="classI2CMaster.html" title="Abstract base class for I2C master implementations.">I2CMaster</a> </dd></dl>
<p>Definition at line <a class="el" href="EEPROM24_8h_source.html#l00060">60</a> of file <a class="el" href="EEPROM24_8h_source.html">EEPROM24.h</a>.</p> <p>Definition at line <a class="el" href="EEPROM24_8h_source.html#l00060">60</a> of file <a class="el" href="EEPROM24_8h_source.html">EEPROM24.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2> </div><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ae8547f6ff7711496e1959ee24a142995"></a><!-- doxytag: member="EEPROM24::EEPROM24" ref="ae8547f6ff7711496e1959ee24a142995" args="(I2CMaster &amp;bus, unsigned long type, uint8_t bank=0)" --> <a class="anchor" id="ae8547f6ff7711496e1959ee24a142995"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -176,8 +197,7 @@ Public Member Functions</h2></td></tr>
<td></td><td></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Constructs a new EEPROM access object on <em>bus</em> for an EEPROM of the specified <em>type</em>. </p> <p>Constructs a new EEPROM access object on <em>bus</em> for an EEPROM of the specified <em>type</em>. </p>
<p>The <em>bank</em> can be used to choose between multiple EEPROM's on <em>bus</em> of the specified <em>type</em>. The <em>bank</em> corresponds to the value that is set on the EEPROM's A0, A1, and A2 address pins. Note that some EEPROM's have less than 3 address pins; consult the datasheet for more information. </p> <p>The <em>bank</em> can be used to choose between multiple EEPROM's on <em>bus</em> of the specified <em>type</em>. The <em>bank</em> corresponds to the value that is set on the EEPROM's A0, A1, and A2 address pins. Note that some EEPROM's have less than 3 address pins; consult the datasheet for more information. </p>
@@ -186,8 +206,8 @@ Public Member Functions</h2></td></tr>
</div> </div>
</div> </div>
<hr/><h2>Member Function Documentation</h2> <h2>Member Function Documentation</h2>
<a class="anchor" id="af8b70971d882b06de3fc6644a8ece3cf"></a><!-- doxytag: member="EEPROM24::available" ref="af8b70971d882b06de3fc6644a8ece3cf" args="()" --> <a class="anchor" id="af8b70971d882b06de3fc6644a8ece3cf"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -198,40 +218,46 @@ Public Member Functions</h2></td></tr>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Returns true if the EEPROM is available on the I2C bus; false otherwise. </p> <p>Returns true if the EEPROM is available on the I2C bus; false otherwise. </p>
<p>This function can be used to probe the I2C bus to determine if the EEPROM is present or not.</p> <p>This function can be used to probe the I2C bus to determine if the EEPROM is present or not.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">read()</a>, <a class="el" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">write()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">read()</a>, <a class="el" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">write()</a> </dd></dl>
<p>Definition at line <a class="el" href="EEPROM24_8cpp_source.html#l00152">152</a> of file <a class="el" href="EEPROM24_8cpp_source.html">EEPROM24.cpp</a>.</p> <p>Definition at line <a class="el" href="EEPROM24_8cpp_source.html#l00152">152</a> of file <a class="el" href="EEPROM24_8cpp_source.html">EEPROM24.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="af33b23e2614f3966bbaf2554890c032a"></a><!-- doxytag: member="EEPROM24::pageSize" ref="af33b23e2614f3966bbaf2554890c032a" args="() const " --> <a class="anchor" id="af33b23e2614f3966bbaf2554890c032a"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">unsigned long EEPROM24::pageSize </td> <td class="memname">unsigned long EEPROM24::pageSize </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the size of a single EEPROM page in bytes. </p> <p>Returns the size of a single EEPROM page in bytes. </p>
<p>Writes that are a multiple of the page size and aligned on a page boundary will typically be more efficient than non-aligned writes.</p> <p>Writes that are a multiple of the page size and aligned on a page boundary will typically be more efficient than non-aligned writes.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c" title="Returns the size of the EEPROM in bytes.">size()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c" title="Returns the size of the EEPROM in bytes.">size()</a> </dd></dl>
<p>Definition at line <a class="el" href="EEPROM24_8h_source.html#l00066">66</a> of file <a class="el" href="EEPROM24_8h_source.html">EEPROM24.h</a>.</p> <p>Definition at line <a class="el" href="EEPROM24_8h_source.html#l00066">66</a> of file <a class="el" href="EEPROM24_8h_source.html">EEPROM24.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a960971377d4decb122ff38d12603e586"></a><!-- doxytag: member="EEPROM24::read" ref="a960971377d4decb122ff38d12603e586" args="(unsigned long address)" --> <a class="anchor" id="a960971377d4decb122ff38d12603e586"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -243,17 +269,16 @@ Public Member Functions</h2></td></tr>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Reads a single byte from the EEPROM at <em>address</em>. </p> <p>Reads a single byte from the EEPROM at <em>address</em>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">write()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">write()</a> </dd></dl>
<p>Definition at line <a class="el" href="EEPROM24_8cpp_source.html#l00167">167</a> of file <a class="el" href="EEPROM24_8cpp_source.html">EEPROM24.cpp</a>.</p> <p>Definition at line <a class="el" href="EEPROM24_8cpp_source.html#l00167">167</a> of file <a class="el" href="EEPROM24_8cpp_source.html">EEPROM24.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a63e23dc014415f947975359ac09f627e"></a><!-- doxytag: member="EEPROM24::read" ref="a63e23dc014415f947975359ac09f627e" args="(unsigned long address, void *data, size_t length)" --> <a class="anchor" id="a63e23dc014415f947975359ac09f627e"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -281,39 +306,77 @@ Public Member Functions</h2></td></tr>
<td></td><td></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Reads a block of <em>length</em> bytes from the EEPROM at <em>address</em> into the specified <em>data</em> buffer. </p> <p>Reads a block of <em>length</em> bytes from the EEPROM at <em>address</em> into the specified <em>data</em> buffer. </p>
<p>Returns the number of bytes that were read, which may be short if <em>address</em> + <em>length</em> is greater than <a class="el" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c" title="Returns the size of the EEPROM in bytes.">size()</a> or the EEPROM is not available on the I2C bus.</p> <p>Returns the number of bytes that were read, which may be short if <em>address</em> + <em>length</em> is greater than <a class="el" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c" title="Returns the size of the EEPROM in bytes.">size()</a> or the EEPROM is not available on the I2C bus.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">write()</a>, <a class="el" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf" title="Returns true if the EEPROM is available on the I2C bus; false otherwise.">available()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8" title="Writes a byte value to address in the EEPROM.">write()</a>, <a class="el" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf" title="Returns true if the EEPROM is available on the I2C bus; false otherwise.">available()</a> </dd></dl>
<p>Definition at line <a class="el" href="EEPROM24_8cpp_source.html#l00187">187</a> of file <a class="el" href="EEPROM24_8cpp_source.html">EEPROM24.cpp</a>.</p> <p>Definition at line <a class="el" href="EEPROM24_8cpp_source.html#l00187">187</a> of file <a class="el" href="EEPROM24_8cpp_source.html">EEPROM24.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="aa544875cef9bd05bf71d6c19be06cf7c"></a><!-- doxytag: member="EEPROM24::size" ref="aa544875cef9bd05bf71d6c19be06cf7c" args="() const " --> <a class="anchor" id="aa544875cef9bd05bf71d6c19be06cf7c"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">unsigned long EEPROM24::size </td> <td class="memname">unsigned long EEPROM24::size </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the size of the EEPROM in bytes. </p> <p>Returns the size of the EEPROM in bytes. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a" title="Returns the size of a single EEPROM page in bytes.">pageSize()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a" title="Returns the size of a single EEPROM page in bytes.">pageSize()</a> </dd></dl>
<p>Definition at line <a class="el" href="EEPROM24_8h_source.html#l00065">65</a> of file <a class="el" href="EEPROM24_8h_source.html">EEPROM24.h</a>.</p> <p>Definition at line <a class="el" href="EEPROM24_8h_source.html#l00065">65</a> of file <a class="el" href="EEPROM24_8h_source.html">EEPROM24.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a3d918ed34da7ca6d21a776c0614eebf3"></a><!-- doxytag: member="EEPROM24::write" ref="a3d918ed34da7ca6d21a776c0614eebf3" args="(unsigned long address, const void *data, size_t length)" --> <a class="anchor" id="a9e017772e3459ee4ab987e27d78937f8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool EEPROM24::write </td>
<td>(</td>
<td class="paramtype">unsigned long&#160;</td>
<td class="paramname"><em>address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Writes a byte <em>value</em> to <em>address</em> in the EEPROM. </p>
<p>Returns true if the byte was written successfully, or false if <em>address</em> is out of range or the EEPROM is not available on the I2C bus.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">read()</a>, <a class="el" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf" title="Returns true if the EEPROM is available on the I2C bus; false otherwise.">available()</a> </dd></dl>
<p>Definition at line <a class="el" href="EEPROM24_8cpp_source.html#l00213">213</a> of file <a class="el" href="EEPROM24_8cpp_source.html">EEPROM24.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a3d918ed34da7ca6d21a776c0614eebf3"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -341,72 +404,27 @@ Public Member Functions</h2></td></tr>
<td></td><td></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Writes <em>length</em> bytes from a <em>data</em> buffer to <em>address</em> in the EEPROM. </p> <p>Writes <em>length</em> bytes from a <em>data</em> buffer to <em>address</em> in the EEPROM. </p>
<p>Returns the number of bytes that were written, which may be short if <em>address</em> + <em>length</em> is greater than <a class="el" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c" title="Returns the size of the EEPROM in bytes.">size()</a> or the EEPROM is not available on the I2C bus.</p> <p>Returns the number of bytes that were written, which may be short if <em>address</em> + <em>length</em> is greater than <a class="el" href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c" title="Returns the size of the EEPROM in bytes.">size()</a> or the EEPROM is not available on the I2C bus.</p>
<p>Best performance will be achieved if <em>address</em> and <em>length</em> are a multiple of <a class="el" href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a" title="Returns the size of a single EEPROM page in bytes.">pageSize()</a>.</p> <p>Best performance will be achieved if <em>address</em> and <em>length</em> are a multiple of <a class="el" href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a" title="Returns the size of a single EEPROM page in bytes.">pageSize()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">read()</a>, <a class="el" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf" title="Returns true if the EEPROM is available on the I2C bus; false otherwise.">available()</a>, <a class="el" href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a" title="Returns the size of a single EEPROM page in bytes.">pageSize()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">read()</a>, <a class="el" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf" title="Returns true if the EEPROM is available on the I2C bus; false otherwise.">available()</a>, <a class="el" href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a" title="Returns the size of a single EEPROM page in bytes.">pageSize()</a> </dd></dl>
<p>Definition at line <a class="el" href="EEPROM24_8cpp_source.html#l00235">235</a> of file <a class="el" href="EEPROM24_8cpp_source.html">EEPROM24.cpp</a>.</p> <p>Definition at line <a class="el" href="EEPROM24_8cpp_source.html#l00235">235</a> of file <a class="el" href="EEPROM24_8cpp_source.html">EEPROM24.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a9e017772e3459ee4ab987e27d78937f8"></a><!-- doxytag: member="EEPROM24::write" ref="a9e017772e3459ee4ab987e27d78937f8" args="(unsigned long address, uint8_t value)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool EEPROM24::write </td>
<td>(</td>
<td class="paramtype">unsigned long&#160;</td>
<td class="paramname"><em>address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Writes a byte <em>value</em> to <em>address</em> in the EEPROM. </p>
<p>Returns true if the byte was written successfully, or false if <em>address</em> is out of range or the EEPROM is not available on the I2C bus.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586" title="Reads a single byte from the EEPROM at address.">read()</a>, <a class="el" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf" title="Returns true if the EEPROM is available on the I2C bus; false otherwise.">available()</a> </dd></dl>
<p>Definition at line <a class="el" href="EEPROM24_8cpp_source.html#l00213">213</a> of file <a class="el" href="EEPROM24_8cpp_source.html">EEPROM24.cpp</a>.</p>
</div> </div>
</div> </div>
<hr/>The documentation for this class was generated from the following files:<ul> <hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="EEPROM24_8h_source.html">EEPROM24.h</a></li> <li><a class="el" href="EEPROM24_8h_source.html">EEPROM24.h</a></li>
<li><a class="el" href="EEPROM24_8cpp_source.html">EEPROM24.cpp</a></li> <li><a class="el" href="EEPROM24_8cpp_source.html">EEPROM24.cpp</a></li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,33 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Field Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classField.html">Field</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3">dispatch</a>(int event)</td><td><a class="el" href="classField.html">Field</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">enterField</a>(bool reverse)</td><td><a class="el" href="classField.html">Field</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">exitField</a>()</td><td><a class="el" href="classField.html">Field</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">Field</a>(const String &amp;label)</td><td><a class="el" href="classField.html">Field</a></td><td><code> [explicit]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a7e2bdb203ddfd9219696f263c1731fe7">Field</a>(Form &amp;form, const String &amp;label)</td><td><a class="el" href="classField.html">Field</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>() const </td><td><a class="el" href="classField.html">Field</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Form</b> (defined in <a class="el" href="classField.html">Field</a>)</td><td><a class="el" href="classField.html">Field</a></td><td><code> [friend]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a25d86a67b321e8c642edf75a10a35f72">isCurrent</a>() const </td><td><a class="el" href="classField.html">Field</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>() const </td><td><a class="el" href="classField.html">Field</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">lcd</a>() const </td><td><a class="el" href="classField.html">Field</a></td><td><code> [inline, protected]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b">setLabel</a>(const String &amp;label)</td><td><a class="el" href="classField.html">Field</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#afc612378167be0e7f8a6f8395b3537bd">updateCursor</a>()</td><td><a class="el" href="classField.html">Field</a></td><td><code> [protected, virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60">~Field</a>()</td><td><a class="el" href="classField.html">Field</a></td><td></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -93,8 +80,34 @@ This is the complete list of members for <a class="el" href="classField.html">Fi
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">Field Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classField.html">Field</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3">dispatch</a>(int event)</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">enterField</a>(bool reverse)</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">exitField</a>()</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">Field</a>(const String &amp;label)</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#a7e2bdb203ddfd9219696f263c1731fe7">Field</a>(Form &amp;form, const String &amp;label)</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>() const </td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"class="even"><td class="entry"><b>Form</b> (defined in <a class="el" href="classField.html">Field</a>)</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#a25d86a67b321e8c642edf75a10a35f72">isCurrent</a>() const </td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>() const </td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">lcd</a>() const </td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b">setLabel</a>(const String &amp;label)</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#afc612378167be0e7f8a6f8395b3537bd">updateCursor</a>()</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60">~Field</a>()</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Field Class Reference</title> <title>ArduinoLibs: Field Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,17 +66,32 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124; <a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124; <a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#friends">Friends</a> </div> <a href="#friends">Friends</a> &#124;
<a href="classField-members.html">List of all members</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">Field Class Reference</div> </div> <div class="title">Field Class Reference</div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<!-- doxytag: class="Field" -->
<p>Manages a single data input/output field within a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. <p>Manages a single data input/output field within a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>.
<a href="classField.html#details">More...</a></p> <a href="classField.html#details">More...</a></p>
@@ -86,75 +109,82 @@ Inheritance diagram for Field:</div>
<area href="classTimeField.html" title="Field that manages the display and editing of a time value." alt="TimeField" shape="rect" coords="304,56,370,80"/> <area href="classTimeField.html" title="Field that manages the display and editing of a time value." alt="TimeField" shape="rect" coords="304,56,370,80"/>
</map> </map>
</div></div> </div></div>
<p><a href="classField-members.html">List of all members.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr> Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">Field</a> (const String &amp;label)</td></tr> <tr class="memitem:ac4ea0d104376233c3f0bfc080ec8564e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">Field</a> (const String &amp;<a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new field with a specific <em>label</em>. <a href="#ac4ea0d104376233c3f0bfc080ec8564e"></a><br/></td></tr> <tr class="memdesc:ac4ea0d104376233c3f0bfc080ec8564e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new field with a specific <em>label</em>. <a href="#ac4ea0d104376233c3f0bfc080ec8564e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e2bdb203ddfd9219696f263c1731fe7"></a><!-- doxytag: member="Field::Field" ref="a7e2bdb203ddfd9219696f263c1731fe7" args="(Form &amp;form, const String &amp;label)" --> <tr class="memitem:a7e2bdb203ddfd9219696f263c1731fe7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e2bdb203ddfd9219696f263c1731fe7"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a7e2bdb203ddfd9219696f263c1731fe7">Field</a> (<a class="el" href="classForm.html">Form</a> &amp;form, const String &amp;label)</td></tr> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a7e2bdb203ddfd9219696f263c1731fe7">Field</a> (<a class="el" href="classForm.html">Form</a> &amp;<a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>, const String &amp;<a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new field with a specific <em>label</em> and attaches it to a <em>form</em>. <br/></td></tr> <tr class="memdesc:a7e2bdb203ddfd9219696f263c1731fe7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new field with a specific <em>label</em> and attaches it to a <em>form</em>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60">~Field</a> ()</td></tr> <tr class="memitem:a45d6e6d09b8f8e46de62b40119d62c60"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60">~Field</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys this field and removes it from its owning <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. <a href="#a45d6e6d09b8f8e46de62b40119d62c60"></a><br/></td></tr> <tr class="memdesc:a45d6e6d09b8f8e46de62b40119d62c60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys this field and removes it from its owning <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. <a href="#a45d6e6d09b8f8e46de62b40119d62c60"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27427319be1cc92db3128637d8884ee5"></a><!-- doxytag: member="Field::form" ref="a27427319be1cc92db3128637d8884ee5" args="() const " --> <tr class="memitem:a27427319be1cc92db3128637d8884ee5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27427319be1cc92db3128637d8884ee5"></a>
<a class="el" href="classForm.html">Form</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a> () const </td></tr> <a class="el" href="classForm.html">Form</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> that owns this field; null if not associated with a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. <br/></td></tr> <tr class="memdesc:a27427319be1cc92db3128637d8884ee5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> that owns this field; null if not associated with a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3">dispatch</a> (int event)</td></tr> <tr class="memitem:a061bd1ed4d8b079df86465df8facd3b3"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3">dispatch</a> (int event)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatches <em>event</em> via this field. <a href="#a061bd1ed4d8b079df86465df8facd3b3"></a><br/></td></tr> <tr class="memdesc:a061bd1ed4d8b079df86465df8facd3b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatches <em>event</em> via this field. <a href="#a061bd1ed4d8b079df86465df8facd3b3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">enterField</a> (bool reverse)</td></tr> <tr class="memitem:aa032bbeacb405c56546cb56fbbee94f5"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">enterField</a> (bool reverse)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enters the field due to form navigation. <a href="#aa032bbeacb405c56546cb56fbbee94f5"></a><br/></td></tr> <tr class="memdesc:aa032bbeacb405c56546cb56fbbee94f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enters the field due to form navigation. <a href="#aa032bbeacb405c56546cb56fbbee94f5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">exitField</a> ()</td></tr> <tr class="memitem:ad6805c75ee1e62f8cd8bd550c4530c07"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">exitField</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Exits the field due to form navigation. <a href="#ad6805c75ee1e62f8cd8bd550c4530c07"></a><br/></td></tr> <tr class="memdesc:ad6805c75ee1e62f8cd8bd550c4530c07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exits the field due to form navigation. <a href="#ad6805c75ee1e62f8cd8bd550c4530c07"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const String &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a> () const </td></tr> <tr class="memitem:aaa861ef917130c989a955bc75c683afe"><td class="memItemLeft" align="right" valign="top">const String &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the label to display in the first line of this field. <a href="#aaa861ef917130c989a955bc75c683afe"></a><br/></td></tr> <tr class="memdesc:aaa861ef917130c989a955bc75c683afe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the label to display in the first line of this field. <a href="#aaa861ef917130c989a955bc75c683afe"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b">setLabel</a> (const String &amp;label)</td></tr> <tr class="memitem:ad4ea63599d780c35b296cf2840b69f7b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b">setLabel</a> (const String &amp;<a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <em>label</em> to display in the first line of this field. <a href="#ad4ea63599d780c35b296cf2840b69f7b"></a><br/></td></tr> <tr class="memdesc:ad4ea63599d780c35b296cf2840b69f7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <em>label</em> to display in the first line of this field. <a href="#ad4ea63599d780c35b296cf2840b69f7b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a25d86a67b321e8c642edf75a10a35f72">isCurrent</a> () const </td></tr> <tr class="memitem:a25d86a67b321e8c642edf75a10a35f72"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a25d86a67b321e8c642edf75a10a35f72">isCurrent</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if this field is the currently-displayed field in its owning form; false otherwise. <a href="#a25d86a67b321e8c642edf75a10a35f72"></a><br/></td></tr> <tr class="memdesc:a25d86a67b321e8c642edf75a10a35f72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if this field is the currently-displayed field in its owning form; false otherwise. <a href="#a25d86a67b321e8c642edf75a10a35f72"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a> </table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr> Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cf21bf958a71e51feac9e1bf9f599d1"></a><!-- doxytag: member="Field::lcd" ref="a5cf21bf958a71e51feac9e1bf9f599d1" args="() const " --> <tr class="memitem:a5cf21bf958a71e51feac9e1bf9f599d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cf21bf958a71e51feac9e1bf9f599d1"></a>
LiquidCrystal *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">lcd</a> () const </td></tr> LiquidCrystal *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">lcd</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> that this field is being drawn on. <br/></td></tr> <tr class="memdesc:a5cf21bf958a71e51feac9e1bf9f599d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> that this field is being drawn on. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#afc612378167be0e7f8a6f8395b3537bd">updateCursor</a> ()</td></tr> <tr class="memitem:afc612378167be0e7f8a6f8395b3537bd"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#afc612378167be0e7f8a6f8395b3537bd">updateCursor</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the cursor position after the label has been drawn by <a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b" title="Sets the label to display in the first line of this field.">setLabel()</a>. <a href="#afc612378167be0e7f8a6f8395b3537bd"></a><br/></td></tr> <tr class="memdesc:afc612378167be0e7f8a6f8395b3537bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the cursor position after the label has been drawn by <a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b" title="Sets the label to display in the first line of this field.">setLabel()</a>. <a href="#afc612378167be0e7f8a6f8395b3537bd"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="friends"></a> </table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="friends"></a>
Friends</h2></td></tr> Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a75f6d4e61f8386b6958279e02d9e38ea"></a><!-- doxytag: member="Field::Form" ref="a75f6d4e61f8386b6958279e02d9e38ea" args="" --> <tr class="memitem:a75f6d4e61f8386b6958279e02d9e38ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a75f6d4e61f8386b6958279e02d9e38ea"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a75f6d4e61f8386b6958279e02d9e38ea">Form</a></td></tr> class&#160;</td><td class="memItemRight" valign="bottom"><b>Form</b></td></tr>
</table> </table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Manages a single data input/output field within a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. </p> <div class="textblock"><p>Manages a single data input/output field within a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>, <a class="el" href="classBoolField.html" title="Field that manages the input of a boolean value.">BoolField</a>, <a class="el" href="classIntField.html" title="Field that manages the input of an integer value.">IntField</a>, <a class="el" href="classListField.html" title="Field that manages selection from a static list of items.">ListField</a>, <a class="el" href="classTextField.html" title="Field that displays a read-only text value.">TextField</a>, <a class="el" href="classTimeField.html" title="Field that manages the display and editing of a time value.">TimeField</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>, <a class="el" href="classBoolField.html" title="Field that manages the input of a boolean value.">BoolField</a>, <a class="el" href="classIntField.html" title="Field that manages the input of an integer value.">IntField</a>, <a class="el" href="classListField.html" title="Field that manages selection from a static list of items.">ListField</a>, <a class="el" href="classTextField.html" title="Field that displays a read-only text value.">TextField</a>, <a class="el" href="classTimeField.html" title="Field that manages the display and editing of a time value.">TimeField</a> </dd></dl>
<p>Definition at line <a class="el" href="Field_8h_source.html#l00028">28</a> of file <a class="el" href="Field_8h_source.html">Field.h</a>.</p> <p>Definition at line <a class="el" href="Field_8h_source.html#l00028">28</a> of file <a class="el" href="Field_8h_source.html">Field.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2> </div><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ac4ea0d104376233c3f0bfc080ec8564e"></a><!-- doxytag: member="Field::Field" ref="ac4ea0d104376233c3f0bfc080ec8564e" args="(const String &amp;label)" --> <a class="anchor" id="ac4ea0d104376233c3f0bfc080ec8564e"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">Field::Field </td> <td class="memname">Field::Field </td>
<td>(</td> <td>(</td>
<td class="paramtype">const String &amp;&#160;</td> <td class="paramtype">const String &amp;&#160;</td>
<td class="paramname"><em>label</em></td><td>)</td> <td class="paramname"><em>label</em></td><td>)</td>
<td><code> [explicit]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructs a new field with a specific <em>label</em>. </p> <p>Constructs a new field with a specific <em>label</em>. </p>
<p>The field is initially not associated with a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. The field can be added to a form later using <a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">Form::addField()</a>.</p> <p>The field is initially not associated with a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. The field can be added to a form later using <a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">Form::addField()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">Form::addField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">Form::addField()</a> </dd></dl>
<p>Definition at line <a class="el" href="Field_8cpp_source.html#l00040">40</a> of file <a class="el" href="Field_8cpp_source.html">Field.cpp</a>.</p> <p>Definition at line <a class="el" href="Field_8cpp_source.html#l00040">40</a> of file <a class="el" href="Field_8cpp_source.html">Field.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a45d6e6d09b8f8e46de62b40119d62c60"></a><!-- doxytag: member="Field::~Field" ref="a45d6e6d09b8f8e46de62b40119d62c60" args="()" --> <a class="anchor" id="a45d6e6d09b8f8e46de62b40119d62c60"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -165,89 +195,109 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Destroys this field and removes it from its owning <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. </p> <p>Destroys this field and removes it from its owning <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a7abd717029f9b19ee7318470072cd697" title="Removes field from this form.">Form::removeField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a7abd717029f9b19ee7318470072cd697" title="Removes field from this form.">Form::removeField()</a> </dd></dl>
<p>Definition at line <a class="el" href="Field_8cpp_source.html#l00066">66</a> of file <a class="el" href="Field_8cpp_source.html">Field.cpp</a>.</p> <p>Definition at line <a class="el" href="Field_8cpp_source.html#l00066">66</a> of file <a class="el" href="Field_8cpp_source.html">Field.cpp</a>.</p>
</div> </div>
</div> </div>
<hr/><h2>Member Function Documentation</h2> <h2>Member Function Documentation</h2>
<a class="anchor" id="a061bd1ed4d8b079df86465df8facd3b3"></a><!-- doxytag: member="Field::dispatch" ref="a061bd1ed4d8b079df86465df8facd3b3" args="(int event)" --> <a class="anchor" id="a061bd1ed4d8b079df86465df8facd3b3"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">int Field::dispatch </td> <td class="memname">int Field::dispatch </td>
<td>(</td> <td>(</td>
<td class="paramtype">int&#160;</td> <td class="paramtype">int&#160;</td>
<td class="paramname"><em>event</em></td><td>)</td> <td class="paramname"><em>event</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Dispatches <em>event</em> via this field. </p> <p>Dispatches <em>event</em> via this field. </p>
<p>The <em>event</em> is usually obtained from <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a>.</p> <p>The <em>event</em> is usually obtained from <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a>.</p>
<p>Returns zero if the <em>event</em> has been handled and no further action is required.</p> <p>Returns zero if the <em>event</em> has been handled and no further action is required.</p>
<p>Returns FORM_CHANGED if the <em>event</em> has changed the value of this field in a manner that may require the application to take further action based on the new field value.</p> <p>Returns FORM_CHANGED if the <em>event</em> has changed the value of this field in a manner that may require the application to take further action based on the new field value.</p>
<p>Returns -1 if the <em>event</em> is not handled by this field, and should be handled by the <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> itself (particularly for Left and Right buttons). The default implementation returns -1 for all events.</p> <p>Returns -1 if the <em>event</em> is not handled by this field, and should be handled by the <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> itself (particularly for Left and Right buttons). The default implementation returns -1 for all events.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee" title="Dispatches event to the currently active field using Field::dispatch().">Form::dispatch()</a>, <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee" title="Dispatches event to the currently active field using Field::dispatch().">Form::dispatch()</a>, <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a> </dd></dl>
<p>Reimplemented in <a class="el" href="classBoolField.html#af793bafc1193d79b495c2ede711bca57">BoolField</a>, <a class="el" href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f">IntField</a>, <a class="el" href="classListField.html#a5d752bd561cde735b175bcdfda55832a">ListField</a>, and <a class="el" href="classTimeField.html#a9b953d9abdbe960a3fa34938462832e5">TimeField</a>.</p> <p>Reimplemented in <a class="el" href="classListField.html#a5d752bd561cde735b175bcdfda55832a">ListField</a>, <a class="el" href="classTimeField.html#a9b953d9abdbe960a3fa34938462832e5">TimeField</a>, <a class="el" href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f">IntField</a>, and <a class="el" href="classBoolField.html#af793bafc1193d79b495c2ede711bca57">BoolField</a>.</p>
<p>Definition at line <a class="el" href="Field_8cpp_source.html#l00096">96</a> of file <a class="el" href="Field_8cpp_source.html">Field.cpp</a>.</p> <p>Definition at line <a class="el" href="Field_8cpp_source.html#l00096">96</a> of file <a class="el" href="Field_8cpp_source.html">Field.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="aa032bbeacb405c56546cb56fbbee94f5"></a><!-- doxytag: member="Field::enterField" ref="aa032bbeacb405c56546cb56fbbee94f5" args="(bool reverse)" --> <a class="anchor" id="aa032bbeacb405c56546cb56fbbee94f5"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void Field::enterField </td> <td class="memname">void Field::enterField </td>
<td>(</td> <td>(</td>
<td class="paramtype">bool&#160;</td> <td class="paramtype">bool&#160;</td>
<td class="paramname"><em>reverse</em></td><td>)</td> <td class="paramname"><em>reverse</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Enters the field due to form navigation. </p> <p>Enters the field due to form navigation. </p>
<p>This function is typically called when the user presses Left and Right buttons to navigate to the field. If <em>reverse</em> is true, then navigation was due to the Left button being pressed.</p> <p>This function is typically called when the user presses Left and Right buttons to navigate to the field. If <em>reverse</em> is true, then navigation was due to the Left button being pressed.</p>
<p>This function can assume that the display has been cleared and the cursor is positioned at (0, 0).</p> <p>This function can assume that the display has been cleared and the cursor is positioned at (0, 0).</p>
<p>The default implementation prints the <a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label()</a>.</p> <p>The default implementation prints the <a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07" title="Exits the field due to form navigation.">exitField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07" title="Exits the field due to form navigation.">exitField()</a> </dd></dl>
<p>Reimplemented in <a class="el" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09">BoolField</a>, <a class="el" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a">IntField</a>, <a class="el" href="classListField.html#a191b79b460e45cf48e04b04eface2888">ListField</a>, <a class="el" href="classTextField.html#aa78f1354f9240b64fabd6f996e312f32">TextField</a>, and <a class="el" href="classTimeField.html#ae914d6b870283a334d2d669460f7646b">TimeField</a>.</p> <p>Reimplemented in <a class="el" href="classListField.html#a191b79b460e45cf48e04b04eface2888">ListField</a>, <a class="el" href="classTimeField.html#ae914d6b870283a334d2d669460f7646b">TimeField</a>, <a class="el" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a">IntField</a>, <a class="el" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09">BoolField</a>, and <a class="el" href="classTextField.html#aa78f1354f9240b64fabd6f996e312f32">TextField</a>.</p>
<p>Definition at line <a class="el" href="Field_8cpp_source.html#l00116">116</a> of file <a class="el" href="Field_8cpp_source.html">Field.cpp</a>.</p> <p>Definition at line <a class="el" href="Field_8cpp_source.html#l00116">116</a> of file <a class="el" href="Field_8cpp_source.html">Field.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="ad6805c75ee1e62f8cd8bd550c4530c07"></a><!-- doxytag: member="Field::exitField" ref="ad6805c75ee1e62f8cd8bd550c4530c07" args="()" --> <a class="anchor" id="ad6805c75ee1e62f8cd8bd550c4530c07"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void Field::exitField </td> <td class="memname">void Field::exitField </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Exits the field due to form navigation. </p> <p>Exits the field due to form navigation. </p>
<p>This function is typically called when the user presses Left and Right buttons to navigate from the field.</p> <p>This function is typically called when the user presses Left and Right buttons to navigate from the field.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5" title="Enters the field due to form navigation.">enterField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5" title="Enters the field due to form navigation.">enterField()</a> </dd></dl>
<p>Reimplemented in <a class="el" href="classTimeField.html#a5a6b7db2e3fda7745e0ff9c3d8d9a541">TimeField</a>.</p> <p>Reimplemented in <a class="el" href="classTimeField.html#a5a6b7db2e3fda7745e0ff9c3d8d9a541">TimeField</a>.</p>
@@ -255,7 +305,7 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
</div> </div>
</div> </div>
<a class="anchor" id="a25d86a67b321e8c642edf75a10a35f72"></a><!-- doxytag: member="Field::isCurrent" ref="a25d86a67b321e8c642edf75a10a35f72" args="() const " --> <a class="anchor" id="a25d86a67b321e8c642edf75a10a35f72"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -266,8 +316,7 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<td> const</td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Returns true if this field is the currently-displayed field in its owning form; false otherwise. </p> <p>Returns true if this field is the currently-displayed field in its owning form; false otherwise. </p>
<p>This function should be called from property setters in subclasses to determine if the screen should be updated when a property is modified. </p> <p>This function should be called from property setters in subclasses to determine if the screen should be updated when a property is modified. </p>
@@ -276,28 +325,35 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
</div> </div>
</div> </div>
<a class="anchor" id="aaa861ef917130c989a955bc75c683afe"></a><!-- doxytag: member="Field::label" ref="aaa861ef917130c989a955bc75c683afe" args="() const " --> <a class="anchor" id="aaa861ef917130c989a955bc75c683afe"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">const String &amp; Field::label </td> <td class="memname">const String &amp; Field::label </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the label to display in the first line of this field. </p> <p>Returns the label to display in the first line of this field. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b" title="Sets the label to display in the first line of this field.">setLabel()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b" title="Sets the label to display in the first line of this field.">setLabel()</a> </dd></dl>
<p>Definition at line <a class="el" href="Field_8h_source.html#l00041">41</a> of file <a class="el" href="Field_8h_source.html">Field.h</a>.</p> <p>Definition at line <a class="el" href="Field_8h_source.html#l00041">41</a> of file <a class="el" href="Field_8h_source.html">Field.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="ad4ea63599d780c35b296cf2840b69f7b"></a><!-- doxytag: member="Field::setLabel" ref="ad4ea63599d780c35b296cf2840b69f7b" args="(const String &amp;label)" --> <a class="anchor" id="ad4ea63599d780c35b296cf2840b69f7b"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -309,33 +365,39 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Sets the <em>label</em> to display in the first line of this field. </p> <p>Sets the <em>label</em> to display in the first line of this field. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label()</a> </dd></dl>
<p>Definition at line <a class="el" href="Field_8cpp_source.html#l00146">146</a> of file <a class="el" href="Field_8cpp_source.html">Field.cpp</a>.</p> <p>Definition at line <a class="el" href="Field_8cpp_source.html#l00146">146</a> of file <a class="el" href="Field_8cpp_source.html">Field.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="afc612378167be0e7f8a6f8395b3537bd"></a><!-- doxytag: member="Field::updateCursor" ref="afc612378167be0e7f8a6f8395b3537bd" args="()" --> <a class="anchor" id="afc612378167be0e7f8a6f8395b3537bd"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void Field::updateCursor </td> <td class="memname">void Field::updateCursor </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td><code> [protected, virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Updates the cursor position after the label has been drawn by <a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b" title="Sets the label to display in the first line of this field.">setLabel()</a>. </p> <p>Updates the cursor position after the label has been drawn by <a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b" title="Sets the label to display in the first line of this field.">setLabel()</a>. </p>
<p>The default implementation does nothing. Subclasses that use an <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> cursor may override this to ensure that the cursor position stays valid after the label is modified.</p> <p>The default implementation does nothing. Subclasses that use an <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> cursor may override this to ensure that the cursor position stays valid after the label is modified.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b" title="Sets the label to display in the first line of this field.">setLabel()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b" title="Sets the label to display in the first line of this field.">setLabel()</a> </dd></dl>
<p>Definition at line <a class="el" href="Field_8cpp_source.html#l00191">191</a> of file <a class="el" href="Field_8cpp_source.html">Field.cpp</a>.</p> <p>Definition at line <a class="el" href="Field_8cpp_source.html#l00191">191</a> of file <a class="el" href="Field_8cpp_source.html">Field.cpp</a>.</p>
@@ -345,23 +407,12 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<li><a class="el" href="Field_8h_source.html">Field.h</a></li> <li><a class="el" href="Field_8h_source.html">Field.h</a></li>
<li><a class="el" href="Field_8cpp_source.html">Field.cpp</a></li> <li><a class="el" href="Field_8cpp_source.html">Field.cpp</a></li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 655 B

After

Width:  |  Height:  |  Size: 852 B

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,35 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Form Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classForm.html">Form</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7">addField</a>(Field *field)</td><td><a class="el" href="classForm.html">Form</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8">currentField</a>() const </td><td><a class="el" href="classForm.html">Form</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b">defaultField</a>()</td><td><a class="el" href="classForm.html">Form</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee">dispatch</a>(int event)</td><td><a class="el" href="classForm.html">Form</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><b>Field</b> (defined in <a class="el" href="classForm.html">Form</a>)</td><td><a class="el" href="classForm.html">Form</a></td><td><code> [friend]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classForm.html#ad30836b22edde707a52d94090b716996">Form</a>(LiquidCrystal &amp;lcd)</td><td><a class="el" href="classForm.html">Form</a></td><td><code> [explicit]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9">hide</a>()</td><td><a class="el" href="classForm.html">Form</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789">isCurrent</a>(Field &amp;field) const </td><td><a class="el" href="classForm.html">Form</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587">isVisible</a>() const </td><td><a class="el" href="classForm.html">Form</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1">nextField</a>()</td><td><a class="el" href="classForm.html">Form</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90">prevField</a>()</td><td><a class="el" href="classForm.html">Form</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classForm.html#a7abd717029f9b19ee7318470072cd697">removeField</a>(Field *field)</td><td><a class="el" href="classForm.html">Form</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5">setCurrentField</a>(Field *field)</td><td><a class="el" href="classForm.html">Form</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65">show</a>()</td><td><a class="el" href="classForm.html">Form</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f">~Form</a>()</td><td><a class="el" href="classForm.html">Form</a></td><td></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -95,8 +80,36 @@ This is the complete list of members for <a class="el" href="classForm.html">For
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">Form Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classForm.html">Form</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7">addField</a>(Field *field)</td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8">currentField</a>() const </td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b">defaultField</a>()</td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee">dispatch</a>(int event)</td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"class="even"><td class="entry"><b>Field</b> (defined in <a class="el" href="classForm.html">Form</a>)</td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr><td class="entry"><a class="el" href="classForm.html#ad30836b22edde707a52d94090b716996">Form</a>(LiquidCrystal &amp;lcd)</td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9">hide</a>()</td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789">isCurrent</a>(Field &amp;field) const </td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587">isVisible</a>() const </td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1">nextField</a>()</td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90">prevField</a>()</td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classForm.html#a7abd717029f9b19ee7318470072cd697">removeField</a>(Field *field)</td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5">setCurrentField</a>(Field *field)</td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65">show</a>()</td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f">~Form</a>()</td><td class="entry"><a class="el" href="classForm.html">Form</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Form Class Reference</title> <title>ArduinoLibs: Form Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,85 +66,106 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124; <a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#friends">Friends</a> </div> <a href="#friends">Friends</a> &#124;
<a href="classForm-members.html">List of all members</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">Form Class Reference</div> </div> <div class="title">Form Class Reference</div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<!-- doxytag: class="Form" -->
<p>Manager for a form containing data input/output fields. <p>Manager for a form containing data input/output fields.
<a href="classForm.html#details">More...</a></p> <a href="classForm.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="Form_8h_source.html">Form.h</a>&gt;</code></p> <p><code>#include &lt;<a class="el" href="Form_8h_source.html">Form.h</a>&gt;</code></p>
<p><a href="classForm-members.html">List of all members.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr> Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#ad30836b22edde707a52d94090b716996">Form</a> (LiquidCrystal &amp;lcd)</td></tr> <tr class="memitem:ad30836b22edde707a52d94090b716996"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#ad30836b22edde707a52d94090b716996">Form</a> (LiquidCrystal &amp;lcd)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new form and associates it with <em>lcd</em>. <a href="#ad30836b22edde707a52d94090b716996"></a><br/></td></tr> <tr class="memdesc:ad30836b22edde707a52d94090b716996"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new form and associates it with <em>lcd</em>. <a href="#ad30836b22edde707a52d94090b716996"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cda7cce41e81bfaca51e922d4f9b98f"></a><!-- doxytag: member="Form::~Form" ref="a9cda7cce41e81bfaca51e922d4f9b98f" args="()" --> <tr class="memitem:a9cda7cce41e81bfaca51e922d4f9b98f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cda7cce41e81bfaca51e922d4f9b98f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f">~Form</a> ()</td></tr> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f">~Form</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Detaches all remaining fields and destroys this form. <br/></td></tr> <tr class="memdesc:a9cda7cce41e81bfaca51e922d4f9b98f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Detaches all remaining fields and destroys this form. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee">dispatch</a> (int event)</td></tr> <tr class="memitem:a89bd3850e87caa2ca7b2e946f923d0ee"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee">dispatch</a> (int event)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatches <em>event</em> to the currently active field using <a class="el" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3" title="Dispatches event via this field.">Field::dispatch()</a>. <a href="#a89bd3850e87caa2ca7b2e946f923d0ee"></a><br/></td></tr> <tr class="memdesc:a89bd3850e87caa2ca7b2e946f923d0ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatches <em>event</em> to the currently active field using <a class="el" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3" title="Dispatches event via this field.">Field::dispatch()</a>. <a href="#a89bd3850e87caa2ca7b2e946f923d0ee"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1">nextField</a> ()</td></tr> <tr class="memitem:a788a186ea4a7ebd75283a948ca45f4d1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1">nextField</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes to the next field in the "tab order". <a href="#a788a186ea4a7ebd75283a948ca45f4d1"></a><br/></td></tr> <tr class="memdesc:a788a186ea4a7ebd75283a948ca45f4d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes to the next field in the "tab order". <a href="#a788a186ea4a7ebd75283a948ca45f4d1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90">prevField</a> ()</td></tr> <tr class="memitem:acb080fe4f4631e9060e6efab8eaa0a90"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90">prevField</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes to the previous field in the "tab order". <a href="#acb080fe4f4631e9060e6efab8eaa0a90"></a><br/></td></tr> <tr class="memdesc:acb080fe4f4631e9060e6efab8eaa0a90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes to the previous field in the "tab order". <a href="#acb080fe4f4631e9060e6efab8eaa0a90"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b">defaultField</a> ()</td></tr> <tr class="memitem:aba75b59f68b31dd77dbbac9ab5c3124b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b">defaultField</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes to default field (i.e., the first field). <a href="#aba75b59f68b31dd77dbbac9ab5c3124b"></a><br/></td></tr> <tr class="memdesc:aba75b59f68b31dd77dbbac9ab5c3124b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes to default field (i.e., the first field). <a href="#aba75b59f68b31dd77dbbac9ab5c3124b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7">addField</a> (<a class="el" href="classField.html">Field</a> *field)</td></tr> <tr class="memitem:a5cb056ace428e75e321610555bfecac7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7">addField</a> (<a class="el" href="classField.html">Field</a> *field)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds <em>field</em> to this form. <a href="#a5cb056ace428e75e321610555bfecac7"></a><br/></td></tr> <tr class="memdesc:a5cb056ace428e75e321610555bfecac7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds <em>field</em> to this form. <a href="#a5cb056ace428e75e321610555bfecac7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a7abd717029f9b19ee7318470072cd697">removeField</a> (<a class="el" href="classField.html">Field</a> *field)</td></tr> <tr class="memitem:a7abd717029f9b19ee7318470072cd697"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a7abd717029f9b19ee7318470072cd697">removeField</a> (<a class="el" href="classField.html">Field</a> *field)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes <em>field</em> from this form. <a href="#a7abd717029f9b19ee7318470072cd697"></a><br/></td></tr> <tr class="memdesc:a7abd717029f9b19ee7318470072cd697"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes <em>field</em> from this form. <a href="#a7abd717029f9b19ee7318470072cd697"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classField.html">Field</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8">currentField</a> () const </td></tr> <tr class="memitem:a85a219a73294cef1f89a2182b5c25bf8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classField.html">Field</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8">currentField</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current field that is displayed on-screen. <a href="#a85a219a73294cef1f89a2182b5c25bf8"></a><br/></td></tr> <tr class="memdesc:a85a219a73294cef1f89a2182b5c25bf8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current field that is displayed on-screen. <a href="#a85a219a73294cef1f89a2182b5c25bf8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5">setCurrentField</a> (<a class="el" href="classField.html">Field</a> *field)</td></tr> <tr class="memitem:ae6004fedfa07191ffd47d7b12370b4e5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5">setCurrentField</a> (<a class="el" href="classField.html">Field</a> *field)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current <em>field</em> that is displayed on-screen. <a href="#ae6004fedfa07191ffd47d7b12370b4e5"></a><br/></td></tr> <tr class="memdesc:ae6004fedfa07191ffd47d7b12370b4e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current <em>field</em> that is displayed on-screen. <a href="#ae6004fedfa07191ffd47d7b12370b4e5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789">isCurrent</a> (<a class="el" href="classField.html">Field</a> &amp;field) const </td></tr> <tr class="memitem:a48fb77f93e77b28b0397b59e1e9bf789"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789">isCurrent</a> (<a class="el" href="classField.html">Field</a> &amp;field) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if <em>field</em> is currently displayed on-screen, false otherwise. <a href="#a48fb77f93e77b28b0397b59e1e9bf789"></a><br/></td></tr> <tr class="memdesc:a48fb77f93e77b28b0397b59e1e9bf789"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if <em>field</em> is currently displayed on-screen, false otherwise. <a href="#a48fb77f93e77b28b0397b59e1e9bf789"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65">show</a> ()</td></tr> <tr class="memitem:a9e8d718ab55a8034c22c606ccfa90d65"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65">show</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Shows the form, or does nothing if the form is already on-screen. <a href="#a9e8d718ab55a8034c22c606ccfa90d65"></a><br/></td></tr> <tr class="memdesc:a9e8d718ab55a8034c22c606ccfa90d65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shows the form, or does nothing if the form is already on-screen. <a href="#a9e8d718ab55a8034c22c606ccfa90d65"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9">hide</a> ()</td></tr> <tr class="memitem:a88b9146a3f68e837c5e831203096f9e9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9">hide</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Hides the form, or does nothing if the form is not on-screen. <a href="#a88b9146a3f68e837c5e831203096f9e9"></a><br/></td></tr> <tr class="memdesc:a88b9146a3f68e837c5e831203096f9e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hides the form, or does nothing if the form is not on-screen. <a href="#a88b9146a3f68e837c5e831203096f9e9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587">isVisible</a> () const </td></tr> <tr class="memitem:a3101f288e3e5aa8307c57f35861ad587"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587">isVisible</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the form is shown; false if the form is hidden. <a href="#a3101f288e3e5aa8307c57f35861ad587"></a><br/></td></tr> <tr class="memdesc:a3101f288e3e5aa8307c57f35861ad587"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the form is shown; false if the form is hidden. <a href="#a3101f288e3e5aa8307c57f35861ad587"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="friends"></a> </table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="friends"></a>
Friends</h2></td></tr> Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaec47a26a3c11c1debd3ed922b69cbd2"></a><!-- doxytag: member="Form::Field" ref="aaec47a26a3c11c1debd3ed922b69cbd2" args="" --> <tr class="memitem:aaec47a26a3c11c1debd3ed922b69cbd2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaec47a26a3c11c1debd3ed922b69cbd2"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classForm.html#aaec47a26a3c11c1debd3ed922b69cbd2">Field</a></td></tr> class&#160;</td><td class="memItemRight" valign="bottom"><b>Field</b></td></tr>
</table> </table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Manager for a form containing data input/output fields. </p> <div class="textblock"><p>Manager for a form containing data input/output fields. </p>
<p>See the <a class="el" href="lcd_form.html">Form example</a> for more information on creating an application that uses forms and fields. </p> <p>See the <a class="el" href="lcd_form.html">Form example</a> for more information on creating an application that uses forms and fields. </p>
<p>Definition at line <a class="el" href="Form_8h_source.html#l00032">32</a> of file <a class="el" href="Form_8h_source.html">Form.h</a>.</p> <p>Definition at line <a class="el" href="Form_8h_source.html#l00032">32</a> of file <a class="el" href="Form_8h_source.html">Form.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2> </div><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ad30836b22edde707a52d94090b716996"></a><!-- doxytag: member="Form::Form" ref="ad30836b22edde707a52d94090b716996" args="(LiquidCrystal &amp;lcd)" --> <a class="anchor" id="ad30836b22edde707a52d94090b716996"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">Form::Form </td> <td class="memname">Form::Form </td>
<td>(</td> <td>(</td>
<td class="paramtype">LiquidCrystal &amp;&#160;</td> <td class="paramtype">LiquidCrystal &amp;&#160;</td>
<td class="paramname"><em>lcd</em></td><td>)</td> <td class="paramname"><em>lcd</em></td><td>)</td>
<td><code> [explicit]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructs a new form and associates it with <em>lcd</em>. </p> <p>Constructs a new form and associates it with <em>lcd</em>. </p>
<p>This constructor is typically followed by calls to construct <a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> values for each of the fields on the form. For example:</p> <p>This constructor is typically followed by calls to construct <a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> values for each of the fields on the form. For example:</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> mainForm(lcd); <div class="fragment"><div class="line"><a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> mainForm(lcd);</div>
<a class="code" href="classTextField.html" title="Field that displays a read-only text value.">TextField</a> welcomeField(mainForm, <span class="stringliteral">&quot;Form example&quot;</span>, <span class="stringliteral">&quot;v1.0&quot;</span>); <div class="line"><a class="code" href="classTextField.html" title="Field that displays a read-only text value.">TextField</a> welcomeField(mainForm, <span class="stringliteral">&quot;Form example&quot;</span>, <span class="stringliteral">&quot;v1.0&quot;</span>);</div>
</pre></div><div class="image"> </div><!-- fragment --><div class="image">
<img src="FormText.png" alt="FormText.png"/> <img src="FormText.png" alt="FormText.png"/>
</div> </div>
@@ -144,8 +173,8 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
</div> </div>
</div> </div>
<hr/><h2>Member Function Documentation</h2> <h2>Member Function Documentation</h2>
<a class="anchor" id="a5cb056ace428e75e321610555bfecac7"></a><!-- doxytag: member="Form::addField" ref="a5cb056ace428e75e321610555bfecac7" args="(Field *field)" --> <a class="anchor" id="a5cb056ace428e75e321610555bfecac7"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -157,40 +186,46 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Adds <em>field</em> to this form. </p> <p>Adds <em>field</em> to this form. </p>
<p>Usually this function is not required because the field's constructor will add the field to the form automatically.</p> <p>Usually this function is not required because the field's constructor will add the field to the form automatically.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a7abd717029f9b19ee7318470072cd697" title="Removes field from this form.">removeField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a7abd717029f9b19ee7318470072cd697" title="Removes field from this form.">removeField()</a> </dd></dl>
<p>Definition at line <a class="el" href="Form_8cpp_source.html#l00165">165</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p> <p>Definition at line <a class="el" href="Form_8cpp_source.html#l00165">165</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a85a219a73294cef1f89a2182b5c25bf8"></a><!-- doxytag: member="Form::currentField" ref="a85a219a73294cef1f89a2182b5c25bf8" args="() const " --> <a class="anchor" id="a85a219a73294cef1f89a2182b5c25bf8"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname"><a class="el" href="classField.html">Field</a> * Form::currentField </td> <td class="memname"><a class="el" href="classField.html">Field</a> * Form::currentField </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the current field that is displayed on-screen. </p> <p>Returns the current field that is displayed on-screen. </p>
<p>Returns null if the form has no fields, or <a class="el" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField()</a> explicitly set the current field to null.</p> <p>Returns null if the form has no fields, or <a class="el" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField()</a> explicitly set the current field to null.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField()</a>, <a class="el" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789" title="Returns true if field is currently displayed on-screen, false otherwise.">isCurrent()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField()</a>, <a class="el" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789" title="Returns true if field is currently displayed on-screen, false otherwise.">isCurrent()</a> </dd></dl>
<p>Definition at line <a class="el" href="Form_8h_source.html#l00046">46</a> of file <a class="el" href="Form_8h_source.html">Form.h</a>.</p> <p>Definition at line <a class="el" href="Form_8h_source.html#l00046">46</a> of file <a class="el" href="Form_8h_source.html">Form.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="aba75b59f68b31dd77dbbac9ab5c3124b"></a><!-- doxytag: member="Form::defaultField" ref="aba75b59f68b31dd77dbbac9ab5c3124b" args="()" --> <a class="anchor" id="aba75b59f68b31dd77dbbac9ab5c3124b"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -201,17 +236,16 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Changes to default field (i.e., the first field). </p> <p>Changes to default field (i.e., the first field). </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1" title="Changes to the next field in the &quot;tab order&quot;.">nextField()</a>, <a class="el" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90" title="Changes to the previous field in the &quot;tab order&quot;.">prevField()</a>, <a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1" title="Changes to the next field in the &quot;tab order&quot;.">nextField()</a>, <a class="el" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90" title="Changes to the previous field in the &quot;tab order&quot;.">prevField()</a>, <a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a> </dd></dl>
<p>Definition at line <a class="el" href="Form_8cpp_source.html#l00152">152</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p> <p>Definition at line <a class="el" href="Form_8cpp_source.html#l00152">152</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a89bd3850e87caa2ca7b2e946f923d0ee"></a><!-- doxytag: member="Form::dispatch" ref="a89bd3850e87caa2ca7b2e946f923d0ee" args="(int event)" --> <a class="anchor" id="a89bd3850e87caa2ca7b2e946f923d0ee"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -223,28 +257,27 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Dispatches <em>event</em> to the currently active field using <a class="el" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3" title="Dispatches event via this field.">Field::dispatch()</a>. </p> <p>Dispatches <em>event</em> to the currently active field using <a class="el" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3" title="Dispatches event via this field.">Field::dispatch()</a>. </p>
<p>The <em>event</em> is usually obtained from <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a>.</p> <p>The <em>event</em> is usually obtained from <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a>.</p>
<p>Returns zero if the <em>event</em> has been handled and no further action is required.</p> <p>Returns zero if the <em>event</em> has been handled and no further action is required.</p>
<p>Returns FORM_CHANGED if one of the fields on the form has changed value due to the <em>event</em>, perhaps requiring the application to take further action based on the new field value. Use <a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a> or <a class="el" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789" title="Returns true if field is currently displayed on-screen, false otherwise.">isCurrent()</a> to determine which field has changed.</p> <p>Returns FORM_CHANGED if one of the fields on the form has changed value due to the <em>event</em>, perhaps requiring the application to take further action based on the new field value. Use <a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a> or <a class="el" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789" title="Returns true if field is currently displayed on-screen, false otherwise.">isCurrent()</a> to determine which field has changed.</p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">int</span> <span class="keyword">event</span> = lcd.<a class="code" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">getButton</a>(); <div class="fragment"><div class="line"><span class="keywordtype">int</span> <span class="keyword">event</span> = lcd.<a class="code" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">getButton</a>();</div>
<span class="keywordflow">if</span> (mainForm.dispatch(event) == FORM_CHANGED) { <div class="line"><span class="keywordflow">if</span> (mainForm.dispatch(event) == FORM_CHANGED) {</div>
<span class="keywordflow">if</span> (mainForm.isCurrent(volumeField)) { <div class="line"> <span class="keywordflow">if</span> (mainForm.isCurrent(volumeField)) {</div>
<span class="comment">// Adjust the volume to match the field.</span> <div class="line"> <span class="comment">// Adjust the volume to match the field.</span></div>
setVolume(volumeField.value()); <div class="line"> setVolume(volumeField.value());</div>
} <div class="line"> }</div>
} <div class="line">}</div>
</pre></div><p>This function handles the Left and Right buttons to navigate between fields.</p> </div><!-- fragment --><p>This function handles the Left and Right buttons to navigate between fields.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3" title="Dispatches event via this field.">Field::dispatch()</a>, <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a>, <a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a>, <a class="el" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789" title="Returns true if field is currently displayed on-screen, false otherwise.">isCurrent()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3" title="Dispatches event via this field.">Field::dispatch()</a>, <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a>, <a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a>, <a class="el" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789" title="Returns true if field is currently displayed on-screen, false otherwise.">isCurrent()</a> </dd></dl>
<p>Definition at line <a class="el" href="Form_8cpp_source.html#l00099">99</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p> <p>Definition at line <a class="el" href="Form_8cpp_source.html#l00099">99</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a88b9146a3f68e837c5e831203096f9e9"></a><!-- doxytag: member="Form::hide" ref="a88b9146a3f68e837c5e831203096f9e9" args="()" --> <a class="anchor" id="a88b9146a3f68e837c5e831203096f9e9"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -255,62 +288,75 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Hides the form, or does nothing if the form is not on-screen. </p> <p>Hides the form, or does nothing if the form is not on-screen. </p>
<p>The screen will be cleared to remove the contents of the current field.</p> <p>The screen will be cleared to remove the contents of the current field.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65" title="Shows the form, or does nothing if the form is already on-screen.">show()</a>, <a class="el" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587" title="Returns true if the form is shown; false if the form is hidden.">isVisible()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65" title="Shows the form, or does nothing if the form is already on-screen.">show()</a>, <a class="el" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587" title="Returns true if the form is shown; false if the form is hidden.">isVisible()</a> </dd></dl>
<p>Definition at line <a class="el" href="Form_8cpp_source.html#l00293">293</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p> <p>Definition at line <a class="el" href="Form_8cpp_source.html#l00293">293</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a48fb77f93e77b28b0397b59e1e9bf789"></a><!-- doxytag: member="Form::isCurrent" ref="a48fb77f93e77b28b0397b59e1e9bf789" args="(Field &amp;field) const " --> <a class="anchor" id="a48fb77f93e77b28b0397b59e1e9bf789"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">bool Form::isCurrent </td> <td class="memname">bool Form::isCurrent </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="classField.html">Field</a> &amp;&#160;</td> <td class="paramtype"><a class="el" href="classField.html">Field</a> &amp;&#160;</td>
<td class="paramname"><em>field</em></td><td>)</td> <td class="paramname"><em>field</em></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if <em>field</em> is currently displayed on-screen, false otherwise. </p> <p>Returns true if <em>field</em> is currently displayed on-screen, false otherwise. </p>
<p>This function is typically called after <a class="el" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee" title="Dispatches event to the currently active field using Field::dispatch().">dispatch()</a> returns FORM_CHANGED to determine which field has changed.</p> <p>This function is typically called after <a class="el" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee" title="Dispatches event to the currently active field using Field::dispatch().">dispatch()</a> returns FORM_CHANGED to determine which field has changed.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a>, <a class="el" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a>, <a class="el" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5" title="Sets the current field that is displayed on-screen.">setCurrentField()</a> </dd></dl>
<p>Definition at line <a class="el" href="Form_8h_source.html#l00049">49</a> of file <a class="el" href="Form_8h_source.html">Form.h</a>.</p> <p>Definition at line <a class="el" href="Form_8h_source.html#l00049">49</a> of file <a class="el" href="Form_8h_source.html">Form.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a3101f288e3e5aa8307c57f35861ad587"></a><!-- doxytag: member="Form::isVisible" ref="a3101f288e3e5aa8307c57f35861ad587" args="() const " --> <a class="anchor" id="a3101f288e3e5aa8307c57f35861ad587"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">bool Form::isVisible </td> <td class="memname">bool Form::isVisible </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if the form is shown; false if the form is hidden. </p> <p>Returns true if the form is shown; false if the form is hidden. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65" title="Shows the form, or does nothing if the form is already on-screen.">show()</a>, <a class="el" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9" title="Hides the form, or does nothing if the form is not on-screen.">hide()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65" title="Shows the form, or does nothing if the form is already on-screen.">show()</a>, <a class="el" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9" title="Hides the form, or does nothing if the form is not on-screen.">hide()</a> </dd></dl>
<p>Definition at line <a class="el" href="Form_8h_source.html#l00053">53</a> of file <a class="el" href="Form_8h_source.html">Form.h</a>.</p> <p>Definition at line <a class="el" href="Form_8h_source.html#l00053">53</a> of file <a class="el" href="Form_8h_source.html">Form.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a788a186ea4a7ebd75283a948ca45f4d1"></a><!-- doxytag: member="Form::nextField" ref="a788a186ea4a7ebd75283a948ca45f4d1" args="()" --> <a class="anchor" id="a788a186ea4a7ebd75283a948ca45f4d1"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -321,17 +367,16 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Changes to the next field in the "tab order". </p> <p>Changes to the next field in the "tab order". </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90" title="Changes to the previous field in the &quot;tab order&quot;.">prevField()</a>, <a class="el" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b" title="Changes to default field (i.e., the first field).">defaultField()</a>, <a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90" title="Changes to the previous field in the &quot;tab order&quot;.">prevField()</a>, <a class="el" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b" title="Changes to default field (i.e., the first field).">defaultField()</a>, <a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a> </dd></dl>
<p>Definition at line <a class="el" href="Form_8cpp_source.html#l00118">118</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p> <p>Definition at line <a class="el" href="Form_8cpp_source.html#l00118">118</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="acb080fe4f4631e9060e6efab8eaa0a90"></a><!-- doxytag: member="Form::prevField" ref="acb080fe4f4631e9060e6efab8eaa0a90" args="()" --> <a class="anchor" id="acb080fe4f4631e9060e6efab8eaa0a90"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -342,17 +387,16 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Changes to the previous field in the "tab order". </p> <p>Changes to the previous field in the "tab order". </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1" title="Changes to the next field in the &quot;tab order&quot;.">nextField()</a>, <a class="el" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b" title="Changes to default field (i.e., the first field).">defaultField()</a>, <a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1" title="Changes to the next field in the &quot;tab order&quot;.">nextField()</a>, <a class="el" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b" title="Changes to default field (i.e., the first field).">defaultField()</a>, <a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a> </dd></dl>
<p>Definition at line <a class="el" href="Form_8cpp_source.html#l00135">135</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p> <p>Definition at line <a class="el" href="Form_8cpp_source.html#l00135">135</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a7abd717029f9b19ee7318470072cd697"></a><!-- doxytag: member="Form::removeField" ref="a7abd717029f9b19ee7318470072cd697" args="(Field *field)" --> <a class="anchor" id="a7abd717029f9b19ee7318470072cd697"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -364,18 +408,17 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Removes <em>field</em> from this form. </p> <p>Removes <em>field</em> from this form. </p>
<p>If <em>field</em> is the current field on-screen, then either the next or previous field will be made current.</p> <p>If <em>field</em> is the current field on-screen, then either the next or previous field will be made current.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">addField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">addField()</a> </dd></dl>
<p>Definition at line <a class="el" href="Form_8cpp_source.html#l00187">187</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p> <p>Definition at line <a class="el" href="Form_8cpp_source.html#l00187">187</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="ae6004fedfa07191ffd47d7b12370b4e5"></a><!-- doxytag: member="Form::setCurrentField" ref="ae6004fedfa07191ffd47d7b12370b4e5" args="(Field *field)" --> <a class="anchor" id="ae6004fedfa07191ffd47d7b12370b4e5"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -387,18 +430,17 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Sets the current <em>field</em> that is displayed on-screen. </p> <p>Sets the current <em>field</em> that is displayed on-screen. </p>
<p>Use this function to programmatically force the form to display a specific field on-screen.</p> <p>Use this function to programmatically force the form to display a specific field on-screen.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a>, <a class="el" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789" title="Returns true if field is currently displayed on-screen, false otherwise.">isCurrent()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a>, <a class="el" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789" title="Returns true if field is currently displayed on-screen, false otherwise.">isCurrent()</a> </dd></dl>
<p>Definition at line <a class="el" href="Form_8cpp_source.html#l00230">230</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p> <p>Definition at line <a class="el" href="Form_8cpp_source.html#l00230">230</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a9e8d718ab55a8034c22c606ccfa90d65"></a><!-- doxytag: member="Form::show" ref="a9e8d718ab55a8034c22c606ccfa90d65" args="()" --> <a class="anchor" id="a9e8d718ab55a8034c22c606ccfa90d65"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -409,13 +451,12 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Shows the form, or does nothing if the form is already on-screen. </p> <p>Shows the form, or does nothing if the form is already on-screen. </p>
<p>When the form is shown, the screen will be cleared and the <a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a> will be drawn.</p> <p>When the form is shown, the screen will be cleared and the <a class="el" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8" title="Returns the current field that is displayed on-screen.">currentField()</a> will be drawn.</p>
<p>If the form was previously hidden, then the field that was previously current will be shown again. Call <a class="el" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b" title="Changes to default field (i.e., the first field).">defaultField()</a> before <a class="el" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65" title="Shows the form, or does nothing if the form is already on-screen.">show()</a> to reset the form to show the first field instead.</p> <p>If the form was previously hidden, then the field that was previously current will be shown again. Call <a class="el" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b" title="Changes to default field (i.e., the first field).">defaultField()</a> before <a class="el" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65" title="Shows the form, or does nothing if the form is already on-screen.">show()</a> to reset the form to show the first field instead.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9" title="Hides the form, or does nothing if the form is not on-screen.">hide()</a>, <a class="el" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587" title="Returns true if the form is shown; false if the form is hidden.">isVisible()</a>, <a class="el" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b" title="Changes to default field (i.e., the first field).">defaultField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9" title="Hides the form, or does nothing if the form is not on-screen.">hide()</a>, <a class="el" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587" title="Returns true if the form is shown; false if the form is hidden.">isVisible()</a>, <a class="el" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b" title="Changes to default field (i.e., the first field).">defaultField()</a> </dd></dl>
<p>Definition at line <a class="el" href="Form_8cpp_source.html#l00274">274</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p> <p>Definition at line <a class="el" href="Form_8cpp_source.html#l00274">274</a> of file <a class="el" href="Form_8cpp_source.html">Form.cpp</a>.</p>
@@ -425,23 +466,12 @@ class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<li><a class="el" href="Form_8h_source.html">Form.h</a></li> <li><a class="el" href="Form_8h_source.html">Form.h</a></li>
<li><a class="el" href="Form_8cpp_source.html">Form.cpp</a></li> <li><a class="el" href="Form_8cpp_source.html">Form.cpp</a></li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,27 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">I2CMaster Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classI2CMaster.html">I2CMaster</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833">available</a>()=0</td><td><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td><code> [pure virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">endWrite</a>()=0</td><td><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td><code> [pure virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classI2CMaster.html#a3cd0cea8169ac4e6dd6f39fd6cfb1926">maxTransferSize</a>() const =0</td><td><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td><code> [pure virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>()=0</td><td><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td><code> [pure virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde">startRead</a>(unsigned int address, unsigned int count)=0</td><td><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td><code> [pure virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(unsigned int address)</td><td><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(uint8_t value)=0</td><td><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td><code> [pure virtual]</code></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -87,8 +80,28 @@ This is the complete list of members for <a class="el" href="classI2CMaster.html
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">I2CMaster Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classI2CMaster.html">I2CMaster</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833">available</a>()=0</td><td class="entry"><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">endWrite</a>()=0</td><td class="entry"><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classI2CMaster.html#a3cd0cea8169ac4e6dd6f39fd6cfb1926">maxTransferSize</a>() const =0</td><td class="entry"><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>()=0</td><td class="entry"><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde">startRead</a>(unsigned int address, unsigned int count)=0</td><td class="entry"><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(unsigned int address)</td><td class="entry"><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(uint8_t value)=0</td><td class="entry"><a class="el" href="classI2CMaster.html">I2CMaster</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: I2CMaster Class Reference</title> <title>ArduinoLibs: I2CMaster Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,15 +66,30 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div> <a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classI2CMaster-members.html">List of all members</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">I2CMaster Class Reference</div> </div> <div class="title">I2CMaster Class Reference</div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<!-- doxytag: class="I2CMaster" -->
<p>Abstract base class for I2C master implementations. <p>Abstract base class for I2C master implementations.
<a href="classI2CMaster.html#details">More...</a></p> <a href="classI2CMaster.html#details">More...</a></p>
@@ -80,100 +103,122 @@ Inheritance diagram for I2CMaster:</div>
<area href="classSoftI2C.html" title="Bit-banged implementation of an I2C master." alt="SoftI2C" shape="rect" coords="0,56,70,80"/> <area href="classSoftI2C.html" title="Bit-banged implementation of an I2C master." alt="SoftI2C" shape="rect" coords="0,56,70,80"/>
</map> </map>
</div></div> </div></div>
<p><a href="classI2CMaster-members.html">List of all members.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr> Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3cd0cea8169ac4e6dd6f39fd6cfb1926"></a><!-- doxytag: member="I2CMaster::maxTransferSize" ref="a3cd0cea8169ac4e6dd6f39fd6cfb1926" args="() const =0" --> <tr class="memitem:a3cd0cea8169ac4e6dd6f39fd6cfb1926"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3cd0cea8169ac4e6dd6f39fd6cfb1926"></a>
virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classI2CMaster.html#a3cd0cea8169ac4e6dd6f39fd6cfb1926">maxTransferSize</a> () const =0</td></tr> virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classI2CMaster.html#a3cd0cea8169ac4e6dd6f39fd6cfb1926">maxTransferSize</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the maximum number of bytes that can be read or written in a single request by this bus master. <br/></td></tr> <tr class="memdesc:a3cd0cea8169ac4e6dd6f39fd6cfb1926"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the maximum number of bytes that can be read or written in a single request by this bus master. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a> (unsigned int address)</td></tr> <tr class="memitem:a01960fc821cb25e4c88c26d2c6107e35"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a> (unsigned int address)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts a write operation by sending a start condition and the I2C control byte. <a href="#a01960fc821cb25e4c88c26d2c6107e35"></a><br/></td></tr> <tr class="memdesc:a01960fc821cb25e4c88c26d2c6107e35"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts a write operation by sending a start condition and the I2C control byte. <a href="#a01960fc821cb25e4c88c26d2c6107e35"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a> (uint8_t value)=0</td></tr> <tr class="memitem:a0bf6b84cb1e2b3a37a4a0260d0b6f960"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a> (uint8_t value)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes a single byte <em>value</em> on the I2C bus. <a href="#a0bf6b84cb1e2b3a37a4a0260d0b6f960"></a><br/></td></tr> <tr class="memdesc:a0bf6b84cb1e2b3a37a4a0260d0b6f960"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes a single byte <em>value</em> on the I2C bus. <a href="#a0bf6b84cb1e2b3a37a4a0260d0b6f960"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">endWrite</a> ()=0</td></tr> <tr class="memitem:ab29f63551ddeb032a91505d1c0b8ac41"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">endWrite</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Ends the current write operation. <a href="#ab29f63551ddeb032a91505d1c0b8ac41"></a><br/></td></tr> <tr class="memdesc:ab29f63551ddeb032a91505d1c0b8ac41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ends the current write operation. <a href="#ab29f63551ddeb032a91505d1c0b8ac41"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde">startRead</a> (unsigned int address, unsigned int count)=0</td></tr> <tr class="memitem:a4e5f1a1a4c2242699be5a35fc4872fde"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde">startRead</a> (unsigned int address, unsigned int count)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts a read operation for <em>count</em> bytes by sending the start condition and the I2C control byte. <a href="#a4e5f1a1a4c2242699be5a35fc4872fde"></a><br/></td></tr> <tr class="memdesc:a4e5f1a1a4c2242699be5a35fc4872fde"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts a read operation for <em>count</em> bytes by sending the start condition and the I2C control byte. <a href="#a4e5f1a1a4c2242699be5a35fc4872fde"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833">available</a> ()=0</td></tr> <tr class="memitem:a6458fa99cfd9e6270ae6dff993955833"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833">available</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of bytes that are still available for reading. <a href="#a6458fa99cfd9e6270ae6dff993955833"></a><br/></td></tr> <tr class="memdesc:a6458fa99cfd9e6270ae6dff993955833"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of bytes that are still available for reading. <a href="#a6458fa99cfd9e6270ae6dff993955833"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a> ()=0</td></tr> <tr class="memitem:a49eeebb57f6bc06de39973fe836369cd"><td class="memItemLeft" align="right" valign="top">virtual uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads a single byte from the I2C bus. <a href="#a49eeebb57f6bc06de39973fe836369cd"></a><br/></td></tr> <tr class="memdesc:a49eeebb57f6bc06de39973fe836369cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads a single byte from the I2C bus. <a href="#a49eeebb57f6bc06de39973fe836369cd"></a><br/></td></tr>
</table> </table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Abstract base class for I2C master implementations. </p> <div class="textblock"><p>Abstract base class for I2C master implementations. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classSoftI2C.html" title="Bit-banged implementation of an I2C master.">SoftI2C</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classSoftI2C.html" title="Bit-banged implementation of an I2C master.">SoftI2C</a> </dd></dl>
<p>Definition at line <a class="el" href="I2CMaster_8h_source.html#l00028">28</a> of file <a class="el" href="I2CMaster_8h_source.html">I2CMaster.h</a>.</p> <p>Definition at line <a class="el" href="I2CMaster_8h_source.html#l00028">28</a> of file <a class="el" href="I2CMaster_8h_source.html">I2CMaster.h</a>.</p>
</div><hr/><h2>Member Function Documentation</h2> </div><h2>Member Function Documentation</h2>
<a class="anchor" id="a6458fa99cfd9e6270ae6dff993955833"></a><!-- doxytag: member="I2CMaster::available" ref="a6458fa99cfd9e6270ae6dff993955833" args="()=0" --> <a class="anchor" id="a6458fa99cfd9e6270ae6dff993955833"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">unsigned int I2CMaster::available </td> <td class="memname">unsigned int I2CMaster::available </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td><code> [pure virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of bytes that are still available for reading. </p> <p>Returns the number of bytes that are still available for reading. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead()</a>, <a class="el" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead()</a>, <a class="el" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read()</a> </dd></dl>
<p>Implemented in <a class="el" href="classSoftI2C.html#a849af91018caedbb82e83f02c543305e">SoftI2C</a>.</p> <p>Implemented in <a class="el" href="classSoftI2C.html#a849af91018caedbb82e83f02c543305e">SoftI2C</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="ab29f63551ddeb032a91505d1c0b8ac41"></a><!-- doxytag: member="I2CMaster::endWrite" ref="ab29f63551ddeb032a91505d1c0b8ac41" args="()=0" --> <a class="anchor" id="ab29f63551ddeb032a91505d1c0b8ac41"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">bool I2CMaster::endWrite </td> <td class="memname">bool I2CMaster::endWrite </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td><code> [pure virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Ends the current write operation. </p> <p>Ends the current write operation. </p>
<p>Returns true if the write operation was acknowledged; false otherwise.</p> <p>Returns true if the write operation was acknowledged; false otherwise.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite()</a>, <a class="el" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite()</a>, <a class="el" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write()</a> </dd></dl>
<p>Implemented in <a class="el" href="classSoftI2C.html#aa12ae82813598b2e9ea70463c23c5bf3">SoftI2C</a>.</p> <p>Implemented in <a class="el" href="classSoftI2C.html#aa12ae82813598b2e9ea70463c23c5bf3">SoftI2C</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a49eeebb57f6bc06de39973fe836369cd"></a><!-- doxytag: member="I2CMaster::read" ref="a49eeebb57f6bc06de39973fe836369cd" args="()=0" --> <a class="anchor" id="a49eeebb57f6bc06de39973fe836369cd"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">uint8_t I2CMaster::read </td> <td class="memname">uint8_t I2CMaster::read </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td><code> [pure virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads a single byte from the I2C bus. </p> <p>Reads a single byte from the I2C bus. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead()</a>, <a class="el" href="classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833" title="Returns the number of bytes that are still available for reading.">available()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead()</a>, <a class="el" href="classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833" title="Returns the number of bytes that are still available for reading.">available()</a> </dd></dl>
<p>Implemented in <a class="el" href="classSoftI2C.html#a330dbba5b726fa161a6b01a9ca49e1bc">SoftI2C</a>.</p> <p>Implemented in <a class="el" href="classSoftI2C.html#a330dbba5b726fa161a6b01a9ca49e1bc">SoftI2C</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a4e5f1a1a4c2242699be5a35fc4872fde"></a><!-- doxytag: member="I2CMaster::startRead" ref="a4e5f1a1a4c2242699be5a35fc4872fde" args="(unsigned int address, unsigned int count)=0" --> <a class="anchor" id="a4e5f1a1a4c2242699be5a35fc4872fde"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">bool I2CMaster::startRead </td> <td class="memname">bool I2CMaster::startRead </td>
@@ -190,61 +235,79 @@ virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class
<tr> <tr>
<td></td> <td></td>
<td>)</td> <td>)</td>
<td></td><td><code> [pure virtual]</code></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Starts a read operation for <em>count</em> bytes by sending the start condition and the I2C control byte. </p> <p>Starts a read operation for <em>count</em> bytes by sending the start condition and the I2C control byte. </p>
<p>The <em>address</em> must be the 7-bit or 10-bit address of the I2C slave on the bus.</p> <p>The <em>address</em> must be the 7-bit or 10-bit address of the I2C slave on the bus.</p>
<p>Returns true if the read request was acknowledged by the I2C slave or false otherwise. If true, this function should be followed by <em>count</em> calls to <a class="el" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read()</a> to fetch the bytes.</p> <p>Returns true if the read request was acknowledged by the I2C slave or false otherwise. If true, this function should be followed by <em>count</em> calls to <a class="el" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read()</a> to fetch the bytes.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833" title="Returns the number of bytes that are still available for reading.">available()</a>, <a class="el" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read()</a>, <a class="el" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833" title="Returns the number of bytes that are still available for reading.">available()</a>, <a class="el" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd" title="Reads a single byte from the I2C bus.">read()</a>, <a class="el" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite()</a> </dd></dl>
<p>Implemented in <a class="el" href="classSoftI2C.html#aa0dafc067cfa374af75e060dca647ec3">SoftI2C</a>.</p> <p>Implemented in <a class="el" href="classSoftI2C.html#aa0dafc067cfa374af75e060dca647ec3">SoftI2C</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a01960fc821cb25e4c88c26d2c6107e35"></a><!-- doxytag: member="I2CMaster::startWrite" ref="a01960fc821cb25e4c88c26d2c6107e35" args="(unsigned int address)" --> <a class="anchor" id="a01960fc821cb25e4c88c26d2c6107e35"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void I2CMaster::startWrite </td> <td class="memname">void I2CMaster::startWrite </td>
<td>(</td> <td>(</td>
<td class="paramtype">unsigned int&#160;</td> <td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>address</em></td><td>)</td> <td class="paramname"><em>address</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Starts a write operation by sending a start condition and the I2C control byte. </p> <p>Starts a write operation by sending a start condition and the I2C control byte. </p>
<p>The <em>address</em> must be the 7-bit or 10-bit address of the I2C slave on the bus.</p> <p>The <em>address</em> must be the 7-bit or 10-bit address of the I2C slave on the bus.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write()</a>, <a class="el" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite()</a>, <a class="el" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960" title="Writes a single byte value on the I2C bus.">write()</a>, <a class="el" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite()</a>, <a class="el" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde" title="Starts a read operation for count bytes by sending the start condition and the I2C control byte...">startRead()</a> </dd></dl>
<p>Reimplemented in <a class="el" href="classSoftI2C.html#aa8a3219f4e6ff52306cc3c219f37d8f9">SoftI2C</a>.</p> <p>Reimplemented in <a class="el" href="classSoftI2C.html#aa8a3219f4e6ff52306cc3c219f37d8f9">SoftI2C</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a0bf6b84cb1e2b3a37a4a0260d0b6f960"></a><!-- doxytag: member="I2CMaster::write" ref="a0bf6b84cb1e2b3a37a4a0260d0b6f960" args="(uint8_t value)=0" --> <a class="anchor" id="a0bf6b84cb1e2b3a37a4a0260d0b6f960"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void I2CMaster::write </td> <td class="memname">void I2CMaster::write </td>
<td>(</td> <td>(</td>
<td class="paramtype">uint8_t&#160;</td> <td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td> <td class="paramname"><em>value</em></td><td>)</td>
<td><code> [pure virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Writes a single byte <em>value</em> on the I2C bus. </p> <p>Writes a single byte <em>value</em> on the I2C bus. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite()</a>, <a class="el" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35" title="Starts a write operation by sending a start condition and the I2C control byte.">startWrite()</a>, <a class="el" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41" title="Ends the current write operation.">endWrite()</a> </dd></dl>
<p>Implemented in <a class="el" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73">SoftI2C</a>.</p> <p>Implemented in <a class="el" href="classSoftI2C.html#ab46f0b6363c9cfe6fb3ab907956d5d73">SoftI2C</a>.</p>
@@ -254,23 +317,12 @@ virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class
<li><a class="el" href="I2CMaster_8h_source.html">I2CMaster.h</a></li> <li><a class="el" href="I2CMaster_8h_source.html">I2CMaster.h</a></li>
<li><a class="el" href="I2CMaster_8cpp_source.html">I2CMaster.cpp</a></li> <li><a class="el" href="I2CMaster_8cpp_source.html">I2CMaster.cpp</a></li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:52 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 380 B

After

Width:  |  Height:  |  Size: 438 B

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,27 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">IRreceiver Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classIRreceiver.html">IRreceiver</a>, including all inherited members.<table>
<tr bgcolor="#f0f0f0"><td><b>_IR_receive_interrupt</b> (defined in <a class="el" href="classIRreceiver.html">IRreceiver</a>)</td><td><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td><code> [friend]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9">AUTO_REPEAT</a></td><td><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda">command</a>()</td><td><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classIRreceiver.html#a06eccb8b8311eac395e4b20c4e0163e3">IRreceiver</a>(int interruptNumber=0)</td><td><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td><code> [explicit]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08">setSystemFilter</a>(int system)</td><td><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f">system</a>() const </td><td><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIRreceiver.html#a2c6adc404f71f263ba535ec1ed9cff1a">systemFilter</a>() const </td><td><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td><code> [inline]</code></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -87,8 +80,28 @@ This is the complete list of members for <a class="el" href="classIRreceiver.htm
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:53 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">IRreceiver Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classIRreceiver.html">IRreceiver</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0"class="even"><td class="entry"><b>_IR_receive_interrupt</b> (defined in <a class="el" href="classIRreceiver.html">IRreceiver</a>)</td><td class="entry"><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr><td class="entry"><a class="el" href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9">AUTO_REPEAT</a></td><td class="entry"><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda">command</a>()</td><td class="entry"><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRreceiver.html#a06eccb8b8311eac395e4b20c4e0163e3">IRreceiver</a>(int interruptNumber=0)</td><td class="entry"><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08">setSystemFilter</a>(int system)</td><td class="entry"><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f">system</a>() const </td><td class="entry"><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRreceiver.html#a2c6adc404f71f263ba535ec1ed9cff1a">systemFilter</a>() const </td><td class="entry"><a class="el" href="classIRreceiver.html">IRreceiver</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: IRreceiver Class Reference</title> <title>ArduinoLibs: IRreceiver Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,48 +66,63 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124; <a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124; <a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#friends">Friends</a> </div> <a href="#friends">Friends</a> &#124;
<a href="classIRreceiver-members.html">List of all members</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">IRreceiver Class Reference</div> </div> <div class="title">IRreceiver Class Reference</div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<!-- doxytag: class="IRreceiver" -->
<p>Manages the reception of RC-5 commands from an infrared remote control. <p>Manages the reception of RC-5 commands from an infrared remote control.
<a href="classIRreceiver.html#details">More...</a></p> <a href="classIRreceiver.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="IRreceiver_8h_source.html">IRreceiver.h</a>&gt;</code></p> <p><code>#include &lt;<a class="el" href="IRreceiver_8h_source.html">IRreceiver.h</a>&gt;</code></p>
<p><a href="classIRreceiver-members.html">List of all members.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr> Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06eccb8b8311eac395e4b20c4e0163e3"></a><!-- doxytag: member="IRreceiver::IRreceiver" ref="a06eccb8b8311eac395e4b20c4e0163e3" args="(int interruptNumber=0)" --> <tr class="memitem:a06eccb8b8311eac395e4b20c4e0163e3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06eccb8b8311eac395e4b20c4e0163e3"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRreceiver.html#a06eccb8b8311eac395e4b20c4e0163e3">IRreceiver</a> (int interruptNumber=0)</td></tr> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRreceiver.html#a06eccb8b8311eac395e4b20c4e0163e3">IRreceiver</a> (int interruptNumber=0)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new infrared remote control receiver that is attached to <em>interruptNumber</em>. <br/></td></tr> <tr class="memdesc:a06eccb8b8311eac395e4b20c4e0163e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new infrared remote control receiver that is attached to <em>interruptNumber</em>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda">command</a> ()</td></tr> <tr class="memitem:a4b021592a2b089dc2f1e138a38506fda"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda">command</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the next command from the remote control. <a href="#a4b021592a2b089dc2f1e138a38506fda"></a><br/></td></tr> <tr class="memdesc:a4b021592a2b089dc2f1e138a38506fda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the next command from the remote control. <a href="#a4b021592a2b089dc2f1e138a38506fda"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f">system</a> () const </td></tr> <tr class="memitem:a19e9334ae97812fa85078507d105478f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f">system</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the system number of the previous <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a>, indicating whether the command was for a TV, VCR, CD player, etc. <a href="#a19e9334ae97812fa85078507d105478f"></a><br/></td></tr> <tr class="memdesc:a19e9334ae97812fa85078507d105478f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the system number of the previous <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a>, indicating whether the command was for a TV, VCR, CD player, etc. <a href="#a19e9334ae97812fa85078507d105478f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRreceiver.html#a2c6adc404f71f263ba535ec1ed9cff1a">systemFilter</a> () const </td></tr> <tr class="memitem:a2c6adc404f71f263ba535ec1ed9cff1a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRreceiver.html#a2c6adc404f71f263ba535ec1ed9cff1a">systemFilter</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the system to filter commands against, or -1 if no filter is set. <a href="#a2c6adc404f71f263ba535ec1ed9cff1a"></a><br/></td></tr> <tr class="memdesc:a2c6adc404f71f263ba535ec1ed9cff1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the system to filter commands against, or -1 if no filter is set. <a href="#a2c6adc404f71f263ba535ec1ed9cff1a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08">setSystemFilter</a> (int system)</td></tr> <tr class="memitem:a920828f1411fa12d1856cd933066bd08"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08">setSystemFilter</a> (int <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f">system</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <em>system</em> to filter commands against, or -1 to turn off the system filter. <a href="#a920828f1411fa12d1856cd933066bd08"></a><br/></td></tr> <tr class="memdesc:a920828f1411fa12d1856cd933066bd08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <em>system</em> to filter commands against, or -1 to turn off the system filter. <a href="#a920828f1411fa12d1856cd933066bd08"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-static-attribs"></a> </table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr> Static Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c37631cc1291dc47cabcfef2f631cf9"></a><!-- doxytag: member="IRreceiver::AUTO_REPEAT" ref="a9c37631cc1291dc47cabcfef2f631cf9" args="" --> <tr class="memitem:a9c37631cc1291dc47cabcfef2f631cf9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c37631cc1291dc47cabcfef2f631cf9"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9">AUTO_REPEAT</a> = 128</td></tr> static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9">AUTO_REPEAT</a> = 128</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag that is added to the output of <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> when the command is an auto-repeated button press rather than the original button press. <br/></td></tr> <tr class="memdesc:a9c37631cc1291dc47cabcfef2f631cf9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag that is added to the output of <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> when the command is an auto-repeated button press rather than the original button press. <br/></td></tr>
<tr><td colspan="2"><h2><a name="friends"></a> </table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="friends"></a>
Friends</h2></td></tr> Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00f78881401135b8c2a89ebf6fbc86dc"></a><!-- doxytag: member="IRreceiver::_IR_receive_interrupt" ref="a00f78881401135b8c2a89ebf6fbc86dc" args="(void)" --> <tr class="memitem:a00f78881401135b8c2a89ebf6fbc86dc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00f78881401135b8c2a89ebf6fbc86dc"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>_IR_receive_interrupt</b> (void)</td></tr> void&#160;</td><td class="memItemRight" valign="bottom"><b>_IR_receive_interrupt</b> (void)</td></tr>
</table> </table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Manages the reception of RC-5 commands from an infrared remote control. </p> <div class="textblock"><p>Manages the reception of RC-5 commands from an infrared remote control. </p>
<p><a class="el" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> recognizes commands in the <a href="http://en.wikipedia.org/wiki/RC-5">Philips RC-5 protocol</a>. This is a fairly common infrared protocol, supported by most universal remote controls. Program the universal remote to simulate a Philips TV, VCR, CD player, etc.</p> <p><a class="el" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> recognizes commands in the <a href="http://en.wikipedia.org/wiki/RC-5">Philips RC-5 protocol</a>. This is a fairly common infrared protocol, supported by most universal remote controls. Program the universal remote to simulate a Philips TV, VCR, CD player, etc.</p>
<p>This class uses interrupts to process incoming bits from a standard 3-pin infrared receiver:</p> <p>This class uses interrupts to process incoming bits from a standard 3-pin infrared receiver:</p>
@@ -108,74 +131,74 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>_IR_receive_interrupt
</div> </div>
<p>Typically, pin 1 of the receiver should be connected to the Arduino interrupt pin (e.g. D2), pin 2 should be connected to GND, and pin 3 should be connected to 5V. Consult the datasheet for your receiver to be sure though; some receivers may have different pin assignments.</p> <p>Typically, pin 1 of the receiver should be connected to the Arduino interrupt pin (e.g. D2), pin 2 should be connected to GND, and pin 3 should be connected to 5V. Consult the datasheet for your receiver to be sure though; some receivers may have different pin assignments.</p>
<p>The receiver is initialized by constructing an instance of the <a class="el" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> class:</p> <p>The receiver is initialized by constructing an instance of the <a class="el" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> class:</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> ir; <div class="fragment"><div class="line"><a class="code" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> ir;</div>
</pre></div><p>By default, interrupt 0 on pin D2 is used. To change to another interrupt, pass its number to the constructor:</p> </div><!-- fragment --><p>By default, interrupt 0 on pin D2 is used. To change to another interrupt, pass its number to the constructor:</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> ir(1); <span class="comment">// Interrupt 1 on pin D3</span> <div class="fragment"><div class="line"><a class="code" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> ir(1); <span class="comment">// Interrupt 1 on pin D3</span></div>
</pre></div><p>Currently this class can only handle a single instance of <a class="el" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> being active in the application. It isn't possible to have separate <a class="el" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> instances on different pins. Usually this won't be a problem because the same receiver can process inputs from multiple remotes.</p> </div><!-- fragment --><p>Currently this class can only handle a single instance of <a class="el" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> being active in the application. It isn't possible to have separate <a class="el" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> instances on different pins. Usually this won't be a problem because the same receiver can process inputs from multiple remotes.</p>
<p>The application retrieves incoming infrared commands by calling the <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> function. The return value indicates the type of command:</p> <p>The application retrieves incoming infrared commands by calling the <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> function. The return value indicates the type of command:</p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> loop() { <div class="fragment"><div class="line"><span class="keywordtype">void</span> loop() {</div>
<span class="keywordflow">switch</span> (ir.<a class="code" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command</a>()) { <div class="line"> <span class="keywordflow">switch</span> (ir.<a class="code" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command</a>()) {</div>
<span class="keywordflow">case</span> RC5_0: <span class="keywordflow">case</span> RC5_1: <span class="keywordflow">case</span> RC5_2: <span class="keywordflow">case</span> RC5_3: <span class="keywordflow">case</span> RC5_4: <div class="line"> <span class="keywordflow">case</span> RC5_0: <span class="keywordflow">case</span> RC5_1: <span class="keywordflow">case</span> RC5_2: <span class="keywordflow">case</span> RC5_3: <span class="keywordflow">case</span> RC5_4:</div>
<span class="keywordflow">case</span> RC5_5: <span class="keywordflow">case</span> RC5_6: <span class="keywordflow">case</span> RC5_7: <span class="keywordflow">case</span> RC5_8: <span class="keywordflow">case</span> RC5_9: <div class="line"> <span class="keywordflow">case</span> RC5_5: <span class="keywordflow">case</span> RC5_6: <span class="keywordflow">case</span> RC5_7: <span class="keywordflow">case</span> RC5_8: <span class="keywordflow">case</span> RC5_9:</div>
<span class="comment">// Process a digit</span> <div class="line"> <span class="comment">// Process a digit</span></div>
... <div class="line"> ...</div>
<span class="keywordflow">break</span>; <div class="line"> <span class="keywordflow">break</span>;</div>
<div class="line"></div>
<span class="keywordflow">case</span> RC5_ERASE: <div class="line"> <span class="keywordflow">case</span> RC5_ERASE:</div>
<span class="comment">// Backspace/erase last digit.</span> <div class="line"> <span class="comment">// Backspace/erase last digit.</span></div>
... <div class="line"> ...</div>
<span class="keywordflow">break</span>; <div class="line"> <span class="keywordflow">break</span>;</div>
<div class="line"></div>
<span class="keywordflow">case</span> RC5_STANDBY: <div class="line"> <span class="keywordflow">case</span> RC5_STANDBY:</div>
<span class="comment">// Power on/off button.</span> <div class="line"> <span class="comment">// Power on/off button.</span></div>
... <div class="line"> ...</div>
<span class="keywordflow">break</span>; <div class="line"> <span class="keywordflow">break</span>;</div>
} <div class="line"> }</div>
} <div class="line">}</div>
</pre></div><p>If the command is an auto-repeat of a previous button press, then the <a class="el" href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9">AUTO_REPEAT</a> flag will be set in the value returned from <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a>. The application can choose to ignore all auto-repeats, process all auto-repeats, or choose which button to auto-repeat based on its code:</p> </div><!-- fragment --><p>If the command is an auto-repeat of a previous button press, then the <a class="el" href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9">AUTO_REPEAT</a> flag will be set in the value returned from <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a>. The application can choose to ignore all auto-repeats, process all auto-repeats, or choose which button to auto-repeat based on its code:</p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> loop() { <div class="fragment"><div class="line"><span class="keywordtype">void</span> loop() {</div>
<span class="keywordflow">switch</span> (ir.<a class="code" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command</a>()) { <div class="line"> <span class="keywordflow">switch</span> (ir.<a class="code" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command</a>()) {</div>
<span class="keywordflow">case</span> RC5_INC_VOLUME: <div class="line"> <span class="keywordflow">case</span> RC5_INC_VOLUME:</div>
<span class="keywordflow">case</span> IRreceiver::AUTO_REPEAT | RC5_INC_VOLUME: <div class="line"> <span class="keywordflow">case</span> IRreceiver::AUTO_REPEAT | RC5_INC_VOLUME:</div>
<span class="comment">// Volume increase button pressed or held.</span> <div class="line"> <span class="comment">// Volume increase button pressed or held.</span></div>
... <div class="line"> ...</div>
<span class="keywordflow">break</span>; <div class="line"> <span class="keywordflow">break</span>;</div>
<div class="line"></div>
<span class="keywordflow">case</span> RC5_DEC_VOLUME: <div class="line"> <span class="keywordflow">case</span> RC5_DEC_VOLUME:</div>
<span class="keywordflow">case</span> IRreceiver::AUTO_REPEAT | RC5_DEC_VOLUME: <div class="line"> <span class="keywordflow">case</span> IRreceiver::AUTO_REPEAT | RC5_DEC_VOLUME:</div>
<span class="comment">// Volume decrease button pressed or held.</span> <div class="line"> <span class="comment">// Volume decrease button pressed or held.</span></div>
... <div class="line"> ...</div>
<span class="keywordflow">break</span>; <div class="line"> <span class="keywordflow">break</span>;</div>
<div class="line"></div>
<span class="keywordflow">case</span> RC5_MUTE: <div class="line"> <span class="keywordflow">case</span> RC5_MUTE:</div>
<span class="comment">// Mute button (ignore auto-repeat).</span> <div class="line"> <span class="comment">// Mute button (ignore auto-repeat).</span></div>
... <div class="line"> ...</div>
<span class="keywordflow">break</span>; <div class="line"> <span class="keywordflow">break</span>;</div>
} <div class="line"> }</div>
} <div class="line">}</div>
</pre></div><p>By default, command codes will be generated for every type of RC-5 remote control, be it a TV, VCR, CD player, or something else. The application can distinguish between the remote controls using <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a>; noting that <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> must be called before <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a> for the system value to be valid. For example, the following code could be used in a two-player video game where the first player's remote is configured as a TV and the second player's remote is configured as a VCR:</p> </div><!-- fragment --><p>By default, command codes will be generated for every type of RC-5 remote control, be it a TV, VCR, CD player, or something else. The application can distinguish between the remote controls using <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a>; noting that <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> must be called before <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a> for the system value to be valid. For example, the following code could be used in a two-player video game where the first player's remote is configured as a TV and the second player's remote is configured as a VCR:</p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> loop() { <div class="fragment"><div class="line"><span class="keywordtype">void</span> loop() {</div>
<span class="keywordtype">int</span> cmd = ir.<a class="code" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command</a>(); <div class="line"> <span class="keywordtype">int</span> cmd = ir.<a class="code" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command</a>();</div>
<span class="keywordtype">int</span> sys = ir.<a class="code" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system</a>(); <div class="line"> <span class="keywordtype">int</span> sys = ir.<a class="code" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system</a>();</div>
<span class="keywordflow">if</span> (sys == RC5_SYS_TV) <div class="line"> <span class="keywordflow">if</span> (sys == RC5_SYS_TV)</div>
player1(cmd); <div class="line"> player1(cmd);</div>
<span class="keywordflow">else</span> <span class="keywordflow">if</span> (sys == RC5_SYS_VCR) <div class="line"> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sys == RC5_SYS_VCR)</div>
player2(cmd); <div class="line"> player2(cmd);</div>
<div class="line"></div>
... <div class="line"> ...</div>
} <div class="line">}</div>
</pre></div><p>If the application only cares about a single system and wishes to ignore all other systems, it can configure a system filter at startup:</p> </div><!-- fragment --><p>If the application only cares about a single system and wishes to ignore all other systems, it can configure a system filter at startup:</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> ir; <div class="fragment"><div class="line"><a class="code" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> ir;</div>
<div class="line"></div>
<span class="keywordtype">void</span> setup() { <div class="line"><span class="keywordtype">void</span> setup() {</div>
ir.<a class="code" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08" title="Sets the system to filter commands against, or -1 to turn off the system filter.">setSystemFilter</a>(RC5_SYS_VCR); <div class="line"> ir.<a class="code" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08" title="Sets the system to filter commands against, or -1 to turn off the system filter.">setSystemFilter</a>(RC5_SYS_VCR);</div>
} <div class="line">}</div>
</pre></div><p>The complete list of RC-5 system numbers and command codes is given in the <a class="el" href="RC5_8h_source.html">RC5.h</a> header file.</p> </div><!-- fragment --><p>The complete list of RC-5 system numbers and command codes is given in the <a class="el" href="RC5_8h_source.html">RC5.h</a> header file.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="ir_dumpir.html">DumpIR Example</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="ir_dumpir.html">DumpIR Example</a> </dd></dl>
<p>Definition at line <a class="el" href="IRreceiver_8h_source.html#l00029">29</a> of file <a class="el" href="IRreceiver_8h_source.html">IRreceiver.h</a>.</p> <p>Definition at line <a class="el" href="IRreceiver_8h_source.html#l00029">29</a> of file <a class="el" href="IRreceiver_8h_source.html">IRreceiver.h</a>.</p>
</div><hr/><h2>Member Function Documentation</h2> </div><h2>Member Function Documentation</h2>
<a class="anchor" id="a4b021592a2b089dc2f1e138a38506fda"></a><!-- doxytag: member="IRreceiver::command" ref="a4b021592a2b089dc2f1e138a38506fda" args="()" --> <a class="anchor" id="a4b021592a2b089dc2f1e138a38506fda"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -186,85 +209,105 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>_IR_receive_interrupt
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Returns the next command from the remote control. </p> <p>Returns the next command from the remote control. </p>
<p>Returns -1 if there is no new command, or the number between 0 and 127 corresponding to the command. If the command is an auto-repeat button press rather than an original button press, then the <a class="el" href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9">AUTO_REPEAT</a> flag will be set.</p> <p>Returns -1 if there is no new command, or the number between 0 and 127 corresponding to the command. If the command is an auto-repeat button press rather than an original button press, then the <a class="el" href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9">AUTO_REPEAT</a> flag will be set.</p>
<p>The companion function <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a> will return the system number for the command indicating whether the command is for a TV, VCR, CD player, etc. By default, all systems are reported; use <a class="el" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08" title="Sets the system to filter commands against, or -1 to turn off the system filter.">setSystemFilter()</a> to filter out commands from all but a specific system.</p> <p>The companion function <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a> will return the system number for the command indicating whether the command is for a TV, VCR, CD player, etc. By default, all systems are reported; use <a class="el" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08" title="Sets the system to filter commands against, or -1 to turn off the system filter.">setSystemFilter()</a> to filter out commands from all but a specific system.</p>
<p>The next call to <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> will return -1 or the code for the next button press.</p> <p>The next call to <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> will return -1 or the code for the next button press.</p>
<p>The header file <code><a class="el" href="RC5_8h_source.html">RC5.h</a></code> contains a list of command codes for common remote controls.</p> <p>The header file <code><a class="el" href="RC5_8h_source.html">RC5.h</a></code> contains a list of command codes for common remote controls.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a>, <a class="el" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08" title="Sets the system to filter commands against, or -1 to turn off the system filter.">setSystemFilter()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a>, <a class="el" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08" title="Sets the system to filter commands against, or -1 to turn off the system filter.">setSystemFilter()</a> </dd></dl>
<p>Definition at line <a class="el" href="IRreceiver_8cpp_source.html#l00220">220</a> of file <a class="el" href="IRreceiver_8cpp_source.html">IRreceiver.cpp</a>.</p> <p>Definition at line <a class="el" href="IRreceiver_8cpp_source.html#l00220">220</a> of file <a class="el" href="IRreceiver_8cpp_source.html">IRreceiver.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a920828f1411fa12d1856cd933066bd08"></a><!-- doxytag: member="IRreceiver::setSystemFilter" ref="a920828f1411fa12d1856cd933066bd08" args="(int system)" --> <a class="anchor" id="a920828f1411fa12d1856cd933066bd08"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void IRreceiver::setSystemFilter </td> <td class="memname">void IRreceiver::setSystemFilter </td>
<td>(</td> <td>(</td>
<td class="paramtype">int&#160;</td> <td class="paramtype">int&#160;</td>
<td class="paramname"><em>system</em></td><td>)</td> <td class="paramname"><em>system</em></td><td>)</td>
<td><code> [inline]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the <em>system</em> to filter commands against, or -1 to turn off the system filter. </p> <p>Sets the <em>system</em> to filter commands against, or -1 to turn off the system filter. </p>
<p>If <em>system</em> is -1, then all received systems are returned via <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> and <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a> irrespective of whether they are for a TV, VCR, CD player, or some other type of system. If <em>system</em> is set to anything other than -1, then only commands for that system are returned via <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a>. For example:</p> <p>If <em>system</em> is -1, then all received systems are returned via <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> and <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a> irrespective of whether they are for a TV, VCR, CD player, or some other type of system. If <em>system</em> is set to anything other than -1, then only commands for that system are returned via <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a>. For example:</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> ir; <div class="fragment"><div class="line"><a class="code" href="classIRreceiver.html" title="Manages the reception of RC-5 commands from an infrared remote control.">IRreceiver</a> ir;</div>
ir.<a class="code" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08" title="Sets the system to filter commands against, or -1 to turn off the system filter.">setSystemFilter</a>(RC5_SYS_VCR); <div class="line">ir.<a class="code" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08" title="Sets the system to filter commands against, or -1 to turn off the system filter.">setSystemFilter</a>(RC5_SYS_VCR);</div>
</pre></div><dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classIRreceiver.html#a2c6adc404f71f263ba535ec1ed9cff1a" title="Returns the system to filter commands against, or -1 if no filter is set.">systemFilter()</a>, <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a>, <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> </dd></dl> </div><!-- fragment --><dl class="section see"><dt>See Also</dt><dd><a class="el" href="classIRreceiver.html#a2c6adc404f71f263ba535ec1ed9cff1a" title="Returns the system to filter commands against, or -1 if no filter is set.">systemFilter()</a>, <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a>, <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> </dd></dl>
<p>Definition at line <a class="el" href="IRreceiver_8h_source.html#l00040">40</a> of file <a class="el" href="IRreceiver_8h_source.html">IRreceiver.h</a>.</p> <p>Definition at line <a class="el" href="IRreceiver_8h_source.html#l00040">40</a> of file <a class="el" href="IRreceiver_8h_source.html">IRreceiver.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a19e9334ae97812fa85078507d105478f"></a><!-- doxytag: member="IRreceiver::system" ref="a19e9334ae97812fa85078507d105478f" args="() const " --> <a class="anchor" id="a19e9334ae97812fa85078507d105478f"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">int IRreceiver::system </td> <td class="memname">int IRreceiver::system </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the system number of the previous <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a>, indicating whether the command was for a TV, VCR, CD player, etc. </p> <p>Returns the system number of the previous <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a>, indicating whether the command was for a TV, VCR, CD player, etc. </p>
<p>The return value from this function is valid only after a call to <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a>. The next call to <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> will clear the system value, possibly to -1 if there is no new command.</p> <p>The return value from this function is valid only after a call to <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a>. The next call to <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> will clear the system value, possibly to -1 if there is no new command.</p>
<p>The header file <code><a class="el" href="RC5_8h_source.html">RC5.h</a></code> contains a list of system numbers for common remote controls.</p> <p>The header file <code><a class="el" href="RC5_8h_source.html">RC5.h</a></code> contains a list of system numbers for common remote controls.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a>, <a class="el" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08" title="Sets the system to filter commands against, or -1 to turn off the system filter.">setSystemFilter()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a>, <a class="el" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08" title="Sets the system to filter commands against, or -1 to turn off the system filter.">setSystemFilter()</a> </dd></dl>
<p>Definition at line <a class="el" href="IRreceiver_8h_source.html#l00037">37</a> of file <a class="el" href="IRreceiver_8h_source.html">IRreceiver.h</a>.</p> <p>Definition at line <a class="el" href="IRreceiver_8h_source.html#l00037">37</a> of file <a class="el" href="IRreceiver_8h_source.html">IRreceiver.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a2c6adc404f71f263ba535ec1ed9cff1a"></a><!-- doxytag: member="IRreceiver::systemFilter" ref="a2c6adc404f71f263ba535ec1ed9cff1a" args="() const " --> <a class="anchor" id="a2c6adc404f71f263ba535ec1ed9cff1a"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">int IRreceiver::systemFilter </td> <td class="memname">int IRreceiver::systemFilter </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the system to filter commands against, or -1 if no filter is set. </p> <p>Returns the system to filter commands against, or -1 if no filter is set. </p>
<p>If this value is -1, then all received systems are returned via <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> and <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a> irrespective of whether they are for a TV, VCR, CD player, or some other type of system. If this value is set to anything other than -1, then only commands for that system are returned via <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a>.</p> <p>If this value is -1, then all received systems are returned via <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> and <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a> irrespective of whether they are for a TV, VCR, CD player, or some other type of system. If this value is set to anything other than -1, then only commands for that system are returned via <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08" title="Sets the system to filter commands against, or -1 to turn off the system filter.">setSystemFilter()</a>, <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a>, <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08" title="Sets the system to filter commands against, or -1 to turn off the system filter.">setSystemFilter()</a>, <a class="el" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f" title="Returns the system number of the previous command(), indicating whether the command was for a TV...">system()</a>, <a class="el" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda" title="Returns the next command from the remote control.">command()</a> </dd></dl>
<p>Definition at line <a class="el" href="IRreceiver_8h_source.html#l00039">39</a> of file <a class="el" href="IRreceiver_8h_source.html">IRreceiver.h</a>.</p> <p>Definition at line <a class="el" href="IRreceiver_8h_source.html#l00039">39</a> of file <a class="el" href="IRreceiver_8h_source.html">IRreceiver.h</a>.</p>
@@ -274,23 +317,12 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>_IR_receive_interrupt
<li><a class="el" href="IRreceiver_8h_source.html">IRreceiver.h</a></li> <li><a class="el" href="IRreceiver_8h_source.html">IRreceiver.h</a></li>
<li><a class="el" href="IRreceiver_8cpp_source.html">IRreceiver.cpp</a></li> <li><a class="el" href="IRreceiver_8cpp_source.html">IRreceiver.cpp</a></li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:53 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,45 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">IntField Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classIntField.html">IntField</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f">dispatch</a>(int event)</td><td><a class="el" href="classIntField.html">IntField</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a">enterField</a>(bool reverse)</td><td><a class="el" href="classIntField.html">IntField</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">exitField</a>()</td><td><a class="el" href="classField.html">Field</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">Field</a>(const String &amp;label)</td><td><a class="el" href="classField.html">Field</a></td><td><code> [explicit]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a7e2bdb203ddfd9219696f263c1731fe7">Field</a>(Form &amp;form, const String &amp;label)</td><td><a class="el" href="classField.html">Field</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>() const </td><td><a class="el" href="classField.html">Field</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6">IntField</a>(const String &amp;label)</td><td><a class="el" href="classIntField.html">IntField</a></td><td><code> [explicit]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIntField.html#a10c9c958bcde276698f1f1f9bff949dd">IntField</a>(Form &amp;form, const String &amp;label, int minValue, int maxValue, int stepValue, int value)</td><td><a class="el" href="classIntField.html">IntField</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classIntField.html#a2b99fa19be6a0ed01ddc4939352b372e">IntField</a>(Form &amp;form, const String &amp;label, int minValue, int maxValue, int stepValue, int value, const String &amp;suffix)</td><td><a class="el" href="classIntField.html">IntField</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a25d86a67b321e8c642edf75a10a35f72">isCurrent</a>() const </td><td><a class="el" href="classField.html">Field</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>() const </td><td><a class="el" href="classField.html">Field</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">lcd</a>() const </td><td><a class="el" href="classField.html">Field</a></td><td><code> [inline, protected]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad">maxValue</a>() const </td><td><a class="el" href="classIntField.html">IntField</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb">minValue</a>() const </td><td><a class="el" href="classIntField.html">IntField</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b">setLabel</a>(const String &amp;label)</td><td><a class="el" href="classField.html">Field</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1">setMaxValue</a>(int value)</td><td><a class="el" href="classIntField.html">IntField</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada">setMinValue</a>(int value)</td><td><a class="el" href="classIntField.html">IntField</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb">setStepValue</a>(int value)</td><td><a class="el" href="classIntField.html">IntField</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd">setSuffix</a>(const String &amp;suffix)</td><td><a class="el" href="classIntField.html">IntField</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7">setValue</a>(int value)</td><td><a class="el" href="classIntField.html">IntField</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd">stepValue</a>() const </td><td><a class="el" href="classIntField.html">IntField</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05">suffix</a>() const </td><td><a class="el" href="classIntField.html">IntField</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#afc612378167be0e7f8a6f8395b3537bd">updateCursor</a>()</td><td><a class="el" href="classField.html">Field</a></td><td><code> [protected, virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">value</a>() const </td><td><a class="el" href="classIntField.html">IntField</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60">~Field</a>()</td><td><a class="el" href="classField.html">Field</a></td><td></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -105,8 +80,46 @@ This is the complete list of members for <a class="el" href="classIntField.html"
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:53 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">IntField Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classIntField.html">IntField</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f">dispatch</a>(int event)</td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a">enterField</a>(bool reverse)</td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">exitField</a>()</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">Field</a>(const String &amp;label)</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#a7e2bdb203ddfd9219696f263c1731fe7">Field</a>(Form &amp;form, const String &amp;label)</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>() const </td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6">IntField</a>(const String &amp;label)</td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classIntField.html#a10c9c958bcde276698f1f1f9bff949dd">IntField</a>(Form &amp;form, const String &amp;label, int minValue, int maxValue, int stepValue, int value)</td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIntField.html#a2b99fa19be6a0ed01ddc4939352b372e">IntField</a>(Form &amp;form, const String &amp;label, int minValue, int maxValue, int stepValue, int value, const String &amp;suffix)</td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#a25d86a67b321e8c642edf75a10a35f72">isCurrent</a>() const </td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>() const </td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">lcd</a>() const </td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad">maxValue</a>() const </td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb">minValue</a>() const </td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b">setLabel</a>(const String &amp;label)</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1">setMaxValue</a>(int value)</td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada">setMinValue</a>(int value)</td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb">setStepValue</a>(int value)</td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd">setSuffix</a>(const String &amp;suffix)</td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7">setValue</a>(int value)</td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd">stepValue</a>() const </td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05">suffix</a>() const </td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#afc612378167be0e7f8a6f8395b3537bd">updateCursor</a>()</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">value</a>() const </td><td class="entry"><a class="el" href="classIntField.html">IntField</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60">~Field</a>()</td><td class="entry"><a class="el" href="classField.html">Field</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: IntField Class Reference</title> <title>ArduinoLibs: IntField Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,15 +66,30 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div> <a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classIntField-members.html">List of all members</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">IntField Class Reference</div> </div> <div class="title">IntField Class Reference</div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<!-- doxytag: class="IntField" --><!-- doxytag: inherits="Field" -->
<p><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages the input of an integer value. <p><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages the input of an integer value.
<a href="classIntField.html#details">More...</a></p> <a href="classIntField.html#details">More...</a></p>
@@ -80,85 +103,118 @@ Inheritance diagram for IntField:</div>
<area href="classField.html" title="Manages a single data input/output field within a Form." alt="Field" shape="rect" coords="0,0,53,24"/> <area href="classField.html" title="Manages a single data input/output field within a Form." alt="Field" shape="rect" coords="0,0,53,24"/>
</map> </map>
</div></div> </div></div>
<p><a href="classIntField-members.html">List of all members.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr> Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6">IntField</a> (const String &amp;label)</td></tr> <tr class="memitem:a9df274c4100ed37d2d78738f09fc53b6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6">IntField</a> (const String &amp;<a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new integer field with a specific <em>label</em>. <a href="#a9df274c4100ed37d2d78738f09fc53b6"></a><br/></td></tr> <tr class="memdesc:a9df274c4100ed37d2d78738f09fc53b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new integer field with a specific <em>label</em>. <a href="#a9df274c4100ed37d2d78738f09fc53b6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a10c9c958bcde276698f1f1f9bff949dd">IntField</a> (<a class="el" href="classForm.html">Form</a> &amp;form, const String &amp;label, int minValue, int maxValue, int stepValue, int value)</td></tr> <tr class="memitem:a10c9c958bcde276698f1f1f9bff949dd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a10c9c958bcde276698f1f1f9bff949dd">IntField</a> (<a class="el" href="classForm.html">Form</a> &amp;<a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>, const String &amp;<a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>, int <a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb">minValue</a>, int <a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad">maxValue</a>, int <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd">stepValue</a>, int <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">value</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new integer field with a specific <em>label</em>, <em>minValue</em>, <em>maxValue</em>, <em>stepValue</em>, and <em>value</em>, and attaches it to a <em>form</em>. <a href="#a10c9c958bcde276698f1f1f9bff949dd"></a><br/></td></tr> <tr class="memdesc:a10c9c958bcde276698f1f1f9bff949dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new integer field with a specific <em>label</em>, <em>minValue</em>, <em>maxValue</em>, <em>stepValue</em>, and <em>value</em>, and attaches it to a <em>form</em>. <a href="#a10c9c958bcde276698f1f1f9bff949dd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b99fa19be6a0ed01ddc4939352b372e"></a><!-- doxytag: member="IntField::IntField" ref="a2b99fa19be6a0ed01ddc4939352b372e" args="(Form &amp;form, const String &amp;label, int minValue, int maxValue, int stepValue, int value, const String &amp;suffix)" --> <tr class="memitem:a2b99fa19be6a0ed01ddc4939352b372e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b99fa19be6a0ed01ddc4939352b372e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a2b99fa19be6a0ed01ddc4939352b372e">IntField</a> (<a class="el" href="classForm.html">Form</a> &amp;form, const String &amp;label, int minValue, int maxValue, int stepValue, int value, const String &amp;suffix)</td></tr> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a2b99fa19be6a0ed01ddc4939352b372e">IntField</a> (<a class="el" href="classForm.html">Form</a> &amp;<a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>, const String &amp;<a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>, int <a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb">minValue</a>, int <a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad">maxValue</a>, int <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd">stepValue</a>, int <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">value</a>, const String &amp;<a class="el" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05">suffix</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new integer field with a specific <em>label</em>, <em>minValue</em>, <em>maxValue</em>, <em>stepValue</em>, <em>value</em>, and <em>suffix</em> and attaches it to a <em>form</em>. <br/></td></tr> <tr class="memdesc:a2b99fa19be6a0ed01ddc4939352b372e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new integer field with a specific <em>label</em>, <em>minValue</em>, <em>maxValue</em>, <em>stepValue</em>, <em>value</em>, and <em>suffix</em> and attaches it to a <em>form</em>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f">dispatch</a> (int event)</td></tr> <tr class="memitem:a01a17d5a89c76c42c4f0516984ce653f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f">dispatch</a> (int event)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatches <em>event</em> via this field. <a href="#a01a17d5a89c76c42c4f0516984ce653f"></a><br/></td></tr> <tr class="memdesc:a01a17d5a89c76c42c4f0516984ce653f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatches <em>event</em> via this field. <a href="#a01a17d5a89c76c42c4f0516984ce653f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a">enterField</a> (bool reverse)</td></tr> <tr class="memitem:a51d9127b660e8dd7f87718acd230202a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a">enterField</a> (bool reverse)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enters the field due to form navigation. <a href="#a51d9127b660e8dd7f87718acd230202a"></a><br/></td></tr> <tr class="memdesc:a51d9127b660e8dd7f87718acd230202a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enters the field due to form navigation. <a href="#a51d9127b660e8dd7f87718acd230202a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb">minValue</a> () const </td></tr> <tr class="memitem:af3dab3f2b46d29136d7a93ce46b0b8fb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb">minValue</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the minimum value for the input field. <a href="#af3dab3f2b46d29136d7a93ce46b0b8fb"></a><br/></td></tr> <tr class="memdesc:af3dab3f2b46d29136d7a93ce46b0b8fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the minimum value for the input field. <a href="#af3dab3f2b46d29136d7a93ce46b0b8fb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada">setMinValue</a> (int value)</td></tr> <tr class="memitem:afffe7be6721a043cec7a5a85c19e0ada"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada">setMinValue</a> (int <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">value</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the minimum <em>value</em> for the input field. <a href="#afffe7be6721a043cec7a5a85c19e0ada"></a><br/></td></tr> <tr class="memdesc:afffe7be6721a043cec7a5a85c19e0ada"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the minimum <em>value</em> for the input field. <a href="#afffe7be6721a043cec7a5a85c19e0ada"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad">maxValue</a> () const </td></tr> <tr class="memitem:aaa0adcb0d16e822e5f176be5cb9ca8ad"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad">maxValue</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the maximum value for the input field. <a href="#aaa0adcb0d16e822e5f176be5cb9ca8ad"></a><br/></td></tr> <tr class="memdesc:aaa0adcb0d16e822e5f176be5cb9ca8ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the maximum value for the input field. <a href="#aaa0adcb0d16e822e5f176be5cb9ca8ad"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1">setMaxValue</a> (int value)</td></tr> <tr class="memitem:a36cbd7c24480cc3fcf0c7634d5e22bf1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1">setMaxValue</a> (int <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">value</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the maximum <em>value</em> for the input field. <a href="#a36cbd7c24480cc3fcf0c7634d5e22bf1"></a><br/></td></tr> <tr class="memdesc:a36cbd7c24480cc3fcf0c7634d5e22bf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the maximum <em>value</em> for the input field. <a href="#a36cbd7c24480cc3fcf0c7634d5e22bf1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd">stepValue</a> () const </td></tr> <tr class="memitem:a49025ee3473fe066a6a6c546af98bfbd"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd">stepValue</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the step value to use when increasing or decreasing the <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> due to Up and Down button presses. <a href="#a49025ee3473fe066a6a6c546af98bfbd"></a><br/></td></tr> <tr class="memdesc:a49025ee3473fe066a6a6c546af98bfbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the step value to use when increasing or decreasing the <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> due to Up and Down button presses. <a href="#a49025ee3473fe066a6a6c546af98bfbd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb">setStepValue</a> (int value)</td></tr> <tr class="memitem:a8fb6e207bd906062bb788e19dbe58bcb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb">setStepValue</a> (int <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">value</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the step value <em>value</em> to use when increasing or decreasing the <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> due to Up and Down button presses. <a href="#a8fb6e207bd906062bb788e19dbe58bcb"></a><br/></td></tr> <tr class="memdesc:a8fb6e207bd906062bb788e19dbe58bcb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the step value <em>value</em> to use when increasing or decreasing the <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> due to Up and Down button presses. <a href="#a8fb6e207bd906062bb788e19dbe58bcb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">value</a> () const </td></tr> <tr class="memitem:a2fb650827ce8cb4662253bb6c32acb52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">value</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current value of this field. <a href="#a2fb650827ce8cb4662253bb6c32acb52"></a><br/></td></tr> <tr class="memdesc:a2fb650827ce8cb4662253bb6c32acb52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current value of this field. <a href="#a2fb650827ce8cb4662253bb6c32acb52"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7">setValue</a> (int value)</td></tr> <tr class="memitem:aed421e2c52946f2c7643534b4f6f13f7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7">setValue</a> (int <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">value</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current <em>value</em> of this field. <a href="#aed421e2c52946f2c7643534b4f6f13f7"></a><br/></td></tr> <tr class="memdesc:aed421e2c52946f2c7643534b4f6f13f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current <em>value</em> of this field. <a href="#aed421e2c52946f2c7643534b4f6f13f7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const String &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05">suffix</a> () const </td></tr> <tr class="memitem:a1a1de6a1836dfdb820c92b7f188a1b05"><td class="memItemLeft" align="right" valign="top">const String &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05">suffix</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the suffix string to be displayed after the field's value. <a href="#a1a1de6a1836dfdb820c92b7f188a1b05"></a><br/></td></tr> <tr class="memdesc:a1a1de6a1836dfdb820c92b7f188a1b05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the suffix string to be displayed after the field's value. <a href="#a1a1de6a1836dfdb820c92b7f188a1b05"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd">setSuffix</a> (const String &amp;suffix)</td></tr> <tr class="memitem:a9324bba994389f3a4563d9c18bd2f1cd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd">setSuffix</a> (const String &amp;<a class="el" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05">suffix</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <em>suffix</em> string to be displayed after the field's value. <a href="#a9324bba994389f3a4563d9c18bd2f1cd"></a><br/></td></tr> <tr class="memdesc:a9324bba994389f3a4563d9c18bd2f1cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <em>suffix</em> string to be displayed after the field's value. <a href="#a9324bba994389f3a4563d9c18bd2f1cd"></a><br/></td></tr>
<tr class="inherit_header pub_methods_classField"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classField')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classField.html">Field</a></td></tr>
<tr class="memitem:ac4ea0d104376233c3f0bfc080ec8564e inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">Field</a> (const String &amp;<a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>)</td></tr>
<tr class="memdesc:ac4ea0d104376233c3f0bfc080ec8564e inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new field with a specific <em>label</em>. <a href="#ac4ea0d104376233c3f0bfc080ec8564e"></a><br/></td></tr>
<tr class="memitem:a7e2bdb203ddfd9219696f263c1731fe7 inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e2bdb203ddfd9219696f263c1731fe7"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a7e2bdb203ddfd9219696f263c1731fe7">Field</a> (<a class="el" href="classForm.html">Form</a> &amp;<a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>, const String &amp;<a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>)</td></tr>
<tr class="memdesc:a7e2bdb203ddfd9219696f263c1731fe7 inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new field with a specific <em>label</em> and attaches it to a <em>form</em>. <br/></td></tr>
<tr class="memitem:a45d6e6d09b8f8e46de62b40119d62c60 inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60">~Field</a> ()</td></tr>
<tr class="memdesc:a45d6e6d09b8f8e46de62b40119d62c60 inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys this field and removes it from its owning <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. <a href="#a45d6e6d09b8f8e46de62b40119d62c60"></a><br/></td></tr>
<tr class="memitem:a27427319be1cc92db3128637d8884ee5 inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27427319be1cc92db3128637d8884ee5"></a>
<a class="el" href="classForm.html">Form</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a> () const </td></tr>
<tr class="memdesc:a27427319be1cc92db3128637d8884ee5 inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> that owns this field; null if not associated with a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. <br/></td></tr>
<tr class="memitem:ad6805c75ee1e62f8cd8bd550c4530c07 inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">exitField</a> ()</td></tr>
<tr class="memdesc:ad6805c75ee1e62f8cd8bd550c4530c07 inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exits the field due to form navigation. <a href="#ad6805c75ee1e62f8cd8bd550c4530c07"></a><br/></td></tr>
<tr class="memitem:aaa861ef917130c989a955bc75c683afe inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top">const String &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a> () const </td></tr>
<tr class="memdesc:aaa861ef917130c989a955bc75c683afe inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the label to display in the first line of this field. <a href="#aaa861ef917130c989a955bc75c683afe"></a><br/></td></tr>
<tr class="memitem:ad4ea63599d780c35b296cf2840b69f7b inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b">setLabel</a> (const String &amp;<a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>)</td></tr>
<tr class="memdesc:ad4ea63599d780c35b296cf2840b69f7b inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <em>label</em> to display in the first line of this field. <a href="#ad4ea63599d780c35b296cf2840b69f7b"></a><br/></td></tr>
<tr class="memitem:a25d86a67b321e8c642edf75a10a35f72 inherit pub_methods_classField"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a25d86a67b321e8c642edf75a10a35f72">isCurrent</a> () const </td></tr>
<tr class="memdesc:a25d86a67b321e8c642edf75a10a35f72 inherit pub_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if this field is the currently-displayed field in its owning form; false otherwise. <a href="#a25d86a67b321e8c642edf75a10a35f72"></a><br/></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_methods_classField"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classField')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classField.html">Field</a></td></tr>
<tr class="memitem:a5cf21bf958a71e51feac9e1bf9f599d1 inherit pro_methods_classField"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cf21bf958a71e51feac9e1bf9f599d1"></a>
LiquidCrystal *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">lcd</a> () const </td></tr>
<tr class="memdesc:a5cf21bf958a71e51feac9e1bf9f599d1 inherit pro_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> that this field is being drawn on. <br/></td></tr>
<tr class="memitem:afc612378167be0e7f8a6f8395b3537bd inherit pro_methods_classField"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classField.html#afc612378167be0e7f8a6f8395b3537bd">updateCursor</a> ()</td></tr>
<tr class="memdesc:afc612378167be0e7f8a6f8395b3537bd inherit pro_methods_classField"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the cursor position after the label has been drawn by <a class="el" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b" title="Sets the label to display in the first line of this field.">setLabel()</a>. <a href="#afc612378167be0e7f8a6f8395b3537bd"></a><br/></td></tr>
</table> </table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages the input of an integer value. </p> <div class="textblock"><p><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a> that manages the input of an integer value. </p>
<p><a class="el" href="classIntField.html" title="Field that manages the input of an integer value.">IntField</a> is intended for field values that are modifiable by the user. Pressing Up adds <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a> to the current value and pressing Down subtracts <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a> from the current value. The value is clamped to the range <a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue()</a> to <a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue()</a>.</p> <p><a class="el" href="classIntField.html" title="Field that manages the input of an integer value.">IntField</a> is intended for field values that are modifiable by the user. Pressing Up adds <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a> to the current value and pressing Down subtracts <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a> from the current value. The value is clamped to the range <a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue()</a> to <a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue()</a>.</p>
<p>The following example creates an integer field with the label "Iterations", that ranges between 1 and 5, with a <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a> of 1, and an initial default <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> of 2:</p> <p>The following example creates an integer field with the label "Iterations", that ranges between 1 and 5, with a <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a> of 1, and an initial default <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> of 2:</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> mainForm(lcd); <div class="fragment"><div class="line"><a class="code" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> mainForm(lcd);</div>
<a class="code" href="classIntField.html" title="Field that manages the input of an integer value.">IntField</a> iterField(mainForm, <span class="stringliteral">&quot;Iterations&quot;</span>, 1, 5, 1, 2); <div class="line"><a class="code" href="classIntField.html" title="Field that manages the input of an integer value.">IntField</a> iterField(mainForm, <span class="stringliteral">&quot;Iterations&quot;</span>, 1, 5, 1, 2);</div>
</pre></div><p><a class="el" href="classIntField.html" title="Field that manages the input of an integer value.">IntField</a> can be configured to show a <a class="el" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05" title="Returns the suffix string to be displayed after the field&#39;s value.">suffix()</a> on the screen after the integer <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a>. This is intended for communicating the units in which the value is expressed. For example:</p> </div><!-- fragment --><p><a class="el" href="classIntField.html" title="Field that manages the input of an integer value.">IntField</a> can be configured to show a <a class="el" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05" title="Returns the suffix string to be displayed after the field&#39;s value.">suffix()</a> on the screen after the integer <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a>. This is intended for communicating the units in which the value is expressed. For example:</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classIntField.html" title="Field that manages the input of an integer value.">IntField</a> volumeField(mainForm, <span class="stringliteral">&quot;Volume&quot;</span>, 0, 100, 5, 85, <span class="stringliteral">&quot;%&quot;</span>); <div class="fragment"><div class="line"><a class="code" href="classIntField.html" title="Field that manages the input of an integer value.">IntField</a> volumeField(mainForm, <span class="stringliteral">&quot;Volume&quot;</span>, 0, 100, 5, 85, <span class="stringliteral">&quot;%&quot;</span>);</div>
<a class="code" href="classIntField.html" title="Field that manages the input of an integer value.">IntField</a> speedField(mainForm, <span class="stringliteral">&quot;Speed&quot;</span>, 0, 2000, 15, 450, <span class="stringliteral">&quot; rpm&quot;</span>); <div class="line"><a class="code" href="classIntField.html" title="Field that manages the input of an integer value.">IntField</a> speedField(mainForm, <span class="stringliteral">&quot;Speed&quot;</span>, 0, 2000, 15, 450, <span class="stringliteral">&quot; rpm&quot;</span>);</div>
</pre></div><div class="image"> </div><!-- fragment --><div class="image">
<img src="FormInt.png" alt="FormInt.png"/> <img src="FormInt.png" alt="FormInt.png"/>
</div> </div>
<p>Use <a class="el" href="classTextField.html" title="Field that displays a read-only text value.">TextField</a> for read-only fields that report integer values but which are not modifiable by the user.</p> <p>Use <a class="el" href="classTextField.html" title="Field that displays a read-only text value.">TextField</a> for read-only fields that report integer values but which are not modifiable by the user.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>, <a class="el" href="classTextField.html" title="Field that displays a read-only text value.">TextField</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classField.html" title="Manages a single data input/output field within a Form.">Field</a>, <a class="el" href="classTextField.html" title="Field that displays a read-only text value.">TextField</a> </dd></dl>
<p>Definition at line <a class="el" href="IntField_8h_source.html#l00028">28</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p> <p>Definition at line <a class="el" href="IntField_8h_source.html#l00028">28</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2> </div><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a9df274c4100ed37d2d78738f09fc53b6"></a><!-- doxytag: member="IntField::IntField" ref="a9df274c4100ed37d2d78738f09fc53b6" args="(const String &amp;label)" --> <a class="anchor" id="a9df274c4100ed37d2d78738f09fc53b6"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">IntField::IntField </td> <td class="memname">IntField::IntField </td>
<td>(</td> <td>(</td>
<td class="paramtype">const String &amp;&#160;</td> <td class="paramtype">const String &amp;&#160;</td>
<td class="paramname"><em>label</em></td><td>)</td> <td class="paramname"><em>label</em></td><td>)</td>
<td><code> [explicit]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructs a new integer field with a specific <em>label</em>. </p> <p>Constructs a new integer field with a specific <em>label</em>. </p>
<p>The field is initially not associated with a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. The field can be added to a form later using <a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">Form::addField()</a>.</p> <p>The field is initially not associated with a <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>. The field can be added to a form later using <a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">Form::addField()</a>.</p>
<p>Initially, <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> is 0, <a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue()</a> is 0, <a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue()</a> is 100, <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a> is 1, and <a class="el" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05" title="Returns the suffix string to be displayed after the field&#39;s value.">suffix()</a> is an empty string.</p> <p>Initially, <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> is 0, <a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue()</a> is 0, <a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue()</a> is 100, <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a> is 1, and <a class="el" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05" title="Returns the suffix string to be displayed after the field&#39;s value.">suffix()</a> is an empty string.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">Form::addField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a5cb056ace428e75e321610555bfecac7" title="Adds field to this form.">Form::addField()</a> </dd></dl>
<p>Definition at line <a class="el" href="IntField_8cpp_source.html#l00071">71</a> of file <a class="el" href="IntField_8cpp_source.html">IntField.cpp</a>.</p> <p>Definition at line <a class="el" href="IntField_8cpp_source.html#l00071">71</a> of file <a class="el" href="IntField_8cpp_source.html">IntField.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a10c9c958bcde276698f1f1f9bff949dd"></a><!-- doxytag: member="IntField::IntField" ref="a10c9c958bcde276698f1f1f9bff949dd" args="(Form &amp;form, const String &amp;label, int minValue, int maxValue, int stepValue, int value)" --> <a class="anchor" id="a10c9c958bcde276698f1f1f9bff949dd"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -204,8 +260,7 @@ Public Member Functions</h2></td></tr>
<td></td><td></td> <td></td><td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Constructs a new integer field with a specific <em>label</em>, <em>minValue</em>, <em>maxValue</em>, <em>stepValue</em>, and <em>value</em>, and attaches it to a <em>form</em>. </p> <p>Constructs a new integer field with a specific <em>label</em>, <em>minValue</em>, <em>maxValue</em>, <em>stepValue</em>, and <em>value</em>, and attaches it to a <em>form</em>. </p>
<p>The <a class="el" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05" title="Returns the suffix string to be displayed after the field&#39;s value.">suffix()</a> is initially set to an empty string. </p> <p>The <a class="el" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05" title="Returns the suffix string to be displayed after the field&#39;s value.">suffix()</a> is initially set to an empty string. </p>
@@ -214,28 +269,35 @@ Public Member Functions</h2></td></tr>
</div> </div>
</div> </div>
<hr/><h2>Member Function Documentation</h2> <h2>Member Function Documentation</h2>
<a class="anchor" id="a01a17d5a89c76c42c4f0516984ce653f"></a><!-- doxytag: member="IntField::dispatch" ref="a01a17d5a89c76c42c4f0516984ce653f" args="(int event)" --> <a class="anchor" id="a01a17d5a89c76c42c4f0516984ce653f"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">int IntField::dispatch </td> <td class="memname">int IntField::dispatch </td>
<td>(</td> <td>(</td>
<td class="paramtype">int&#160;</td> <td class="paramtype">int&#160;</td>
<td class="paramname"><em>event</em></td><td>)</td> <td class="paramname"><em>event</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Dispatches <em>event</em> via this field. </p> <p>Dispatches <em>event</em> via this field. </p>
<p>The <em>event</em> is usually obtained from <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a>.</p> <p>The <em>event</em> is usually obtained from <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a>.</p>
<p>Returns zero if the <em>event</em> has been handled and no further action is required.</p> <p>Returns zero if the <em>event</em> has been handled and no further action is required.</p>
<p>Returns FORM_CHANGED if the <em>event</em> has changed the value of this field in a manner that may require the application to take further action based on the new field value.</p> <p>Returns FORM_CHANGED if the <em>event</em> has changed the value of this field in a manner that may require the application to take further action based on the new field value.</p>
<p>Returns -1 if the <em>event</em> is not handled by this field, and should be handled by the <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> itself (particularly for Left and Right buttons). The default implementation returns -1 for all events.</p> <p>Returns -1 if the <em>event</em> is not handled by this field, and should be handled by the <a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a> itself (particularly for Left and Right buttons). The default implementation returns -1 for all events.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee" title="Dispatches event to the currently active field using Field::dispatch().">Form::dispatch()</a>, <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee" title="Dispatches event to the currently active field using Field::dispatch().">Form::dispatch()</a>, <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">LCD::getButton()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3">Field</a>.</p> <p>Reimplemented from <a class="el" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3">Field</a>.</p>
@@ -243,26 +305,33 @@ Public Member Functions</h2></td></tr>
</div> </div>
</div> </div>
<a class="anchor" id="a51d9127b660e8dd7f87718acd230202a"></a><!-- doxytag: member="IntField::enterField" ref="a51d9127b660e8dd7f87718acd230202a" args="(bool reverse)" --> <a class="anchor" id="a51d9127b660e8dd7f87718acd230202a"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void IntField::enterField </td> <td class="memname">void IntField::enterField </td>
<td>(</td> <td>(</td>
<td class="paramtype">bool&#160;</td> <td class="paramtype">bool&#160;</td>
<td class="paramname"><em>reverse</em></td><td>)</td> <td class="paramname"><em>reverse</em></td><td>)</td>
<td><code> [virtual]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Enters the field due to form navigation. </p> <p>Enters the field due to form navigation. </p>
<p>This function is typically called when the user presses Left and Right buttons to navigate to the field. If <em>reverse</em> is true, then navigation was due to the Left button being pressed.</p> <p>This function is typically called when the user presses Left and Right buttons to navigate to the field. If <em>reverse</em> is true, then navigation was due to the Left button being pressed.</p>
<p>This function can assume that the display has been cleared and the cursor is positioned at (0, 0).</p> <p>This function can assume that the display has been cleared and the cursor is positioned at (0, 0).</p>
<p>The default implementation prints the <a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label()</a>.</p> <p>The default implementation prints the <a class="el" href="classField.html#aaa861ef917130c989a955bc75c683afe" title="Returns the label to display in the first line of this field.">label()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07" title="Exits the field due to form navigation.">exitField()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07" title="Exits the field due to form navigation.">exitField()</a> </dd></dl>
<p>Reimplemented from <a class="el" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">Field</a>.</p> <p>Reimplemented from <a class="el" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">Field</a>.</p>
@@ -270,117 +339,152 @@ Public Member Functions</h2></td></tr>
</div> </div>
</div> </div>
<a class="anchor" id="aaa0adcb0d16e822e5f176be5cb9ca8ad"></a><!-- doxytag: member="IntField::maxValue" ref="aaa0adcb0d16e822e5f176be5cb9ca8ad" args="() const " --> <a class="anchor" id="aaa0adcb0d16e822e5f176be5cb9ca8ad"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">int IntField::maxValue </td> <td class="memname">int IntField::maxValue </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the maximum value for the input field. </p> <p>Returns the maximum value for the input field. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1" title="Sets the maximum value for the input field.">setMaxValue()</a>, <a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue()</a>, <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a>, <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1" title="Sets the maximum value for the input field.">setMaxValue()</a>, <a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue()</a>, <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a>, <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> </dd></dl>
<p>Definition at line <a class="el" href="IntField_8h_source.html#l00041">41</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p> <p>Definition at line <a class="el" href="IntField_8h_source.html#l00041">41</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="af3dab3f2b46d29136d7a93ce46b0b8fb"></a><!-- doxytag: member="IntField::minValue" ref="af3dab3f2b46d29136d7a93ce46b0b8fb" args="() const " --> <a class="anchor" id="af3dab3f2b46d29136d7a93ce46b0b8fb"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">int IntField::minValue </td> <td class="memname">int IntField::minValue </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the minimum value for the input field. </p> <p>Returns the minimum value for the input field. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada" title="Sets the minimum value for the input field.">setMinValue()</a>, <a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue()</a>, <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a>, <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada" title="Sets the minimum value for the input field.">setMinValue()</a>, <a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue()</a>, <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a>, <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> </dd></dl>
<p>Definition at line <a class="el" href="IntField_8h_source.html#l00038">38</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p> <p>Definition at line <a class="el" href="IntField_8h_source.html#l00038">38</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a36cbd7c24480cc3fcf0c7634d5e22bf1"></a><!-- doxytag: member="IntField::setMaxValue" ref="a36cbd7c24480cc3fcf0c7634d5e22bf1" args="(int value)" --> <a class="anchor" id="a36cbd7c24480cc3fcf0c7634d5e22bf1"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void IntField::setMaxValue </td> <td class="memname">void IntField::setMaxValue </td>
<td>(</td> <td>(</td>
<td class="paramtype">int&#160;</td> <td class="paramtype">int&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td> <td class="paramname"><em>value</em></td><td>)</td>
<td><code> [inline]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the maximum <em>value</em> for the input field. </p> <p>Sets the maximum <em>value</em> for the input field. </p>
<p>The new maximum <em>value</em> will be used to clamp the field's value the next time <a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue()</a> is called.</p> <p>The new maximum <em>value</em> will be used to clamp the field's value the next time <a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue()</a> is called.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue()</a>, <a class="el" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada" title="Sets the minimum value for the input field.">setMinValue()</a>, <a class="el" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb" title="Sets the step value value to use when increasing or decreasing the value() due to Up and Down button ...">setStepValue()</a>, <a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue()</a>, <a class="el" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada" title="Sets the minimum value for the input field.">setMinValue()</a>, <a class="el" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb" title="Sets the step value value to use when increasing or decreasing the value() due to Up and Down button ...">setStepValue()</a>, <a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue()</a> </dd></dl>
<p>Definition at line <a class="el" href="IntField_8h_source.html#l00042">42</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p> <p>Definition at line <a class="el" href="IntField_8h_source.html#l00042">42</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="afffe7be6721a043cec7a5a85c19e0ada"></a><!-- doxytag: member="IntField::setMinValue" ref="afffe7be6721a043cec7a5a85c19e0ada" args="(int value)" --> <a class="anchor" id="afffe7be6721a043cec7a5a85c19e0ada"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void IntField::setMinValue </td> <td class="memname">void IntField::setMinValue </td>
<td>(</td> <td>(</td>
<td class="paramtype">int&#160;</td> <td class="paramtype">int&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td> <td class="paramname"><em>value</em></td><td>)</td>
<td><code> [inline]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the minimum <em>value</em> for the input field. </p> <p>Sets the minimum <em>value</em> for the input field. </p>
<p>The new minimum <em>value</em> will be used to clamp the field's value the next time <a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue()</a> is called.</p> <p>The new minimum <em>value</em> will be used to clamp the field's value the next time <a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue()</a> is called.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue()</a>, <a class="el" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1" title="Sets the maximum value for the input field.">setMaxValue()</a>, <a class="el" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb" title="Sets the step value value to use when increasing or decreasing the value() due to Up and Down button ...">setStepValue()</a>, <a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue()</a>, <a class="el" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1" title="Sets the maximum value for the input field.">setMaxValue()</a>, <a class="el" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb" title="Sets the step value value to use when increasing or decreasing the value() due to Up and Down button ...">setStepValue()</a>, <a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue()</a> </dd></dl>
<p>Definition at line <a class="el" href="IntField_8h_source.html#l00039">39</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p> <p>Definition at line <a class="el" href="IntField_8h_source.html#l00039">39</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a8fb6e207bd906062bb788e19dbe58bcb"></a><!-- doxytag: member="IntField::setStepValue" ref="a8fb6e207bd906062bb788e19dbe58bcb" args="(int value)" --> <a class="anchor" id="a8fb6e207bd906062bb788e19dbe58bcb"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void IntField::setStepValue </td> <td class="memname">void IntField::setStepValue </td>
<td>(</td> <td>(</td>
<td class="paramtype">int&#160;</td> <td class="paramtype">int&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td> <td class="paramname"><em>value</em></td><td>)</td>
<td><code> [inline]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the step value <em>value</em> to use when increasing or decreasing the <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> due to Up and Down button presses. </p> <p>Sets the step value <em>value</em> to use when increasing or decreasing the <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> due to Up and Down button presses. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a>, <a class="el" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada" title="Sets the minimum value for the input field.">setMinValue()</a>, <a class="el" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1" title="Sets the maximum value for the input field.">setMaxValue()</a>, <a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a>, <a class="el" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada" title="Sets the minimum value for the input field.">setMinValue()</a>, <a class="el" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1" title="Sets the maximum value for the input field.">setMaxValue()</a>, <a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue()</a> </dd></dl>
<p>Definition at line <a class="el" href="IntField_8h_source.html#l00045">45</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p> <p>Definition at line <a class="el" href="IntField_8h_source.html#l00045">45</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a9324bba994389f3a4563d9c18bd2f1cd"></a><!-- doxytag: member="IntField::setSuffix" ref="a9324bba994389f3a4563d9c18bd2f1cd" args="(const String &amp;suffix)" --> <a class="anchor" id="a9324bba994389f3a4563d9c18bd2f1cd"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -392,20 +496,19 @@ Public Member Functions</h2></td></tr>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Sets the <em>suffix</em> string to be displayed after the field's value. </p> <p>Sets the <em>suffix</em> string to be displayed after the field's value. </p>
<p>Suffixes are typically used to indicate the units that the <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> is expressed in. For example:</p> <p>Suffixes are typically used to indicate the units that the <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> is expressed in. For example:</p>
<div class="fragment"><pre class="fragment"> field.setSuffix(<span class="stringliteral">&quot;%&quot;</span>); <div class="fragment"><div class="line">field.setSuffix(<span class="stringliteral">&quot;%&quot;</span>);</div>
field.setSuffix(<span class="stringliteral">&quot; rpm&quot;</span>); <div class="line">field.setSuffix(<span class="stringliteral">&quot; rpm&quot;</span>);</div>
</pre></div><dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05" title="Returns the suffix string to be displayed after the field&#39;s value.">suffix()</a> </dd></dl> </div><!-- fragment --><dl class="section see"><dt>See Also</dt><dd><a class="el" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05" title="Returns the suffix string to be displayed after the field&#39;s value.">suffix()</a> </dd></dl>
<p>Definition at line <a class="el" href="IntField_8cpp_source.html#l00231">231</a> of file <a class="el" href="IntField_8cpp_source.html">IntField.cpp</a>.</p> <p>Definition at line <a class="el" href="IntField_8cpp_source.html#l00231">231</a> of file <a class="el" href="IntField_8cpp_source.html">IntField.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="aed421e2c52946f2c7643534b4f6f13f7"></a><!-- doxytag: member="IntField::setValue" ref="aed421e2c52946f2c7643534b4f6f13f7" args="(int value)" --> <a class="anchor" id="aed421e2c52946f2c7643534b4f6f13f7"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -417,75 +520,95 @@ Public Member Functions</h2></td></tr>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Sets the current <em>value</em> of this field. </p> <p>Sets the current <em>value</em> of this field. </p>
<p>The <em>value</em> will be clamped to the range defined by <a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue()</a> and <a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue()</a>.</p> <p>The <em>value</em> will be clamped to the range defined by <a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue()</a> and <a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a>, <a class="el" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada" title="Sets the minimum value for the input field.">setMinValue()</a>, <a class="el" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1" title="Sets the maximum value for the input field.">setMaxValue()</a>, <a class="el" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb" title="Sets the step value value to use when increasing or decreasing the value() due to Up and Down button ...">setStepValue()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a>, <a class="el" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada" title="Sets the minimum value for the input field.">setMinValue()</a>, <a class="el" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1" title="Sets the maximum value for the input field.">setMaxValue()</a>, <a class="el" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb" title="Sets the step value value to use when increasing or decreasing the value() due to Up and Down button ...">setStepValue()</a> </dd></dl>
<p>Definition at line <a class="el" href="IntField_8cpp_source.html#l00198">198</a> of file <a class="el" href="IntField_8cpp_source.html">IntField.cpp</a>.</p> <p>Definition at line <a class="el" href="IntField_8cpp_source.html#l00198">198</a> of file <a class="el" href="IntField_8cpp_source.html">IntField.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a49025ee3473fe066a6a6c546af98bfbd"></a><!-- doxytag: member="IntField::stepValue" ref="a49025ee3473fe066a6a6c546af98bfbd" args="() const " --> <a class="anchor" id="a49025ee3473fe066a6a6c546af98bfbd"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">int IntField::stepValue </td> <td class="memname">int IntField::stepValue </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the step value to use when increasing or decreasing the <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> due to Up and Down button presses. </p> <p>Returns the step value to use when increasing or decreasing the <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> due to Up and Down button presses. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb" title="Sets the step value value to use when increasing or decreasing the value() due to Up and Down button ...">setStepValue()</a>, <a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue()</a>, <a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue()</a>, <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb" title="Sets the step value value to use when increasing or decreasing the value() due to Up and Down button ...">setStepValue()</a>, <a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue()</a>, <a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue()</a>, <a class="el" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52" title="Returns the current value of this field.">value()</a> </dd></dl>
<p>Definition at line <a class="el" href="IntField_8h_source.html#l00044">44</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p> <p>Definition at line <a class="el" href="IntField_8h_source.html#l00044">44</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a1a1de6a1836dfdb820c92b7f188a1b05"></a><!-- doxytag: member="IntField::suffix" ref="a1a1de6a1836dfdb820c92b7f188a1b05" args="() const " --> <a class="anchor" id="a1a1de6a1836dfdb820c92b7f188a1b05"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">const String &amp; IntField::suffix </td> <td class="memname">const String &amp; IntField::suffix </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the suffix string to be displayed after the field's value. </p> <p>Returns the suffix string to be displayed after the field's value. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd" title="Sets the suffix string to be displayed after the field&#39;s value.">setSuffix()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd" title="Sets the suffix string to be displayed after the field&#39;s value.">setSuffix()</a> </dd></dl>
<p>Definition at line <a class="el" href="IntField_8h_source.html#l00050">50</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p> <p>Definition at line <a class="el" href="IntField_8h_source.html#l00050">50</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a2fb650827ce8cb4662253bb6c32acb52"></a><!-- doxytag: member="IntField::value" ref="a2fb650827ce8cb4662253bb6c32acb52" args="() const " --> <a class="anchor" id="a2fb650827ce8cb4662253bb6c32acb52"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">int IntField::value </td> <td class="memname">int IntField::value </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the current value of this field. </p> <p>Returns the current value of this field. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue()</a>, <a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue()</a>, <a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue()</a>, <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7" title="Sets the current value of this field.">setValue()</a>, <a class="el" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb" title="Returns the minimum value for the input field.">minValue()</a>, <a class="el" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad" title="Returns the maximum value for the input field.">maxValue()</a>, <a class="el" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd" title="Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...">stepValue()</a> </dd></dl>
<p>Definition at line <a class="el" href="IntField_8h_source.html#l00047">47</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p> <p>Definition at line <a class="el" href="IntField_8h_source.html#l00047">47</a> of file <a class="el" href="IntField_8h_source.html">IntField.h</a>.</p>
@@ -495,23 +618,12 @@ Public Member Functions</h2></td></tr>
<li><a class="el" href="IntField_8h_source.html">IntField.h</a></li> <li><a class="el" href="IntField_8h_source.html">IntField.h</a></li>
<li><a class="el" href="IntField_8cpp_source.html">IntField.cpp</a></li> <li><a class="el" href="IntField_8cpp_source.html">IntField.cpp</a></li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:53 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 B

After

Width:  |  Height:  |  Size: 311 B

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: Member List</title> <title>ArduinoLibs: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,36 +66,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">LCD Member List</div> </div>
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classLCD.html">LCD</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c">BacklightOff</a> enum value</td><td><a class="el" href="classLCD.html">LCD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35">BacklightOnSelect</a> enum value</td><td><a class="el" href="classLCD.html">LCD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#a171f59ba80e7775ebd3a399f56482a9c">backlightPin</a>() const </td><td><a class="el" href="classLCD.html">LCD</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e">disableScreenSaver</a>()</td><td><a class="el" href="classLCD.html">LCD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>()</td><td><a class="el" href="classLCD.html">LCD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f">DisplayOff</a> enum value</td><td><a class="el" href="classLCD.html">LCD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f">enableScreenSaver</a>(int timeoutSecs=10)</td><td><a class="el" href="classLCD.html">LCD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292">getButton</a>()</td><td><a class="el" href="classLCD.html">LCD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e">isScreenSaved</a>() const </td><td><a class="el" href="classLCD.html">LCD</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a>()</td><td><a class="el" href="classLCD.html">LCD</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#a067bc741cf27f143aba5d9f147908401">LCD</a>(uint8_t pin9)</td><td><a class="el" href="classLCD.html">LCD</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>()</td><td><a class="el" href="classLCD.html">LCD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</a> enum name</td><td><a class="el" href="classLCD.html">LCD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8">screenSaverMode</a>() const </td><td><a class="el" href="classLCD.html">LCD</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8">setBacklightPin</a>(uint8_t pin)</td><td><a class="el" href="classLCD.html">LCD</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801">setScreenSaverMode</a>(ScreenSaverMode mode)</td><td><a class="el" href="classLCD.html">LCD</a></td><td></td></tr>
</table></div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> <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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -96,8 +80,37 @@ This is the complete list of members for <a class="el" href="classLCD.html">LCD<
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:53 for ArduinoLibs by&#160; </div><!-- top -->
<a href="http://www.doxygen.org/index.html"> <div class="header">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="headertitle">
<div class="title">LCD Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classLCD.html">LCD</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c">BacklightOff</a> enum value</td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35">BacklightOnSelect</a> enum value</td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classLCD.html#a171f59ba80e7775ebd3a399f56482a9c">backlightPin</a>() const </td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e">disableScreenSaver</a>()</td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>()</td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f">DisplayOff</a> enum value</td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f">enableScreenSaver</a>(int timeoutSecs=10)</td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292">getButton</a>()</td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e">isScreenSaved</a>() const </td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a>()</td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classLCD.html#a067bc741cf27f143aba5d9f147908401">LCD</a>(uint8_t pin9)</td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classLCD.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>()</td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</a> enum name</td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8">screenSaverMode</a>() const </td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8">setBacklightPin</a>(uint8_t pin)</td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801">setScreenSaverMode</a>(ScreenSaverMode mode)</td><td class="entry"><a class="el" href="classLCD.html">LCD</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body> </body>
</html> </html>

View File

@@ -2,29 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>ArduinoLibs: LCD Class Reference</title> <title>ArduinoLibs: LCD Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <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="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs</div> <div id="projectname">ArduinoLibs
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
@@ -32,7 +40,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li> <li><a href="files.html"><span>Files</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -58,58 +66,72 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Class&#160;Members</span></a></li> <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul> </ul>
</div> </div>
<!-- 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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><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>
</div><!-- top -->
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#pub-types">Public Types</a> &#124; <a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> </div> <a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classLCD-members.html">List of all members</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">LCD Class Reference</div> </div> <div class="title">LCD Class Reference</div> </div>
</div> </div><!--header-->
<div class="contents"> <div class="contents">
<!-- doxytag: class="LCD" -->
<p>Enhanced library for Freetronics 16x2 <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shields. <p>Enhanced library for Freetronics 16x2 <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shields.
<a href="classLCD.html#details">More...</a></p> <a href="classLCD.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="LCD_8h_source.html">LCD.h</a>&gt;</code></p> <p><code>#include &lt;<a class="el" href="LCD_8h_source.html">LCD.h</a>&gt;</code></p>
<p><a href="classLCD-members.html">List of all members.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-types"></a> <tr class="heading"><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr> Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</a> { <a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f">DisplayOff</a>, <tr class="memitem:a264bf94308c95d8598426e13dc8cdb28"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</a> { <a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f">DisplayOff</a>,
<a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c">BacklightOff</a>, <a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c">BacklightOff</a>,
<a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35">BacklightOnSelect</a> <a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35">BacklightOnSelect</a>
}</td></tr> }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Screen saver mode that controls the display and back light. <a href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">More...</a><br/></td></tr> <tr class="memdesc:a264bf94308c95d8598426e13dc8cdb28"><td class="mdescLeft">&#160;</td><td class="mdescRight">Screen saver mode that controls the display and back light. <a href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a> </table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr> Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> ()</td></tr> <tr class="memitem:a00bb2db1390721abc7b24ac4b8c276c8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the Freetronics <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> display with the default pin assignment. <a href="#a00bb2db1390721abc7b24ac4b8c276c8"></a><br/></td></tr> <tr class="memdesc:a00bb2db1390721abc7b24ac4b8c276c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the Freetronics <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> display with the default pin assignment. <a href="#a00bb2db1390721abc7b24ac4b8c276c8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a067bc741cf27f143aba5d9f147908401">LCD</a> (uint8_t pin9)</td></tr> <tr class="memitem:a067bc741cf27f143aba5d9f147908401"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a067bc741cf27f143aba5d9f147908401">LCD</a> (uint8_t pin9)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the Freetronics <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> display for USBDroid. <a href="#a067bc741cf27f143aba5d9f147908401"></a><br/></td></tr> <tr class="memdesc:a067bc741cf27f143aba5d9f147908401"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the Freetronics <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> display for USBDroid. <a href="#a067bc741cf27f143aba5d9f147908401"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a171f59ba80e7775ebd3a399f56482a9c">backlightPin</a> () const </td></tr> <tr class="memitem:a171f59ba80e7775ebd3a399f56482a9c"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a171f59ba80e7775ebd3a399f56482a9c">backlightPin</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the pin that is being used to control the back light. The default is 3. <a href="#a171f59ba80e7775ebd3a399f56482a9c"></a><br/></td></tr> <tr class="memdesc:a171f59ba80e7775ebd3a399f56482a9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the pin that is being used to control the back light. The default is 3. <a href="#a171f59ba80e7775ebd3a399f56482a9c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8">setBacklightPin</a> (uint8_t pin)</td></tr> <tr class="memitem:a0b9b3b954290e7a3d94cdc829582b0a8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8">setBacklightPin</a> (uint8_t pin)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the back light <em>pin</em> for the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shield. <a href="#a0b9b3b954290e7a3d94cdc829582b0a8"></a><br/></td></tr> <tr class="memdesc:a0b9b3b954290e7a3d94cdc829582b0a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the back light <em>pin</em> for the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shield. <a href="#a0b9b3b954290e7a3d94cdc829582b0a8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a> ()</td></tr> <tr class="memitem:a5b07cf05e8e5e7c53654f5ca0cf58b89"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Turns on the display of text on the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> and the back light. <a href="#a5b07cf05e8e5e7c53654f5ca0cf58b89"></a><br/></td></tr> <tr class="memdesc:a5b07cf05e8e5e7c53654f5ca0cf58b89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Turns on the display of text on the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> and the back light. <a href="#a5b07cf05e8e5e7c53654f5ca0cf58b89"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a> ()</td></tr> <tr class="memitem:af3974da6d988ba2d21c25135ada12108"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Turns off the display of text on the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> and the back light. <a href="#af3974da6d988ba2d21c25135ada12108"></a><br/></td></tr> <tr class="memdesc:af3974da6d988ba2d21c25135ada12108"><td class="mdescLeft">&#160;</td><td class="mdescRight">Turns off the display of text on the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> and the back light. <a href="#af3974da6d988ba2d21c25135ada12108"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8">screenSaverMode</a> () const </td></tr> <tr class="memitem:a1917fa285f81f476b4c7cc20d15456b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8">screenSaverMode</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current screen saver mode; default is DisplayOff. <a href="#a1917fa285f81f476b4c7cc20d15456b8"></a><br/></td></tr> <tr class="memdesc:a1917fa285f81f476b4c7cc20d15456b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current screen saver mode; default is DisplayOff. <a href="#a1917fa285f81f476b4c7cc20d15456b8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801">setScreenSaverMode</a> (<a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</a> mode)</td></tr> <tr class="memitem:a56d1f68532c779c65fbbd071fb444801"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801">setScreenSaverMode</a> (<a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</a> mode)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current screen saver <em>mode</em>. <a href="#a56d1f68532c779c65fbbd071fb444801"></a><br/></td></tr> <tr class="memdesc:a56d1f68532c779c65fbbd071fb444801"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current screen saver <em>mode</em>. <a href="#a56d1f68532c779c65fbbd071fb444801"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f">enableScreenSaver</a> (int timeoutSecs=10)</td></tr> <tr class="memitem:af9a2326d034fa159d384ec16223c924f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f">enableScreenSaver</a> (int timeoutSecs=10)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the screen saver and causes it to activate after <em>timeoutSecs</em> of inactivity on the buttons. <a href="#af9a2326d034fa159d384ec16223c924f"></a><br/></td></tr> <tr class="memdesc:af9a2326d034fa159d384ec16223c924f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the screen saver and causes it to activate after <em>timeoutSecs</em> of inactivity on the buttons. <a href="#af9a2326d034fa159d384ec16223c924f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e">disableScreenSaver</a> ()</td></tr> <tr class="memitem:a85c3a4694b105731404df36e35e5b26e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e">disableScreenSaver</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the screen saver. <a href="#a85c3a4694b105731404df36e35e5b26e"></a><br/></td></tr> <tr class="memdesc:a85c3a4694b105731404df36e35e5b26e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the screen saver. <a href="#a85c3a4694b105731404df36e35e5b26e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e">isScreenSaved</a> () const </td></tr> <tr class="memitem:af5d5ca618a3161aa352027b58fe09d0e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e">isScreenSaved</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the screen has been saved; false otherwise. <a href="#af5d5ca618a3161aa352027b58fe09d0e"></a><br/></td></tr> <tr class="memdesc:af5d5ca618a3161aa352027b58fe09d0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the screen has been saved; false otherwise. <a href="#af5d5ca618a3161aa352027b58fe09d0e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292">getButton</a> ()</td></tr> <tr class="memitem:ac1e80e2603bd1cf0276c36092c416292"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292">getButton</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the next button press, release, or idle event. <a href="#ac1e80e2603bd1cf0276c36092c416292"></a><br/></td></tr> <tr class="memdesc:ac1e80e2603bd1cf0276c36092c416292"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the next button press, release, or idle event. <a href="#ac1e80e2603bd1cf0276c36092c416292"></a><br/></td></tr>
</table> </table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Enhanced library for Freetronics 16x2 <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shields. </p> <div class="textblock"><p>Enhanced library for Freetronics 16x2 <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shields. </p>
<p>This class extends the standard Arduino LiquidCrystal library with extra functionality for the Freetronics 16x2 <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shield:</p> <p>This class extends the standard Arduino LiquidCrystal library with extra functionality for the Freetronics 16x2 <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shield:</p>
<p><a href="http://www.freetronics.com/pages/16x2-lcd-shield-quickstart-guide">http://www.freetronics.com/pages/16x2-lcd-shield-quickstart-guide</a></p> <p><a href="http://www.freetronics.com/pages/16x2-lcd-shield-quickstart-guide">http://www.freetronics.com/pages/16x2-lcd-shield-quickstart-guide</a></p>
@@ -129,20 +151,20 @@ Public Member Functions</h2></td></tr>
<li>LCD_BUTTON_SELECT_RELEASED - Select button was released.</li> <li>LCD_BUTTON_SELECT_RELEASED - Select button was released.</li>
</ul> </ul>
<p>For convenience, all RELEASED button codes are the negation of their pressed counterparts. That is, LCD_BUTTON_LEFT_RELEASED == -LCD_BUTTON_LEFT. LCD_BUTTON_NONE is defined to be zero. Thus, you can check if a generic button has been pressed with <code>button &gt; 0</code> and if a generic button has been released with <code>button &lt; 0</code>.</p> <p>For convenience, all RELEASED button codes are the negation of their pressed counterparts. That is, LCD_BUTTON_LEFT_RELEASED == -LCD_BUTTON_LEFT. LCD_BUTTON_NONE is defined to be zero. Thus, you can check if a generic button has been pressed with <code>button &gt; 0</code> and if a generic button has been released with <code>button &lt; 0</code>.</p>
<h2><a class="anchor" id="lcd_dfrobot"></a> <h1><a class="anchor" id="lcd_dfrobot"></a>
Support for DFRobot LCD Shield</h2> Support for DFRobot LCD Shield</h1>
<p>The <a href="http://www.dfrobot.com/index.php?route=product/product&amp;product_id=51">DFRobot LCD Shield</a> is almost identical to the Freetronics shield, except it uses pin 10 for the back light instead of pin 3. This can be specified in the application's <code>setup()</code> function:</p> <p>The <a href="http://www.dfrobot.com/index.php?route=product/product&amp;product_id=51">DFRobot LCD Shield</a> is almost identical to the Freetronics shield, except it uses pin 10 for the back light instead of pin 3. This can be specified in the application's <code>setup()</code> function:</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> lcd; <div class="fragment"><div class="line"><a class="code" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> lcd;</div>
<div class="line"></div>
<span class="keywordtype">void</span> setup() { <div class="line"><span class="keywordtype">void</span> setup() {</div>
lcd.<a class="code" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8" title="Sets the back light pin for the LCD shield.">setBacklightPin</a>(10); <div class="line"> lcd.<a class="code" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8" title="Sets the back light pin for the LCD shield.">setBacklightPin</a>(10);</div>
} <div class="line">}</div>
</pre></div><p>The back light pin is configured for output the first time the application calls <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">getButton()</a>.</p> </div><!-- fragment --><p>The back light pin is configured for output the first time the application calls <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">getButton()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>, <a class="el" href="lcd_hello_world.html">Hello World Example</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classForm.html" title="Manager for a form containing data input/output fields.">Form</a>, <a class="el" href="lcd_hello_world.html">Hello World Example</a> </dd></dl>
<p>Definition at line <a class="el" href="LCD_8h_source.html#l00048">48</a> of file <a class="el" href="LCD_8h_source.html">LCD.h</a>.</p> <p>Definition at line <a class="el" href="LCD_8h_source.html#l00048">48</a> of file <a class="el" href="LCD_8h_source.html">LCD.h</a>.</p>
</div><hr/><h2>Member Enumeration Documentation</h2> </div><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="a264bf94308c95d8598426e13dc8cdb28"></a><!-- doxytag: member="LCD::ScreenSaverMode" ref="a264bf94308c95d8598426e13dc8cdb28" args="" --> <a class="anchor" id="a264bf94308c95d8598426e13dc8cdb28"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -150,18 +172,17 @@ Support for DFRobot LCD Shield</h2>
<td class="memname">enum <a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">LCD::ScreenSaverMode</a></td> <td class="memname">enum <a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">LCD::ScreenSaverMode</a></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Screen saver mode that controls the display and back light. </p> <p>Screen saver mode that controls the display and back light. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f"></a><!-- doxytag: member="DisplayOff" ref="a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f" args="" -->DisplayOff</em>&nbsp;</td><td> <tr><td valign="top"><em><a class="anchor" id="a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f"></a>DisplayOff</em>&nbsp;</td><td>
<p>Turn off both the display and the backlight when the screen saver is activated. </p> <p>Turn off both the display and the backlight when the screen saver is activated. </p>
</td></tr> </td></tr>
<tr><td valign="top"><em><a class="anchor" id="a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c"></a><!-- doxytag: member="BacklightOff" ref="a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c" args="" -->BacklightOff</em>&nbsp;</td><td> <tr><td valign="top"><em><a class="anchor" id="a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c"></a>BacklightOff</em>&nbsp;</td><td>
<p>Turn off the back light but leave the display on when the screen saver is activated. </p> <p>Turn off the back light but leave the display on when the screen saver is activated. </p>
</td></tr> </td></tr>
<tr><td valign="top"><em><a class="anchor" id="a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35"></a><!-- doxytag: member="BacklightOnSelect" ref="a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35" args="" -->BacklightOnSelect</em>&nbsp;</td><td> <tr><td valign="top"><em><a class="anchor" id="a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35"></a>BacklightOnSelect</em>&nbsp;</td><td>
<p>Same as BacklightOff but the screen saver is only deactivated when Select is pressed; other buttons have no effect. </p> <p>Same as BacklightOff but the screen saver is only deactivated when Select is pressed; other buttons have no effect. </p>
</td></tr> </td></tr>
</table> </table>
@@ -172,76 +193,97 @@ Support for DFRobot LCD Shield</h2>
</div> </div>
</div> </div>
<hr/><h2>Constructor &amp; Destructor Documentation</h2> <h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a00bb2db1390721abc7b24ac4b8c276c8"></a><!-- doxytag: member="LCD::LCD" ref="a00bb2db1390721abc7b24ac4b8c276c8" args="()" --> <a class="anchor" id="a00bb2db1390721abc7b24ac4b8c276c8"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">LCD::LCD </td> <td class="memname">LCD::LCD </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td><code> [inline]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize the Freetronics <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> display with the default pin assignment. </p> <p>Initialize the Freetronics <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> display with the default pin assignment. </p>
<p>The following example shows how to initialize the Freetronics <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shield:</p> <p>The following example shows how to initialize the Freetronics <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shield:</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> lcd; <div class="fragment"><div class="line"><a class="code" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> lcd;</div>
</pre></div> </div><!-- fragment -->
<p>Definition at line <a class="el" href="LCD_8h_source.html#l00050">50</a> of file <a class="el" href="LCD_8h_source.html">LCD.h</a>.</p> <p>Definition at line <a class="el" href="LCD_8h_source.html#l00050">50</a> of file <a class="el" href="LCD_8h_source.html">LCD.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a067bc741cf27f143aba5d9f147908401"></a><!-- doxytag: member="LCD::LCD" ref="a067bc741cf27f143aba5d9f147908401" args="(uint8_t pin9)" --> <a class="anchor" id="a067bc741cf27f143aba5d9f147908401"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">LCD::LCD </td> <td class="memname">LCD::LCD </td>
<td>(</td> <td>(</td>
<td class="paramtype">uint8_t&#160;</td> <td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>pin9</em></td><td>)</td> <td class="paramname"><em>pin9</em></td><td>)</td>
<td><code> [inline]</code></td> <td></td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize the Freetronics <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> display for USBDroid. </p> <p>Initialize the Freetronics <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> display for USBDroid. </p>
<p>On the USBDroid, the D9 pin is used for USB Host functionality. Either the USB Host's use of D9 must be reassigned to another pin, or the Freetronics <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shield must be modified. The following Web page describes the modifications that are necessary: <a href="http://www.freetronics.com/pages/combining-the-lcd-keypad-shield-and-the-usbdroid">http://www.freetronics.com/pages/combining-the-lcd-keypad-shield-and-the-usbdroid</a></p> <p>On the USBDroid, the D9 pin is used for USB Host functionality. Either the USB Host's use of D9 must be reassigned to another pin, or the Freetronics <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shield must be modified. The following Web page describes the modifications that are necessary: <a href="http://www.freetronics.com/pages/combining-the-lcd-keypad-shield-and-the-usbdroid">http://www.freetronics.com/pages/combining-the-lcd-keypad-shield-and-the-usbdroid</a></p>
<p>If you choose to modify the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shield, then you must use this version of the constructor to initialize the shield, passing the alternative pin as the <em>pin9</em> parameter. Using the recommended pin from the above Web page of A1, you would initialize the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> as follows:</p> <p>If you choose to modify the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shield, then you must use this version of the constructor to initialize the shield, passing the alternative pin as the <em>pin9</em> parameter. Using the recommended pin from the above Web page of A1, you would initialize the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> as follows:</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> lcd(A1); <div class="fragment"><div class="line"><a class="code" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> lcd(A1);</div>
</pre></div> </div><!-- fragment -->
<p>Definition at line <a class="el" href="LCD_8h_source.html#l00051">51</a> of file <a class="el" href="LCD_8h_source.html">LCD.h</a>.</p> <p>Definition at line <a class="el" href="LCD_8h_source.html#l00051">51</a> of file <a class="el" href="LCD_8h_source.html">LCD.h</a>.</p>
</div> </div>
</div> </div>
<hr/><h2>Member Function Documentation</h2> <h2>Member Function Documentation</h2>
<a class="anchor" id="a171f59ba80e7775ebd3a399f56482a9c"></a><!-- doxytag: member="LCD::backlightPin" ref="a171f59ba80e7775ebd3a399f56482a9c" args="() const " --> <a class="anchor" id="a171f59ba80e7775ebd3a399f56482a9c"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">uint8_t LCD::backlightPin </td> <td class="memname">uint8_t LCD::backlightPin </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the pin that is being used to control the back light. The default is 3. </p> <p>Returns the pin that is being used to control the back light. The default is 3. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8" title="Sets the back light pin for the LCD shield.">setBacklightPin()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8" title="Sets the back light pin for the LCD shield.">setBacklightPin()</a> </dd></dl>
<p>Definition at line <a class="el" href="LCD_8h_source.html#l00053">53</a> of file <a class="el" href="LCD_8h_source.html">LCD.h</a>.</p> <p>Definition at line <a class="el" href="LCD_8h_source.html#l00053">53</a> of file <a class="el" href="LCD_8h_source.html">LCD.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a85c3a4694b105731404df36e35e5b26e"></a><!-- doxytag: member="LCD::disableScreenSaver" ref="a85c3a4694b105731404df36e35e5b26e" args="()" --> <a class="anchor" id="a85c3a4694b105731404df36e35e5b26e"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -252,17 +294,16 @@ Support for DFRobot LCD Shield</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Disables the screen saver. </p> <p>Disables the screen saver. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver()</a>, <a class="el" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display()</a>, <a class="el" href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e" title="Returns true if the screen has been saved; false otherwise.">isScreenSaved()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver()</a>, <a class="el" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display()</a>, <a class="el" href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e" title="Returns true if the screen has been saved; false otherwise.">isScreenSaved()</a> </dd></dl>
<p>Definition at line <a class="el" href="LCD_8cpp_source.html#l00308">308</a> of file <a class="el" href="LCD_8cpp_source.html">LCD.cpp</a>.</p> <p>Definition at line <a class="el" href="LCD_8cpp_source.html#l00308">308</a> of file <a class="el" href="LCD_8cpp_source.html">LCD.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a5b07cf05e8e5e7c53654f5ca0cf58b89"></a><!-- doxytag: member="LCD::display" ref="a5b07cf05e8e5e7c53654f5ca0cf58b89" args="()" --> <a class="anchor" id="a5b07cf05e8e5e7c53654f5ca0cf58b89"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -273,18 +314,17 @@ Support for DFRobot LCD Shield</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Turns on the display of text on the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> and the back light. </p> <p>Turns on the display of text on the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> and the back light. </p>
<p>If the screen saver is active, then calling this function will deactivate the screen saver and reset the timeout. Thus, this function can be called for force the screen to restore.</p> <p>If the screen saver is active, then calling this function will deactivate the screen saver and reset the timeout. Thus, this function can be called for force the screen to restore.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classLCD.html#af3974da6d988ba2d21c25135ada12108" title="Turns off the display of text on the LCD and the back light.">noDisplay()</a>, <a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver()</a>, <a class="el" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801" title="Sets the current screen saver mode.">setScreenSaverMode()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classLCD.html#af3974da6d988ba2d21c25135ada12108" title="Turns off the display of text on the LCD and the back light.">noDisplay()</a>, <a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver()</a>, <a class="el" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801" title="Sets the current screen saver mode.">setScreenSaverMode()</a> </dd></dl>
<p>Definition at line <a class="el" href="LCD_8cpp_source.html#l00206">206</a> of file <a class="el" href="LCD_8cpp_source.html">LCD.cpp</a>.</p> <p>Definition at line <a class="el" href="LCD_8cpp_source.html#l00206">206</a> of file <a class="el" href="LCD_8cpp_source.html">LCD.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="af9a2326d034fa159d384ec16223c924f"></a><!-- doxytag: member="LCD::enableScreenSaver" ref="af9a2326d034fa159d384ec16223c924f" args="(int timeoutSecs=10)" --> <a class="anchor" id="af9a2326d034fa159d384ec16223c924f"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -296,20 +336,19 @@ Support for DFRobot LCD Shield</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Enables the screen saver and causes it to activate after <em>timeoutSecs</em> of inactivity on the buttons. </p> <p>Enables the screen saver and causes it to activate after <em>timeoutSecs</em> of inactivity on the buttons. </p>
<p>If <em>timeoutSecs</em> is less than or equal to zero, then the call is equivalent to calling <a class="el" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e" title="Disables the screen saver.">disableScreenSaver()</a>.</p> <p>If <em>timeoutSecs</em> is less than or equal to zero, then the call is equivalent to calling <a class="el" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e" title="Disables the screen saver.">disableScreenSaver()</a>.</p>
<p>For the screen saver to work, the application must regularly call <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">getButton()</a> to fetch the LCD's button state even if no buttons are pressed.</p> <p>For the screen saver to work, the application must regularly call <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">getButton()</a> to fetch the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a>'s button state even if no buttons are pressed.</p>
<p>If the <em>timeoutSecs</em> parameter is not supplied, the default is 10 seconds.</p> <p>If the <em>timeoutSecs</em> parameter is not supplied, the default is 10 seconds.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e" title="Disables the screen saver.">disableScreenSaver()</a>, <a class="el" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display()</a>, <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">getButton()</a>, <a class="el" href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e" title="Returns true if the screen has been saved; false otherwise.">isScreenSaved()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e" title="Disables the screen saver.">disableScreenSaver()</a>, <a class="el" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display()</a>, <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">getButton()</a>, <a class="el" href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e" title="Returns true if the screen has been saved; false otherwise.">isScreenSaved()</a> </dd></dl>
<p>Definition at line <a class="el" href="LCD_8cpp_source.html#l00294">294</a> of file <a class="el" href="LCD_8cpp_source.html">LCD.cpp</a>.</p> <p>Definition at line <a class="el" href="LCD_8cpp_source.html#l00294">294</a> of file <a class="el" href="LCD_8cpp_source.html">LCD.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="ac1e80e2603bd1cf0276c36092c416292"></a><!-- doxytag: member="LCD::getButton" ref="ac1e80e2603bd1cf0276c36092c416292" args="()" --> <a class="anchor" id="ac1e80e2603bd1cf0276c36092c416292"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -320,42 +359,48 @@ Support for DFRobot LCD Shield</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Gets the next button press, release, or idle event. </p> <p>Gets the next button press, release, or idle event. </p>
<p>If no buttons are pressed, this function will return LCD_BUTTON_NONE.</p> <p>If no buttons are pressed, this function will return LCD_BUTTON_NONE.</p>
<p>When a button is pressed, this function will return one of LCD_BUTTON_LEFT, LCD_BUTTON_RIGHT, LCD_BUTTON_UP, LCD_BUTTON_DOWN, or LCD_BUTTON_SELECT. While the button is pressed, this function will return LCD_BUTTON_NONE until the button is released. When the button is released, this function will return one of LCD_BUTTON_LEFT_RELEASED, LCD_BUTTON_RIGHT_RELEASED, LCD_BUTTON_UP_RELEAED, LCD_BUTTON_DOWN_RELEASED, or LCD_BUTTON_SELECT_RELEASED.</p> <p>When a button is pressed, this function will return one of LCD_BUTTON_LEFT, LCD_BUTTON_RIGHT, LCD_BUTTON_UP, LCD_BUTTON_DOWN, or LCD_BUTTON_SELECT. While the button is pressed, this function will return LCD_BUTTON_NONE until the button is released. When the button is released, this function will return one of LCD_BUTTON_LEFT_RELEASED, LCD_BUTTON_RIGHT_RELEASED, LCD_BUTTON_UP_RELEAED, LCD_BUTTON_DOWN_RELEASED, or LCD_BUTTON_SELECT_RELEASED.</p>
<p>If the screen saver is currently active, then it will be deactivated by this function whenever a button is pressed. If <a class="el" href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8" title="Returns the current screen saver mode; default is DisplayOff.">screenSaverMode()</a> is DisplayOff, the function will "eat" the button press and return LCD_BUTTON_NONE. The scrren saver can also be deactivated under program control by calling <a class="el" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display()</a>.</p> <p>If the screen saver is currently active, then it will be deactivated by this function whenever a button is pressed. If <a class="el" href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8" title="Returns the current screen saver mode; default is DisplayOff.">screenSaverMode()</a> is DisplayOff, the function will "eat" the button press and return LCD_BUTTON_NONE. The scrren saver can also be deactivated under program control by calling <a class="el" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display()</a>.</p>
<p>This function debounces the button state automatically so there is no need for the caller to worry about spurious button events.</p> <p>This function debounces the button state automatically so there is no need for the caller to worry about spurious button events.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver()</a>, <a class="el" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display()</a>, <a class="el" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee" title="Dispatches event to the currently active field using Field::dispatch().">Form::dispatch()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver()</a>, <a class="el" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display()</a>, <a class="el" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee" title="Dispatches event to the currently active field using Field::dispatch().">Form::dispatch()</a> </dd></dl>
<p>Definition at line <a class="el" href="LCD_8cpp_source.html#l00353">353</a> of file <a class="el" href="LCD_8cpp_source.html">LCD.cpp</a>.</p> <p>Definition at line <a class="el" href="LCD_8cpp_source.html#l00353">353</a> of file <a class="el" href="LCD_8cpp_source.html">LCD.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="af5d5ca618a3161aa352027b58fe09d0e"></a><!-- doxytag: member="LCD::isScreenSaved" ref="af5d5ca618a3161aa352027b58fe09d0e" args="() const " --> <a class="anchor" id="af5d5ca618a3161aa352027b58fe09d0e"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">bool LCD::isScreenSaved </td> <td class="memname">bool LCD::isScreenSaved </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if the screen has been saved; false otherwise. </p> <p>Returns true if the screen has been saved; false otherwise. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver()</a> </dd></dl>
<p>Definition at line <a class="el" href="LCD_8h_source.html#l00071">71</a> of file <a class="el" href="LCD_8h_source.html">LCD.h</a>.</p> <p>Definition at line <a class="el" href="LCD_8h_source.html#l00071">71</a> of file <a class="el" href="LCD_8h_source.html">LCD.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="af3974da6d988ba2d21c25135ada12108"></a><!-- doxytag: member="LCD::noDisplay" ref="af3974da6d988ba2d21c25135ada12108" args="()" --> <a class="anchor" id="af3974da6d988ba2d21c25135ada12108"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -366,39 +411,45 @@ Support for DFRobot LCD Shield</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Turns off the display of text on the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> and the back light. </p> <p>Turns off the display of text on the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> and the back light. </p>
<p>This function can be called to force the screen saver to activate.</p> <p>This function can be called to force the screen saver to activate.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display()</a>, <a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver()</a>, <a class="el" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801" title="Sets the current screen saver mode.">setScreenSaverMode()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" title="Turns on the display of text on the LCD and the back light.">display()</a>, <a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver()</a>, <a class="el" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801" title="Sets the current screen saver mode.">setScreenSaverMode()</a> </dd></dl>
<p>Definition at line <a class="el" href="LCD_8cpp_source.html#l00223">223</a> of file <a class="el" href="LCD_8cpp_source.html">LCD.cpp</a>.</p> <p>Definition at line <a class="el" href="LCD_8cpp_source.html#l00223">223</a> of file <a class="el" href="LCD_8cpp_source.html">LCD.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a1917fa285f81f476b4c7cc20d15456b8"></a><!-- doxytag: member="LCD::screenSaverMode" ref="a1917fa285f81f476b4c7cc20d15456b8" args="() const " --> <a class="anchor" id="a1917fa285f81f476b4c7cc20d15456b8"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname"><a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</a> LCD::screenSaverMode </td> <td class="memname"><a class="el" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</a> LCD::screenSaverMode </td>
<td>(</td> <td>(</td>
<td class="paramname"></td><td>)</td> <td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td> <td> const</td>
</tr> </tr>
</table> </table>
</div> </td>
<div class="memdoc"> <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the current screen saver mode; default is DisplayOff. </p> <p>Returns the current screen saver mode; default is DisplayOff. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801" title="Sets the current screen saver mode.">setScreenSaverMode()</a>, <a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801" title="Sets the current screen saver mode.">setScreenSaverMode()</a>, <a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver()</a> </dd></dl>
<p>Definition at line <a class="el" href="LCD_8h_source.html#l00066">66</a> of file <a class="el" href="LCD_8h_source.html">LCD.h</a>.</p> <p>Definition at line <a class="el" href="LCD_8h_source.html#l00066">66</a> of file <a class="el" href="LCD_8h_source.html">LCD.h</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a0b9b3b954290e7a3d94cdc829582b0a8"></a><!-- doxytag: member="LCD::setBacklightPin" ref="a0b9b3b954290e7a3d94cdc829582b0a8" args="(uint8_t pin)" --> <a class="anchor" id="a0b9b3b954290e7a3d94cdc829582b0a8"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -410,24 +461,23 @@ Support for DFRobot LCD Shield</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Sets the back light <em>pin</em> for the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shield. </p> <p>Sets the back light <em>pin</em> for the <a class="el" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> shield. </p>
<p>The <a href="http://www.dfrobot.com/index.php?route=product/product&amp;product_id=51">DFRobot LCD Shield</a> uses pin 10 for the back light instead of pin 3:</p> <p>The <a href="http://www.dfrobot.com/index.php?route=product/product&amp;product_id=51">DFRobot LCD Shield</a> uses pin 10 for the back light instead of pin 3:</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> lcd; <div class="fragment"><div class="line"><a class="code" href="classLCD.html" title="Enhanced library for Freetronics 16x2 LCD shields.">LCD</a> lcd;</div>
<div class="line"></div>
<span class="keywordtype">void</span> setup() { <div class="line"><span class="keywordtype">void</span> setup() {</div>
lcd.<a class="code" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8" title="Sets the back light pin for the LCD shield.">setBacklightPin</a>(10); <div class="line"> lcd.<a class="code" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8" title="Sets the back light pin for the LCD shield.">setBacklightPin</a>(10);</div>
} <div class="line">}</div>
</pre></div><p>The back light pin is configured for output the next time the application calls <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">getButton()</a>.</p> </div><!-- fragment --><p>The back light pin is configured for output the next time the application calls <a class="el" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292" title="Gets the next button press, release, or idle event.">getButton()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classLCD.html#a171f59ba80e7775ebd3a399f56482a9c" title="Returns the pin that is being used to control the back light. The default is 3.">backlightPin()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classLCD.html#a171f59ba80e7775ebd3a399f56482a9c" title="Returns the pin that is being used to control the back light. The default is 3.">backlightPin()</a> </dd></dl>
<p>Definition at line <a class="el" href="LCD_8cpp_source.html#l00182">182</a> of file <a class="el" href="LCD_8cpp_source.html">LCD.cpp</a>.</p> <p>Definition at line <a class="el" href="LCD_8cpp_source.html#l00182">182</a> of file <a class="el" href="LCD_8cpp_source.html">LCD.cpp</a>.</p>
</div> </div>
</div> </div>
<a class="anchor" id="a56d1f68532c779c65fbbd071fb444801"></a><!-- doxytag: member="LCD::setScreenSaverMode" ref="a56d1f68532c779c65fbbd071fb444801" args="(ScreenSaverMode mode)" --> <a class="anchor" id="a56d1f68532c779c65fbbd071fb444801"></a>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
@@ -439,11 +489,10 @@ Support for DFRobot LCD Shield</h2>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div> </div><div class="memdoc">
<div class="memdoc">
<p>Sets the current screen saver <em>mode</em>. </p> <p>Sets the current screen saver <em>mode</em>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8" title="Returns the current screen saver mode; default is DisplayOff.">screenSaverMode()</a>, <a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver()</a> </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8" title="Returns the current screen saver mode; default is DisplayOff.">screenSaverMode()</a>, <a class="el" href="classLCD.html#af9a2326d034fa159d384ec16223c924f" title="Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...">enableScreenSaver()</a> </dd></dl>
<p>Definition at line <a class="el" href="LCD_8cpp_source.html#l00268">268</a> of file <a class="el" href="LCD_8cpp_source.html">LCD.cpp</a>.</p> <p>Definition at line <a class="el" href="LCD_8cpp_source.html#l00268">268</a> of file <a class="el" href="LCD_8cpp_source.html">LCD.cpp</a>.</p>
@@ -453,23 +502,12 @@ Support for DFRobot LCD Shield</h2>
<li><a class="el" href="LCD_8h_source.html">LCD.h</a></li> <li><a class="el" href="LCD_8h_source.html">LCD.h</a></li>
<li><a class="el" href="LCD_8cpp_source.html">LCD.cpp</a></li> <li><a class="el" href="LCD_8cpp_source.html">LCD.cpp</a></li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated on Sun Sep 29 2013 09:30:46 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.1.2
<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>Classes</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Jun 18 2012 11:02:53 for ArduinoLibs by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

Some files were not shown because too many files have changed in this diff Show More