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

Update docs to remove non-crypto libraries

This commit is contained in:
Rhys Weatherley 2018-04-07 10:24:41 +10:00
parent f46b005926
commit cb89ac731d
857 changed files with 2776 additions and 60092 deletions

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: AES128.cpp Source File</title>
<title>Arduino Cryptography Library: AES128.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -114,266 +113,270 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;Crypto.h&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classAES128.html#af826ce33301767919bb60f27ad3ff693"> 40</a></span>&#160;<a class="code" href="classAES128.html#af826ce33301767919bb60f27ad3ff693">AES128::AES128</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; rounds = 10;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; schedule = sched;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;AES128::~AES128()</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; clean(sched);</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="l00055"></a><span class="lineno"><a class="line" href="classAES128.html#aa871832a156f0ea61b964e489670ae9d"> 55</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAES128.html#aa871832a156f0ea61b964e489670ae9d">AES128::keySize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> 16;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classAES128.html#a42d7548eb5084a2c3e2d5aa5f6f98ba4"> 60</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classAES128.html#a42d7548eb5084a2c3e2d5aa5f6f98ba4">AES128::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</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="keywordflow">if</span> (len != 16)</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="comment">// Copy the key itself into the first 16 bytes of the schedule.</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; uint8_t *schedule = sched;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; memcpy(schedule, key, 16);</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="comment">// Expand the key schedule until we have 176 bytes of expanded key.</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; uint8_t iteration = 1;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; uint8_t n = 16;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; uint8_t w = 4;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">while</span> (n &lt; 176) {</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (w == 4) {</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">// Every 16 bytes (4 words) we need to apply the key schedule core.</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; keyScheduleCore(schedule + 16, schedule + 12, iteration);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; schedule[16] ^= schedule[0];</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; schedule[17] ^= schedule[1];</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; schedule[18] ^= schedule[2];</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; schedule[19] ^= schedule[3];</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; ++iteration;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; w = 0;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">// Otherwise just XOR the word with the one 16 bytes previous.</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; schedule[16] = schedule[12] ^ schedule[0];</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; schedule[17] = schedule[13] ^ schedule[1];</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; schedule[18] = schedule[14] ^ schedule[2];</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; schedule[19] = schedule[15] ^ schedule[3];</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; <span class="comment">// Advance to the next word in the schedule.</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; schedule += 4;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; n += 4;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; ++w;</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; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment">// Helper macros.</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="preprocessor">#define KCORE(n) \</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor"> AESCommon::keyScheduleCore(temp, schedule + 12, (n)); \</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="preprocessor"> schedule[0] ^= temp[0]; \</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor"> schedule[1] ^= temp[1]; \</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor"> schedule[2] ^= temp[2]; \</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="preprocessor"> schedule[3] ^= temp[3]; \</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define KXOR(a, b) \</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="preprocessor"> schedule[(a) * 4] ^= schedule[(b) * 4]; \</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="preprocessor"> schedule[(a) * 4 + 1] ^= schedule[(b) * 4 + 1]; \</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor"> schedule[(a) * 4 + 2] ^= schedule[(b) * 4 + 2]; \</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="preprocessor"> schedule[(a) * 4 + 3] ^= schedule[(b) * 4 + 3]; \</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classAESTiny128.html#a24682489d5af52f16c7ba2bc4b1116e8"> 150</a></span>&#160;<a class="code" href="classAESTiny128.html#a24682489d5af52f16c7ba2bc4b1116e8">AESTiny128::AESTiny128</a>()</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="l00154"></a><span class="lineno"> 154</span>&#160;AESTiny128::~AESTiny128()</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; clean(schedule);</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="l00163"></a><span class="lineno"><a class="line" href="classAESTiny128.html#ad00941c5ed48c413b30636420fd42a2e"> 163</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAESTiny128.html#ad00941c5ed48c413b30636420fd42a2e">AESTiny128::blockSize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> 16;</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;</div>
<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classAESTiny128.html#a6ff732873f0df88d93c3f7df1fb7a168"> 172</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAESTiny128.html#a6ff732873f0df88d93c3f7df1fb7a168">AESTiny128::keySize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> 16;</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="line" href="classAESTiny128.html#a475b147be367e6053ff64e30bf79694c"> 177</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classAESTiny128.html#a475b147be367e6053ff64e30bf79694c">AESTiny128::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</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> (len == 16) {</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">// Make a copy of the key - it will be expanded in encryptBlock().</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; memcpy(schedule, key, 16);</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;}</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div>
<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classAESTiny128.html#a9e343baf2c3c815f8482222c52ebb3a3"> 187</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESTiny128.html#a9e343baf2c3c815f8482222c52ebb3a3">AESTiny128::encryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; uint8_t schedule[16];</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; uint8_t posn;</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; uint8_t state1[16];</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; uint8_t state2[16];</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; uint8_t temp[4];</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// Start with the key in the schedule buffer.</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; memcpy(schedule, this-&gt;schedule, 16);</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="comment">// Copy the input into the state and XOR with the key schedule.</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; state1[posn] = input[posn] ^ schedule[posn];</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="comment">// Perform the first 9 rounds of the cipher.</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">for</span> (round = 1; round &lt;= 9; ++round) {</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="comment">// Expand the next 16 bytes of the key schedule.</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; KCORE(round);</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; KXOR(3, 2);</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; <span class="comment">// Encrypt using the key schedule.</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; AESCommon::subBytesAndShiftRows(state2, state1);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; AESCommon::mixColumn(state1, state2);</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; AESCommon::mixColumn(state1 + 4, state2 + 4);</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; AESCommon::mixColumn(state1 + 8, state2 + 8);</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; AESCommon::mixColumn(state1 + 12, state2 + 12);</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; state1[posn] ^= schedule[posn];</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;</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="comment">// Expand the final 16 bytes of the key schedule.</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; KCORE(10);</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; KXOR(3, 2);</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="comment">// Perform the final round.</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; AESCommon::subBytesAndShiftRows(state2, state1);</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; output[posn] = state2[posn] ^ schedule[posn];</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;}</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div>
<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classAESTiny128.html#a631c417a0f12c7e43f633c555b950182"> 233</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESTiny128.html#a631c417a0f12c7e43f633c555b950182">AESTiny128::decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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="comment">// Decryption is not supported by AESTiny128.</span></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"><a class="line" href="classAESTiny128.html#a17e56d025f9e55041150953d8561c793"> 238</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESTiny128.html#a17e56d025f9e55041150953d8561c793">AESTiny128::clear</a>()</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; clean(schedule);</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;</div>
<div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classAESSmall128.html#abfa3d897d55524dadb1afbdc45eaed5e"> 269</a></span>&#160;<a class="code" href="classAESSmall128.html#abfa3d897d55524dadb1afbdc45eaed5e">AESSmall128::AESSmall128</a>()</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;{</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;}</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;AESSmall128::~AESSmall128()</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;{</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; clean(reverse);</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="line" href="classAESSmall128.html#a6ca13e59f88498c8c3da338e76f47de5"> 278</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classAESSmall128.html#a6ca13e59f88498c8c3da338e76f47de5">AESSmall128::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</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; uint8_t *schedule;</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; uint8_t temp[4];</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; <span class="comment">// Set the encryption key first.</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classAESTiny128.html#a475b147be367e6053ff64e30bf79694c">AESTiny128::setKey</a>(key, len))</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// Expand the key schedule up to the last round which gives</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="comment">// us the round keys to use for the final two rounds. We can</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="comment">// then work backwards from there in decryptBlock().</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; schedule = reverse;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; memcpy(schedule, key, 16);</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">for</span> (round = 1; round &lt;= 10; ++round) {</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; KCORE(round);</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; KXOR(3, 2);</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;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="comment">// Key is ready to go.</span></div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;}</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div>
<div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classAESSmall128.html#aabdb20c638b2107b5b5e3e41dc6dae26"> 304</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESSmall128.html#aabdb20c638b2107b5b5e3e41dc6dae26">AESSmall128::decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;{</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; uint8_t schedule[16];</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; uint8_t posn;</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; uint8_t state1[16];</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; uint8_t state2[16];</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; uint8_t temp[4];</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="comment">// Start with the end of the decryption schedule.</span></div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; memcpy(schedule, reverse, 16);</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="comment">// Copy the input into the state and reverse the final round.</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; state1[posn] = input[posn] ^ schedule[posn];</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; AESCommon::inverseShiftRowsAndSubBytes(state2, state1);</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; KXOR(3, 2);</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; KCORE(10);</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="comment">// Perform the next 9 rounds of the decryption process.</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">for</span> (round = 9; round &gt;= 1; --round) {</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">// Decrypt using the key schedule.</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; state2[posn] ^= schedule[posn];</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; AESCommon::inverseMixColumn(state1, state2);</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; AESCommon::inverseMixColumn(state1 + 4, state2 + 4);</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; AESCommon::inverseMixColumn(state1 + 8, state2 + 8);</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; AESCommon::inverseMixColumn(state1 + 12, state2 + 12);</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; AESCommon::inverseShiftRowsAndSubBytes(state2, state1);</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; <span class="comment">// Expand the next 16 bytes of the key schedule in reverse.</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; KXOR(3, 2);</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; KCORE(round);</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;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="comment">// Reverse the initial round and create the output words.</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; output[posn] = state2[posn] ^ schedule[posn];</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="line" href="classAESSmall128.html#a215b28599d388c2149aba2206d40863d"> 348</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESSmall128.html#a215b28599d388c2149aba2206d40863d">AESSmall128::clear</a>()</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; clean(reverse);</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classAESTiny128.html#a17e56d025f9e55041150953d8561c793">AESTiny128::clear</a>();</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;}</div>
<div class="ttc" id="classAESTiny128_html_a6ff732873f0df88d93c3f7df1fb7a168"><div class="ttname"><a href="classAESTiny128.html#a6ff732873f0df88d93c3f7df1fb7a168">AESTiny128::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 128-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00172">AES128.cpp:172</a></div></div>
<div class="ttc" id="classAESTiny128_html_a17e56d025f9e55041150953d8561c793"><div class="ttname"><a href="classAESTiny128.html#a17e56d025f9e55041150953d8561c793">AESTiny128::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00238">AES128.cpp:238</a></div></div>
<div class="ttc" id="classAESSmall128_html_aabdb20c638b2107b5b5e3e41dc6dae26"><div class="ttname"><a href="classAESSmall128.html#aabdb20c638b2107b5b5e3e41dc6dae26">AESSmall128::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00304">AES128.cpp:304</a></div></div>
<div class="ttc" id="classAESTiny128_html_a9e343baf2c3c815f8482222c52ebb3a3"><div class="ttname"><a href="classAESTiny128.html#a9e343baf2c3c815f8482222c52ebb3a3">AESTiny128::encryptBlock</a></div><div class="ttdeci">void encryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Encrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00187">AES128.cpp:187</a></div></div>
<div class="ttc" id="classAES128_html_aa871832a156f0ea61b964e489670ae9d"><div class="ttname"><a href="classAES128.html#aa871832a156f0ea61b964e489670ae9d">AES128::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 128-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00055">AES128.cpp:55</a></div></div>
<div class="ttc" id="classAESTiny128_html_a631c417a0f12c7e43f633c555b950182"><div class="ttname"><a href="classAESTiny128.html#a631c417a0f12c7e43f633c555b950182">AESTiny128::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00233">AES128.cpp:233</a></div></div>
<div class="ttc" id="classAESSmall128_html_a215b28599d388c2149aba2206d40863d"><div class="ttname"><a href="classAESSmall128.html#a215b28599d388c2149aba2206d40863d">AESSmall128::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00348">AES128.cpp:348</a></div></div>
<div class="ttc" id="classAES128_html_a42d7548eb5084a2c3e2d5aa5f6f98ba4"><div class="ttname"><a href="classAES128.html#a42d7548eb5084a2c3e2d5aa5f6f98ba4">AES128::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00060">AES128.cpp:60</a></div></div>
<div class="ttc" id="classAESTiny128_html_ad00941c5ed48c413b30636420fd42a2e"><div class="ttname"><a href="classAESTiny128.html#ad00941c5ed48c413b30636420fd42a2e">AESTiny128::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of an AES block in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00163">AES128.cpp:163</a></div></div>
<div class="ttc" id="classAESTiny128_html_a24682489d5af52f16c7ba2bc4b1116e8"><div class="ttname"><a href="classAESTiny128.html#a24682489d5af52f16c7ba2bc4b1116e8">AESTiny128::AESTiny128</a></div><div class="ttdeci">AESTiny128()</div><div class="ttdoc">Constructs an AES 128-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00150">AES128.cpp:150</a></div></div>
<div class="ttc" id="classAESTiny128_html_a475b147be367e6053ff64e30bf79694c"><div class="ttname"><a href="classAESTiny128.html#a475b147be367e6053ff64e30bf79694c">AESTiny128::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00177">AES128.cpp:177</a></div></div>
<div class="ttc" id="classAES128_html_af826ce33301767919bb60f27ad3ff693"><div class="ttname"><a href="classAES128.html#af826ce33301767919bb60f27ad3ff693">AES128::AES128</a></div><div class="ttdeci">AES128()</div><div class="ttdoc">Constructs an AES 128-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00040">AES128.cpp:40</a></div></div>
<div class="ttc" id="classAESSmall128_html_a6ca13e59f88498c8c3da338e76f47de5"><div class="ttname"><a href="classAESSmall128.html#a6ca13e59f88498c8c3da338e76f47de5">AESSmall128::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00278">AES128.cpp:278</a></div></div>
<div class="ttc" id="classAESSmall128_html_abfa3d897d55524dadb1afbdc45eaed5e"><div class="ttname"><a href="classAESSmall128.html#abfa3d897d55524dadb1afbdc45eaed5e">AESSmall128::AESSmall128</a></div><div class="ttdeci">AESSmall128()</div><div class="ttdoc">Constructs an AES 128-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00269">AES128.cpp:269</a></div></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#if defined(CRYPTO_AES_DEFAULT) || defined(CRYPTO_DOC)</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classAES128.html#af826ce33301767919bb60f27ad3ff693"> 42</a></span>&#160;<a class="code" href="classAES128.html#af826ce33301767919bb60f27ad3ff693">AES128::AES128</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"> 44</span>&#160; rounds = 10;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; schedule = sched;</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="l00048"></a><span class="lineno"> 48</span>&#160;AES128::~AES128()</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; clean(sched);</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;</div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classAES128.html#aa871832a156f0ea61b964e489670ae9d"> 57</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAES128.html#aa871832a156f0ea61b964e489670ae9d">AES128::keySize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> 16;</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;</div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classAES128.html#a42d7548eb5084a2c3e2d5aa5f6f98ba4"> 62</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classAES128.html#a42d7548eb5084a2c3e2d5aa5f6f98ba4">AES128::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</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="keywordflow">if</span> (len != 16)</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">// Copy the key itself into the first 16 bytes of the schedule.</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; uint8_t *schedule = sched;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; memcpy(schedule, key, 16);</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="comment">// Expand the key schedule until we have 176 bytes of expanded key.</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; uint8_t iteration = 1;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; uint8_t n = 16;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; uint8_t w = 4;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">while</span> (n &lt; 176) {</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (w == 4) {</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// Every 16 bytes (4 words) we need to apply the key schedule core.</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; keyScheduleCore(schedule + 16, schedule + 12, iteration);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; schedule[16] ^= schedule[0];</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; schedule[17] ^= schedule[1];</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; schedule[18] ^= schedule[2];</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; schedule[19] ^= schedule[3];</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; ++iteration;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; w = 0;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// Otherwise just XOR the word with the one 16 bytes previous.</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; schedule[16] = schedule[12] ^ schedule[0];</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; schedule[17] = schedule[13] ^ schedule[1];</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; schedule[18] = schedule[14] ^ schedule[2];</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; schedule[19] = schedule[15] ^ schedule[3];</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// Advance to the next word in the schedule.</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; schedule += 4;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; n += 4;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; ++w;</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="keywordflow">return</span> <span class="keyword">true</span>;</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="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment">// Helper macros.</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor">#define KCORE(n) \</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor"> AESCommon::keyScheduleCore(temp, schedule + 12, (n)); \</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor"> schedule[0] ^= temp[0]; \</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="preprocessor"> schedule[1] ^= temp[1]; \</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="preprocessor"> schedule[2] ^= temp[2]; \</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="preprocessor"> schedule[3] ^= temp[3]; \</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define KXOR(a, b) \</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor"> schedule[(a) * 4] ^= schedule[(b) * 4]; \</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="preprocessor"> schedule[(a) * 4 + 1] ^= schedule[(b) * 4 + 1]; \</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="preprocessor"> schedule[(a) * 4 + 2] ^= schedule[(b) * 4 + 2]; \</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="preprocessor"> schedule[(a) * 4 + 3] ^= schedule[(b) * 4 + 3]; \</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classAESTiny128.html#a24682489d5af52f16c7ba2bc4b1116e8"> 152</a></span>&#160;<a class="code" href="classAESTiny128.html#a24682489d5af52f16c7ba2bc4b1116e8">AESTiny128::AESTiny128</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;}</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;AESTiny128::~AESTiny128()</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; clean(schedule);</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="l00165"></a><span class="lineno"><a class="line" href="classAESTiny128.html#ad00941c5ed48c413b30636420fd42a2e"> 165</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAESTiny128.html#ad00941c5ed48c413b30636420fd42a2e">AESTiny128::blockSize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> 16;</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;</div>
<div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classAESTiny128.html#a6ff732873f0df88d93c3f7df1fb7a168"> 174</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAESTiny128.html#a6ff732873f0df88d93c3f7df1fb7a168">AESTiny128::keySize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> 16;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;}</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div>
<div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classAESTiny128.html#a475b147be367e6053ff64e30bf79694c"> 179</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classAESTiny128.html#a475b147be367e6053ff64e30bf79694c">AESTiny128::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;{</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (len == 16) {</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">// Make a copy of the key - it will be expanded in encryptBlock().</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; memcpy(schedule, key, 16);</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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"><a class="line" href="classAESTiny128.html#a9e343baf2c3c815f8482222c52ebb3a3"> 189</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESTiny128.html#a9e343baf2c3c815f8482222c52ebb3a3">AESTiny128::encryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; uint8_t schedule[16];</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; uint8_t posn;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; uint8_t state1[16];</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; uint8_t state2[16];</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; uint8_t temp[4];</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; <span class="comment">// Start with the key in the schedule buffer.</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; memcpy(schedule, this-&gt;schedule, 16);</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; <span class="comment">// Copy the input into the state and XOR with the key schedule.</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; state1[posn] = input[posn] ^ schedule[posn];</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="comment">// Perform the first 9 rounds of the cipher.</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">for</span> (round = 1; round &lt;= 9; ++round) {</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">// Expand the next 16 bytes of the key schedule.</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; KCORE(round);</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; KXOR(3, 2);</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// Encrypt using the key schedule.</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; AESCommon::subBytesAndShiftRows(state2, state1);</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; AESCommon::mixColumn(state1, state2);</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; AESCommon::mixColumn(state1 + 4, state2 + 4);</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; AESCommon::mixColumn(state1 + 8, state2 + 8);</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; AESCommon::mixColumn(state1 + 12, state2 + 12);</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; state1[posn] ^= schedule[posn];</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; <span class="comment">// Expand the final 16 bytes of the key schedule.</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; KCORE(10);</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; KXOR(3, 2);</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="comment">// Perform the final round.</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; AESCommon::subBytesAndShiftRows(state2, state1);</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; output[posn] = state2[posn] ^ schedule[posn];</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;}</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div>
<div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classAESTiny128.html#a631c417a0f12c7e43f633c555b950182"> 235</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESTiny128.html#a631c417a0f12c7e43f633c555b950182">AESTiny128::decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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="comment">// Decryption is not supported by AESTiny128.</span></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="l00240"></a><span class="lineno"><a class="line" href="classAESTiny128.html#a17e56d025f9e55041150953d8561c793"> 240</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESTiny128.html#a17e56d025f9e55041150953d8561c793">AESTiny128::clear</a>()</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; clean(schedule);</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="l00271"></a><span class="lineno"><a class="line" href="classAESSmall128.html#abfa3d897d55524dadb1afbdc45eaed5e"> 271</a></span>&#160;<a class="code" href="classAESSmall128.html#abfa3d897d55524dadb1afbdc45eaed5e">AESSmall128::AESSmall128</a>()</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="l00275"></a><span class="lineno"> 275</span>&#160;AESSmall128::~AESSmall128()</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; clean(reverse);</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"><a class="line" href="classAESSmall128.html#a6ca13e59f88498c8c3da338e76f47de5"> 280</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classAESSmall128.html#a6ca13e59f88498c8c3da338e76f47de5">AESSmall128::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</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; uint8_t *schedule;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; uint8_t temp[4];</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; <span class="comment">// Set the encryption key first.</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classAESTiny128.html#a475b147be367e6053ff64e30bf79694c">AESTiny128::setKey</a>(key, len))</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="comment">// Expand the key schedule up to the last round which gives</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="comment">// us the round keys to use for the final two rounds. We can</span></div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">// then work backwards from there in decryptBlock().</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; schedule = reverse;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; memcpy(schedule, key, 16);</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">for</span> (round = 1; round &lt;= 10; ++round) {</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; KCORE(round);</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; KXOR(3, 2);</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; <span class="comment">// Key is ready to go.</span></div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;}</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div>
<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classAESSmall128.html#aabdb20c638b2107b5b5e3e41dc6dae26"> 306</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESSmall128.html#aabdb20c638b2107b5b5e3e41dc6dae26">AESSmall128::decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; uint8_t schedule[16];</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; uint8_t posn;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; uint8_t state1[16];</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; uint8_t state2[16];</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; uint8_t temp[4];</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="comment">// Start with the end of the decryption schedule.</span></div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; memcpy(schedule, reverse, 16);</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="comment">// Copy the input into the state and reverse the final round.</span></div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; state1[posn] = input[posn] ^ schedule[posn];</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; AESCommon::inverseShiftRowsAndSubBytes(state2, state1);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; KXOR(3, 2);</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; KCORE(10);</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">// Perform the next 9 rounds of the decryption process.</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">for</span> (round = 9; round &gt;= 1; --round) {</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="comment">// Decrypt using the key schedule.</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; state2[posn] ^= schedule[posn];</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; AESCommon::inverseMixColumn(state1, state2);</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; AESCommon::inverseMixColumn(state1 + 4, state2 + 4);</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; AESCommon::inverseMixColumn(state1 + 8, state2 + 8);</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; AESCommon::inverseMixColumn(state1 + 12, state2 + 12);</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; AESCommon::inverseShiftRowsAndSubBytes(state2, state1);</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="comment">// Expand the next 16 bytes of the key schedule in reverse.</span></div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; KXOR(3, 2);</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; KCORE(round);</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="comment">// Reverse the initial round and create the output words.</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; output[posn] = state2[posn] ^ schedule[posn];</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;</div>
<div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classAESSmall128.html#a215b28599d388c2149aba2206d40863d"> 350</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESSmall128.html#a215b28599d388c2149aba2206d40863d">AESSmall128::clear</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; clean(reverse);</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="classAESTiny128.html#a17e56d025f9e55041150953d8561c793">AESTiny128::clear</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;</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="preprocessor">#endif // CRYPTO_AES_DEFAULT</span></div>
<div class="ttc" id="classAESTiny128_html_a6ff732873f0df88d93c3f7df1fb7a168"><div class="ttname"><a href="classAESTiny128.html#a6ff732873f0df88d93c3f7df1fb7a168">AESTiny128::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 128-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00174">AES128.cpp:174</a></div></div>
<div class="ttc" id="classAESTiny128_html_a17e56d025f9e55041150953d8561c793"><div class="ttname"><a href="classAESTiny128.html#a17e56d025f9e55041150953d8561c793">AESTiny128::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00240">AES128.cpp:240</a></div></div>
<div class="ttc" id="classAESSmall128_html_aabdb20c638b2107b5b5e3e41dc6dae26"><div class="ttname"><a href="classAESSmall128.html#aabdb20c638b2107b5b5e3e41dc6dae26">AESSmall128::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00306">AES128.cpp:306</a></div></div>
<div class="ttc" id="classAESTiny128_html_a9e343baf2c3c815f8482222c52ebb3a3"><div class="ttname"><a href="classAESTiny128.html#a9e343baf2c3c815f8482222c52ebb3a3">AESTiny128::encryptBlock</a></div><div class="ttdeci">void encryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Encrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00189">AES128.cpp:189</a></div></div>
<div class="ttc" id="classAES128_html_aa871832a156f0ea61b964e489670ae9d"><div class="ttname"><a href="classAES128.html#aa871832a156f0ea61b964e489670ae9d">AES128::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 128-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00057">AES128.cpp:57</a></div></div>
<div class="ttc" id="classAESTiny128_html_a631c417a0f12c7e43f633c555b950182"><div class="ttname"><a href="classAESTiny128.html#a631c417a0f12c7e43f633c555b950182">AESTiny128::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00235">AES128.cpp:235</a></div></div>
<div class="ttc" id="classAESSmall128_html_a215b28599d388c2149aba2206d40863d"><div class="ttname"><a href="classAESSmall128.html#a215b28599d388c2149aba2206d40863d">AESSmall128::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00350">AES128.cpp:350</a></div></div>
<div class="ttc" id="classAES128_html_a42d7548eb5084a2c3e2d5aa5f6f98ba4"><div class="ttname"><a href="classAES128.html#a42d7548eb5084a2c3e2d5aa5f6f98ba4">AES128::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00062">AES128.cpp:62</a></div></div>
<div class="ttc" id="classAESTiny128_html_ad00941c5ed48c413b30636420fd42a2e"><div class="ttname"><a href="classAESTiny128.html#ad00941c5ed48c413b30636420fd42a2e">AESTiny128::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of an AES block in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00165">AES128.cpp:165</a></div></div>
<div class="ttc" id="classAESTiny128_html_a24682489d5af52f16c7ba2bc4b1116e8"><div class="ttname"><a href="classAESTiny128.html#a24682489d5af52f16c7ba2bc4b1116e8">AESTiny128::AESTiny128</a></div><div class="ttdeci">AESTiny128()</div><div class="ttdoc">Constructs an AES 128-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00152">AES128.cpp:152</a></div></div>
<div class="ttc" id="classAESTiny128_html_a475b147be367e6053ff64e30bf79694c"><div class="ttname"><a href="classAESTiny128.html#a475b147be367e6053ff64e30bf79694c">AESTiny128::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00179">AES128.cpp:179</a></div></div>
<div class="ttc" id="classAES128_html_af826ce33301767919bb60f27ad3ff693"><div class="ttname"><a href="classAES128.html#af826ce33301767919bb60f27ad3ff693">AES128::AES128</a></div><div class="ttdeci">AES128()</div><div class="ttdoc">Constructs an AES 128-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00042">AES128.cpp:42</a></div></div>
<div class="ttc" id="classAESSmall128_html_a6ca13e59f88498c8c3da338e76f47de5"><div class="ttname"><a href="classAESSmall128.html#a6ca13e59f88498c8c3da338e76f47de5">AESSmall128::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00280">AES128.cpp:280</a></div></div>
<div class="ttc" id="classAESSmall128_html_abfa3d897d55524dadb1afbdc45eaed5e"><div class="ttname"><a href="classAESSmall128.html#abfa3d897d55524dadb1afbdc45eaed5e">AESSmall128::AESSmall128</a></div><div class="ttdeci">AESSmall128()</div><div class="ttdoc">Constructs an AES 128-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00271">AES128.cpp:271</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: AES192.cpp Source File</title>
<title>Arduino Cryptography Library: AES192.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -114,68 +113,72 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;Crypto.h&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classAES192.html#a6f8e457cfffdc12f7dd829e3ac4585ce"> 40</a></span>&#160;<a class="code" href="classAES192.html#a6f8e457cfffdc12f7dd829e3ac4585ce">AES192::AES192</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; rounds = 12;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; schedule = sched;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;AES192::~AES192()</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; clean(sched);</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="l00055"></a><span class="lineno"><a class="line" href="classAES192.html#ade28843e51e262b30eb55791c83fd791"> 55</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAES192.html#ade28843e51e262b30eb55791c83fd791">AES192::keySize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> 24;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classAES192.html#a4ab37cff19fb05ceef1533ebc5e37cde"> 60</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classAES192.html#a4ab37cff19fb05ceef1533ebc5e37cde">AES192::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</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="keywordflow">if</span> (len != 24)</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="comment">// Copy the key itself into the first 24 bytes of the schedule.</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; uint8_t *schedule = sched;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; memcpy(schedule, key, 24);</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="comment">// Expand the key schedule until we have 208 bytes of expanded key.</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; uint8_t iteration = 1;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; uint8_t n = 24;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; uint8_t w = 6;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">while</span> (n &lt; 208) {</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (w == 6) {</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">// Every 24 bytes (6 words) we need to apply the key schedule core.</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; keyScheduleCore(schedule + 24, schedule + 20, iteration);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; schedule[24] ^= schedule[0];</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; schedule[25] ^= schedule[1];</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; schedule[26] ^= schedule[2];</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; schedule[27] ^= schedule[3];</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; ++iteration;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; w = 0;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">// Otherwise just XOR the word with the one 24 bytes previous.</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; schedule[24] = schedule[20] ^ schedule[0];</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; schedule[25] = schedule[21] ^ schedule[1];</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; schedule[26] = schedule[22] ^ schedule[2];</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; schedule[27] = schedule[23] ^ schedule[3];</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; <span class="comment">// Advance to the next word in the schedule.</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; schedule += 4;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; n += 4;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; ++w;</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; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;}</div>
<div class="ttc" id="classAES192_html_a4ab37cff19fb05ceef1533ebc5e37cde"><div class="ttname"><a href="classAES192.html#a4ab37cff19fb05ceef1533ebc5e37cde">AES192::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES192_8cpp_source.html#l00060">AES192.cpp:60</a></div></div>
<div class="ttc" id="classAES192_html_ade28843e51e262b30eb55791c83fd791"><div class="ttname"><a href="classAES192.html#ade28843e51e262b30eb55791c83fd791">AES192::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 192-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES192_8cpp_source.html#l00055">AES192.cpp:55</a></div></div>
<div class="ttc" id="classAES192_html_a6f8e457cfffdc12f7dd829e3ac4585ce"><div class="ttname"><a href="classAES192.html#a6f8e457cfffdc12f7dd829e3ac4585ce">AES192::AES192</a></div><div class="ttdeci">AES192()</div><div class="ttdoc">Constructs an AES 192-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES192_8cpp_source.html#l00040">AES192.cpp:40</a></div></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#if defined(CRYPTO_AES_DEFAULT) || defined(CRYPTO_DOC)</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classAES192.html#a6f8e457cfffdc12f7dd829e3ac4585ce"> 42</a></span>&#160;<a class="code" href="classAES192.html#a6f8e457cfffdc12f7dd829e3ac4585ce">AES192::AES192</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"> 44</span>&#160; rounds = 12;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; schedule = sched;</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="l00048"></a><span class="lineno"> 48</span>&#160;AES192::~AES192()</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; clean(sched);</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;</div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classAES192.html#ade28843e51e262b30eb55791c83fd791"> 57</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAES192.html#ade28843e51e262b30eb55791c83fd791">AES192::keySize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> 24;</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;</div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classAES192.html#a4ab37cff19fb05ceef1533ebc5e37cde"> 62</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classAES192.html#a4ab37cff19fb05ceef1533ebc5e37cde">AES192::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</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="keywordflow">if</span> (len != 24)</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">// Copy the key itself into the first 24 bytes of the schedule.</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; uint8_t *schedule = sched;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; memcpy(schedule, key, 24);</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="comment">// Expand the key schedule until we have 208 bytes of expanded key.</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; uint8_t iteration = 1;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; uint8_t n = 24;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; uint8_t w = 6;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">while</span> (n &lt; 208) {</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (w == 6) {</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// Every 24 bytes (6 words) we need to apply the key schedule core.</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; keyScheduleCore(schedule + 24, schedule + 20, iteration);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; schedule[24] ^= schedule[0];</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; schedule[25] ^= schedule[1];</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; schedule[26] ^= schedule[2];</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; schedule[27] ^= schedule[3];</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; ++iteration;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; w = 0;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// Otherwise just XOR the word with the one 24 bytes previous.</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; schedule[24] = schedule[20] ^ schedule[0];</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; schedule[25] = schedule[21] ^ schedule[1];</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; schedule[26] = schedule[22] ^ schedule[2];</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; schedule[27] = schedule[23] ^ schedule[3];</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// Advance to the next word in the schedule.</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; schedule += 4;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; n += 4;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; ++w;</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="keywordflow">return</span> <span class="keyword">true</span>;</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;<span class="preprocessor">#endif // CRYPTO_AES_DEFAULT</span></div>
<div class="ttc" id="classAES192_html_a4ab37cff19fb05ceef1533ebc5e37cde"><div class="ttname"><a href="classAES192.html#a4ab37cff19fb05ceef1533ebc5e37cde">AES192::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES192_8cpp_source.html#l00062">AES192.cpp:62</a></div></div>
<div class="ttc" id="classAES192_html_ade28843e51e262b30eb55791c83fd791"><div class="ttname"><a href="classAES192.html#ade28843e51e262b30eb55791c83fd791">AES192::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 192-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES192_8cpp_source.html#l00057">AES192.cpp:57</a></div></div>
<div class="ttc" id="classAES192_html_a6f8e457cfffdc12f7dd829e3ac4585ce"><div class="ttname"><a href="classAES192.html#a6f8e457cfffdc12f7dd829e3ac4585ce">AES192::AES192</a></div><div class="ttdeci">AES192()</div><div class="ttdoc">Constructs an AES 192-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES192_8cpp_source.html#l00042">AES192.cpp:42</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: AES256.cpp Source File</title>
<title>Arduino Cryptography Library: AES256.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -114,311 +113,315 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;Crypto.h&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classAES256.html#a3b2cbe56f03a87ec4260be4f8914fb02"> 40</a></span>&#160;<a class="code" href="classAES256.html#a3b2cbe56f03a87ec4260be4f8914fb02">AES256::AES256</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; rounds = 14;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; schedule = sched;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;AES256::~AES256()</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; clean(sched);</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="l00055"></a><span class="lineno"><a class="line" href="classAES256.html#af8ed6412bae6fc78274f60344899366a"> 55</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAES256.html#af8ed6412bae6fc78274f60344899366a">AES256::keySize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> 32;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classAES256.html#a6af085d2d6a730ff1e025f982121bbda"> 60</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classAES256.html#a6af085d2d6a730ff1e025f982121bbda">AES256::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</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="keywordflow">if</span> (len != 32)</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="comment">// Copy the key itself into the first 32 bytes of the schedule.</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; uint8_t *schedule = sched;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; memcpy(schedule, key, 32);</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="comment">// Expand the key schedule until we have 240 bytes of expanded key.</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; uint8_t iteration = 1;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; uint8_t n = 32;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; uint8_t w = 8;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">while</span> (n &lt; 240) {</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (w == 8) {</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">// Every 32 bytes (8 words) we need to apply the key schedule core.</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; keyScheduleCore(schedule + 32, schedule + 28, iteration);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; schedule[32] ^= schedule[0];</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; schedule[33] ^= schedule[1];</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; schedule[34] ^= schedule[2];</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; schedule[35] ^= schedule[3];</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; ++iteration;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; w = 0;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (w == 4) {</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">// At the 16 byte mark we need to apply the S-box.</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; applySbox(schedule + 32, schedule + 28);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; schedule[32] ^= schedule[0];</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; schedule[33] ^= schedule[1];</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; schedule[34] ^= schedule[2];</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; schedule[35] ^= schedule[3];</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="comment">// Otherwise just XOR the word with the one 32 bytes previous.</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; schedule[32] = schedule[28] ^ schedule[0];</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; schedule[33] = schedule[29] ^ schedule[1];</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; schedule[34] = schedule[30] ^ schedule[2];</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; schedule[35] = schedule[31] ^ schedule[3];</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; <span class="comment">// Advance to the next word in the schedule.</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; schedule += 4;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; n += 4;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; ++w;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;}</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment">// Helper macros.</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="preprocessor">#define LEFT 0</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RIGHT 16</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ENCRYPT(phase) \</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="preprocessor"> AESCommon::subBytesAndShiftRows(state2, state1); \</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor"> AESCommon::mixColumn(state1, state2); \</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="preprocessor"> AESCommon::mixColumn(state1 + 4, state2 + 4); \</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="preprocessor"> AESCommon::mixColumn(state1 + 8, state2 + 8); \</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="preprocessor"> AESCommon::mixColumn(state1 + 12, state2 + 12); \</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="preprocessor"> for (posn = 0; posn &lt; 16; ++posn) \</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="preprocessor"> state1[posn] ^= schedule[posn + (phase)]; \</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DECRYPT(phase) \</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="preprocessor"> for (posn = 0; posn &lt; 16; ++posn) \</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="preprocessor"> state2[posn] ^= schedule[posn + (phase)]; \</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="preprocessor"> AESCommon::inverseMixColumn(state1, state2); \</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="preprocessor"> AESCommon::inverseMixColumn(state1 + 4, state2 + 4); \</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor"> AESCommon::inverseMixColumn(state1 + 8, state2 + 8); \</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="preprocessor"> AESCommon::inverseMixColumn(state1 + 12, state2 + 12); \</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="preprocessor"> AESCommon::inverseShiftRowsAndSubBytes(state2, state1); \</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define KCORE(n) \</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="preprocessor"> AESCommon::keyScheduleCore(temp, schedule + 28, (n)); \</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="preprocessor"> schedule[0] ^= temp[0]; \</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor"> schedule[1] ^= temp[1]; \</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor"> schedule[2] ^= temp[2]; \</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor"> schedule[3] ^= temp[3]; \</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define KXOR(a, b) \</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor"> schedule[(a) * 4] ^= schedule[(b) * 4]; \</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor"> schedule[(a) * 4 + 1] ^= schedule[(b) * 4 + 1]; \</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="preprocessor"> schedule[(a) * 4 + 2] ^= schedule[(b) * 4 + 2]; \</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="preprocessor"> schedule[(a) * 4 + 3] ^= schedule[(b) * 4 + 3]; \</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define KSBOX() \</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="preprocessor"> AESCommon::applySbox(temp, schedule + 12); \</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="preprocessor"> schedule[16] ^= temp[0]; \</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="preprocessor"> schedule[17] ^= temp[1]; \</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="preprocessor"> schedule[18] ^= temp[2]; \</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="preprocessor"> schedule[19] ^= temp[3]; \</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classAESTiny256.html#a7af85adfdbd0a3bb68ef5a8f76102043"> 187</a></span>&#160;<a class="code" href="classAESTiny256.html#a7af85adfdbd0a3bb68ef5a8f76102043">AESTiny256::AESTiny256</a>()</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;AESTiny256::~AESTiny256()</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; clean(schedule);</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="l00200"></a><span class="lineno"><a class="line" href="classAESTiny256.html#a3f48f55b7600dfc672acda899928de76"> 200</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAESTiny256.html#a3f48f55b7600dfc672acda899928de76">AESTiny256::blockSize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> 16;</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="l00209"></a><span class="lineno"><a class="line" href="classAESTiny256.html#a7b5a2ba4829e79283c53248d3d8a7a06"> 209</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAESTiny256.html#a7b5a2ba4829e79283c53248d3d8a7a06">AESTiny256::keySize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">return</span> 32;</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="l00214"></a><span class="lineno"><a class="line" href="classAESTiny256.html#abc162075b181bfca34144f4eec6deec7"> 214</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classAESTiny256.html#abc162075b181bfca34144f4eec6deec7">AESTiny256::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</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> (len == 32) {</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="comment">// Make a copy of the key - it will be expanded in encryptBlock().</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; memcpy(schedule, key, 32);</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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"><a class="line" href="classAESTiny256.html#a36e4ffc85f7d7604d01a5629c185d0ef"> 224</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESTiny256.html#a36e4ffc85f7d7604d01a5629c185d0ef">AESTiny256::encryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; uint8_t schedule[32];</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; uint8_t posn;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; uint8_t state1[16];</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; uint8_t state2[16];</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; uint8_t temp[4];</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; <span class="comment">// Start with the key in the schedule buffer.</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; memcpy(schedule, this-&gt;schedule, 32);</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; <span class="comment">// Copy the input into the state and perform the first round.</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; state1[posn] = input[posn] ^ schedule[posn];</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; ENCRYPT(RIGHT);</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; <span class="comment">// Perform the next 12 rounds of the cipher two at a time.</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">for</span> (round = 1; round &lt;= 6; ++round) {</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="comment">// Expand the next 32 bytes of the key schedule.</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; KCORE(round);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; KXOR(3, 2);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; KSBOX();</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; KXOR(5, 4);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; KXOR(6, 5);</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; KXOR(7, 6);</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="comment">// Encrypt using the left and right halves of the key schedule.</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; ENCRYPT(LEFT);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; ENCRYPT(RIGHT);</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="comment">// Expand the final 16 bytes of the key schedule.</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; KCORE(7);</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; KXOR(3, 2);</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="comment">// Perform the final round.</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; AESCommon::subBytesAndShiftRows(state2, state1);</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; output[posn] = state2[posn] ^ schedule[posn];</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"><a class="line" href="classAESTiny256.html#abdf72a52c37c060a9089693c118585bc"> 270</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESTiny256.html#abdf72a52c37c060a9089693c118585bc">AESTiny256::decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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="comment">// Decryption is not supported by AESTiny256.</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;}</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div>
<div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="classAESTiny256.html#ae4cac6af2e78cbf399b7f6d0e613a578"> 275</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESTiny256.html#ae4cac6af2e78cbf399b7f6d0e613a578">AESTiny256::clear</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; clean(schedule);</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="l00306"></a><span class="lineno"><a class="line" href="classAESSmall256.html#aa343b59af73ad6c86541907f53f5572b"> 306</a></span>&#160;<a class="code" href="classAESSmall256.html#aa343b59af73ad6c86541907f53f5572b">AESSmall256::AESSmall256</a>()</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;</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;AESSmall256::~AESSmall256()</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; clean(reverse);</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;}</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div>
<div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classAESSmall256.html#ae7e05119a6183d5f7fc520206f97c0e0"> 315</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classAESSmall256.html#ae7e05119a6183d5f7fc520206f97c0e0">AESSmall256::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</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; uint8_t *schedule;</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; uint8_t temp[4];</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="comment">// Set the encryption key first.</span></div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classAESTiny256.html#abc162075b181bfca34144f4eec6deec7">AESTiny256::setKey</a>(key, len))</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="comment">// Expand the key schedule up to the last round which gives</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="comment">// us the round keys to use for the final two rounds. We can</span></div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">// then work backwards from there in decryptBlock().</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; schedule = reverse;</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; memcpy(schedule, key, 32);</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">for</span> (round = 1; round &lt;= 6; ++round) {</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; KCORE(round);</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; KXOR(3, 2);</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; KSBOX();</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; KXOR(5, 4);</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; KXOR(6, 5);</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; KXOR(7, 6);</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; KCORE(7);</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; KXOR(3, 2);</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="comment">// Key is ready to go.</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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="l00349"></a><span class="lineno"><a class="line" href="classAESSmall256.html#aaba6d59d07d2f40efa8c962375c15888"> 349</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESSmall256.html#aaba6d59d07d2f40efa8c962375c15888">AESSmall256::decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;{</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; uint8_t schedule[32];</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; uint8_t posn;</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; uint8_t state1[16];</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; uint8_t state2[16];</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; uint8_t temp[4];</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="comment">// Start with the end of the decryption schedule.</span></div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; memcpy(schedule, reverse, 32);</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="comment">// Copy the input into the state and reverse the final round.</span></div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; state1[posn] = input[posn] ^ schedule[posn];</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; AESCommon::inverseShiftRowsAndSubBytes(state2, state1);</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; KXOR(3, 2);</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; KCORE(7);</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">// Perform the next 12 rounds of the decryption process two at a time.</span></div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">for</span> (round = 6; round &gt;= 1; --round) {</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="comment">// Decrypt using the right and left halves of the key schedule.</span></div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; DECRYPT(RIGHT);</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; DECRYPT(LEFT);</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; <span class="comment">// Expand the next 32 bytes of the key schedule in reverse.</span></div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; KXOR(7, 6);</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; KXOR(6, 5);</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; KXOR(5, 4);</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; KSBOX();</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; KXOR(3, 2);</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; KCORE(round);</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; <span class="comment">// Reverse the initial round and create the output words.</span></div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; DECRYPT(RIGHT);</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; output[posn] = state2[posn] ^ schedule[posn];</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;}</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div>
<div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classAESSmall256.html#ac63bf2dff7de8a73ba57f4bb0f1df444"> 393</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESSmall256.html#ac63bf2dff7de8a73ba57f4bb0f1df444">AESSmall256::clear</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; clean(reverse);</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="classAESTiny256.html#ae4cac6af2e78cbf399b7f6d0e613a578">AESTiny256::clear</a>();</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;}</div>
<div class="ttc" id="classAESTiny256_html_ae4cac6af2e78cbf399b7f6d0e613a578"><div class="ttname"><a href="classAESTiny256.html#ae4cac6af2e78cbf399b7f6d0e613a578">AESTiny256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00275">AES256.cpp:275</a></div></div>
<div class="ttc" id="classAESTiny256_html_a7b5a2ba4829e79283c53248d3d8a7a06"><div class="ttname"><a href="classAESTiny256.html#a7b5a2ba4829e79283c53248d3d8a7a06">AESTiny256::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 256-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00209">AES256.cpp:209</a></div></div>
<div class="ttc" id="classAESSmall256_html_aa343b59af73ad6c86541907f53f5572b"><div class="ttname"><a href="classAESSmall256.html#aa343b59af73ad6c86541907f53f5572b">AESSmall256::AESSmall256</a></div><div class="ttdeci">AESSmall256()</div><div class="ttdoc">Constructs an AES 256-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00306">AES256.cpp:306</a></div></div>
<div class="ttc" id="classAESTiny256_html_abdf72a52c37c060a9089693c118585bc"><div class="ttname"><a href="classAESTiny256.html#abdf72a52c37c060a9089693c118585bc">AESTiny256::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00270">AES256.cpp:270</a></div></div>
<div class="ttc" id="classAESTiny256_html_a36e4ffc85f7d7604d01a5629c185d0ef"><div class="ttname"><a href="classAESTiny256.html#a36e4ffc85f7d7604d01a5629c185d0ef">AESTiny256::encryptBlock</a></div><div class="ttdeci">void encryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Encrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00224">AES256.cpp:224</a></div></div>
<div class="ttc" id="classAESSmall256_html_aaba6d59d07d2f40efa8c962375c15888"><div class="ttname"><a href="classAESSmall256.html#aaba6d59d07d2f40efa8c962375c15888">AESSmall256::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00349">AES256.cpp:349</a></div></div>
<div class="ttc" id="classAES256_html_a3b2cbe56f03a87ec4260be4f8914fb02"><div class="ttname"><a href="classAES256.html#a3b2cbe56f03a87ec4260be4f8914fb02">AES256::AES256</a></div><div class="ttdeci">AES256()</div><div class="ttdoc">Constructs an AES 256-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00040">AES256.cpp:40</a></div></div>
<div class="ttc" id="classAES256_html_a6af085d2d6a730ff1e025f982121bbda"><div class="ttname"><a href="classAES256.html#a6af085d2d6a730ff1e025f982121bbda">AES256::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00060">AES256.cpp:60</a></div></div>
<div class="ttc" id="classAESTiny256_html_abc162075b181bfca34144f4eec6deec7"><div class="ttname"><a href="classAESTiny256.html#abc162075b181bfca34144f4eec6deec7">AESTiny256::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00214">AES256.cpp:214</a></div></div>
<div class="ttc" id="classAESSmall256_html_ac63bf2dff7de8a73ba57f4bb0f1df444"><div class="ttname"><a href="classAESSmall256.html#ac63bf2dff7de8a73ba57f4bb0f1df444">AESSmall256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00393">AES256.cpp:393</a></div></div>
<div class="ttc" id="classAESTiny256_html_a7af85adfdbd0a3bb68ef5a8f76102043"><div class="ttname"><a href="classAESTiny256.html#a7af85adfdbd0a3bb68ef5a8f76102043">AESTiny256::AESTiny256</a></div><div class="ttdeci">AESTiny256()</div><div class="ttdoc">Constructs an AES 256-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00187">AES256.cpp:187</a></div></div>
<div class="ttc" id="classAES256_html_af8ed6412bae6fc78274f60344899366a"><div class="ttname"><a href="classAES256.html#af8ed6412bae6fc78274f60344899366a">AES256::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 256-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00055">AES256.cpp:55</a></div></div>
<div class="ttc" id="classAESSmall256_html_ae7e05119a6183d5f7fc520206f97c0e0"><div class="ttname"><a href="classAESSmall256.html#ae7e05119a6183d5f7fc520206f97c0e0">AESSmall256::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00315">AES256.cpp:315</a></div></div>
<div class="ttc" id="classAESTiny256_html_a3f48f55b7600dfc672acda899928de76"><div class="ttname"><a href="classAESTiny256.html#a3f48f55b7600dfc672acda899928de76">AESTiny256::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of an AES block in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00200">AES256.cpp:200</a></div></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#if defined(CRYPTO_AES_DEFAULT) || defined(CRYPTO_DOC)</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classAES256.html#a3b2cbe56f03a87ec4260be4f8914fb02"> 42</a></span>&#160;<a class="code" href="classAES256.html#a3b2cbe56f03a87ec4260be4f8914fb02">AES256::AES256</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"> 44</span>&#160; rounds = 14;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; schedule = sched;</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="l00048"></a><span class="lineno"> 48</span>&#160;AES256::~AES256()</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; clean(sched);</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;</div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classAES256.html#af8ed6412bae6fc78274f60344899366a"> 57</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAES256.html#af8ed6412bae6fc78274f60344899366a">AES256::keySize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> 32;</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;</div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classAES256.html#a6af085d2d6a730ff1e025f982121bbda"> 62</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classAES256.html#a6af085d2d6a730ff1e025f982121bbda">AES256::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</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="keywordflow">if</span> (len != 32)</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">// Copy the key itself into the first 32 bytes of the schedule.</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; uint8_t *schedule = sched;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; memcpy(schedule, key, 32);</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="comment">// Expand the key schedule until we have 240 bytes of expanded key.</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; uint8_t iteration = 1;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; uint8_t n = 32;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; uint8_t w = 8;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">while</span> (n &lt; 240) {</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (w == 8) {</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// Every 32 bytes (8 words) we need to apply the key schedule core.</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; keyScheduleCore(schedule + 32, schedule + 28, iteration);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; schedule[32] ^= schedule[0];</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; schedule[33] ^= schedule[1];</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; schedule[34] ^= schedule[2];</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; schedule[35] ^= schedule[3];</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; ++iteration;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; w = 0;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (w == 4) {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// At the 16 byte mark we need to apply the S-box.</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; applySbox(schedule + 32, schedule + 28);</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; schedule[32] ^= schedule[0];</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; schedule[33] ^= schedule[1];</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; schedule[34] ^= schedule[2];</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; schedule[35] ^= schedule[3];</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; <span class="comment">// Otherwise just XOR the word with the one 32 bytes previous.</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; schedule[32] = schedule[28] ^ schedule[0];</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; schedule[33] = schedule[29] ^ schedule[1];</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; schedule[34] = schedule[30] ^ schedule[2];</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; schedule[35] = schedule[31] ^ schedule[3];</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="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">// Advance to the next word in the schedule.</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; schedule += 4;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; n += 4;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; ++w;</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;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;}</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment">// Helper macros.</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="preprocessor">#define LEFT 0</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RIGHT 16</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define ENCRYPT(phase) \</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="preprocessor"> AESCommon::subBytesAndShiftRows(state2, state1); \</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="preprocessor"> AESCommon::mixColumn(state1, state2); \</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="preprocessor"> AESCommon::mixColumn(state1 + 4, state2 + 4); \</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="preprocessor"> AESCommon::mixColumn(state1 + 8, state2 + 8); \</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="preprocessor"> AESCommon::mixColumn(state1 + 12, state2 + 12); \</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="preprocessor"> for (posn = 0; posn &lt; 16; ++posn) \</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="preprocessor"> state1[posn] ^= schedule[posn + (phase)]; \</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DECRYPT(phase) \</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="preprocessor"> for (posn = 0; posn &lt; 16; ++posn) \</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="preprocessor"> state2[posn] ^= schedule[posn + (phase)]; \</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor"> AESCommon::inverseMixColumn(state1, state2); \</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="preprocessor"> AESCommon::inverseMixColumn(state1 + 4, state2 + 4); \</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="preprocessor"> AESCommon::inverseMixColumn(state1 + 8, state2 + 8); \</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="preprocessor"> AESCommon::inverseMixColumn(state1 + 12, state2 + 12); \</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="preprocessor"> AESCommon::inverseShiftRowsAndSubBytes(state2, state1); \</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define KCORE(n) \</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor"> AESCommon::keyScheduleCore(temp, schedule + 28, (n)); \</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor"> schedule[0] ^= temp[0]; \</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor"> schedule[1] ^= temp[1]; \</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor"> schedule[2] ^= temp[2]; \</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor"> schedule[3] ^= temp[3]; \</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define KXOR(a, b) \</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="preprocessor"> schedule[(a) * 4] ^= schedule[(b) * 4]; \</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="preprocessor"> schedule[(a) * 4 + 1] ^= schedule[(b) * 4 + 1]; \</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="preprocessor"> schedule[(a) * 4 + 2] ^= schedule[(b) * 4 + 2]; \</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="preprocessor"> schedule[(a) * 4 + 3] ^= schedule[(b) * 4 + 3]; \</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define KSBOX() \</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="preprocessor"> AESCommon::applySbox(temp, schedule + 12); \</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="preprocessor"> schedule[16] ^= temp[0]; \</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="preprocessor"> schedule[17] ^= temp[1]; \</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="preprocessor"> schedule[18] ^= temp[2]; \</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="preprocessor"> schedule[19] ^= temp[3]; \</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classAESTiny256.html#a7af85adfdbd0a3bb68ef5a8f76102043"> 189</a></span>&#160;<a class="code" href="classAESTiny256.html#a7af85adfdbd0a3bb68ef5a8f76102043">AESTiny256::AESTiny256</a>()</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;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;AESTiny256::~AESTiny256()</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; clean(schedule);</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 class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classAESTiny256.html#a3f48f55b7600dfc672acda899928de76"> 202</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAESTiny256.html#a3f48f55b7600dfc672acda899928de76">AESTiny256::blockSize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> 16;</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="l00211"></a><span class="lineno"><a class="line" href="classAESTiny256.html#a7b5a2ba4829e79283c53248d3d8a7a06"> 211</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAESTiny256.html#a7b5a2ba4829e79283c53248d3d8a7a06">AESTiny256::keySize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> 32;</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="line" href="classAESTiny256.html#abc162075b181bfca34144f4eec6deec7"> 216</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classAESTiny256.html#abc162075b181bfca34144f4eec6deec7">AESTiny256::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</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> (len == 32) {</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// Make a copy of the key - it will be expanded in encryptBlock().</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; memcpy(schedule, key, 32);</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;}</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div>
<div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classAESTiny256.html#a36e4ffc85f7d7604d01a5629c185d0ef"> 226</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESTiny256.html#a36e4ffc85f7d7604d01a5629c185d0ef">AESTiny256::encryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; uint8_t schedule[32];</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; uint8_t posn;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; uint8_t state1[16];</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; uint8_t state2[16];</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; uint8_t temp[4];</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="comment">// Start with the key in the schedule buffer.</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; memcpy(schedule, this-&gt;schedule, 32);</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="comment">// Copy the input into the state and perform the first round.</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; state1[posn] = input[posn] ^ schedule[posn];</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; ENCRYPT(RIGHT);</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; <span class="comment">// Perform the next 12 rounds of the cipher two at a time.</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">for</span> (round = 1; round &lt;= 6; ++round) {</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="comment">// Expand the next 32 bytes of the key schedule.</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; KCORE(round);</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; KXOR(3, 2);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; KSBOX();</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; KXOR(5, 4);</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; KXOR(6, 5);</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; KXOR(7, 6);</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="comment">// Encrypt using the left and right halves of the key schedule.</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; ENCRYPT(LEFT);</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; ENCRYPT(RIGHT);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; }</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="comment">// Expand the final 16 bytes of the key schedule.</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; KCORE(7);</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; KXOR(3, 2);</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="comment">// Perform the final round.</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; AESCommon::subBytesAndShiftRows(state2, state1);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; output[posn] = state2[posn] ^ schedule[posn];</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;}</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div>
<div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classAESTiny256.html#abdf72a52c37c060a9089693c118585bc"> 272</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESTiny256.html#abdf72a52c37c060a9089693c118585bc">AESTiny256::decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; <span class="comment">// Decryption is not supported by AESTiny256.</span></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="line" href="classAESTiny256.html#ae4cac6af2e78cbf399b7f6d0e613a578"> 277</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESTiny256.html#ae4cac6af2e78cbf399b7f6d0e613a578">AESTiny256::clear</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; clean(schedule);</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="l00308"></a><span class="lineno"><a class="line" href="classAESSmall256.html#aa343b59af73ad6c86541907f53f5572b"> 308</a></span>&#160;<a class="code" href="classAESSmall256.html#aa343b59af73ad6c86541907f53f5572b">AESSmall256::AESSmall256</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;}</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;AESSmall256::~AESSmall256()</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;{</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; clean(reverse);</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;</div>
<div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classAESSmall256.html#ae7e05119a6183d5f7fc520206f97c0e0"> 317</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classAESSmall256.html#ae7e05119a6183d5f7fc520206f97c0e0">AESSmall256::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</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; uint8_t *schedule;</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; uint8_t temp[4];</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">// Set the encryption key first.</span></div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classAESTiny256.html#abc162075b181bfca34144f4eec6deec7">AESTiny256::setKey</a>(key, len))</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">// Expand the key schedule up to the last round which gives</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="comment">// us the round keys to use for the final two rounds. We can</span></div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="comment">// then work backwards from there in decryptBlock().</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; schedule = reverse;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; memcpy(schedule, key, 32);</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">for</span> (round = 1; round &lt;= 6; ++round) {</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; KCORE(round);</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; KXOR(3, 2);</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; KSBOX();</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; KXOR(5, 4);</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; KXOR(6, 5);</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; KXOR(7, 6);</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; KCORE(7);</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; KXOR(3, 2);</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; <span class="comment">// Key is ready to go.</span></div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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 class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="classAESSmall256.html#aaba6d59d07d2f40efa8c962375c15888"> 351</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESSmall256.html#aaba6d59d07d2f40efa8c962375c15888">AESSmall256::decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;{</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; uint8_t schedule[32];</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; uint8_t posn;</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; uint8_t state1[16];</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; uint8_t state2[16];</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; uint8_t temp[4];</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; <span class="comment">// Start with the end of the decryption schedule.</span></div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; memcpy(schedule, reverse, 32);</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="comment">// Copy the input into the state and reverse the final round.</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; state1[posn] = input[posn] ^ schedule[posn];</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; AESCommon::inverseShiftRowsAndSubBytes(state2, state1);</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; KXOR(3, 2);</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; KCORE(7);</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="comment">// Perform the next 12 rounds of the decryption process two at a time.</span></div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">for</span> (round = 6; round &gt;= 1; --round) {</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="comment">// Decrypt using the right and left halves of the key schedule.</span></div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; DECRYPT(RIGHT);</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; DECRYPT(LEFT);</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; <span class="comment">// Expand the next 32 bytes of the key schedule in reverse.</span></div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; KXOR(7, 6);</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; KXOR(6, 5);</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; KXOR(5, 4);</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; KSBOX();</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; KXOR(3, 2);</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; KXOR(2, 1);</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; KXOR(1, 0);</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; KCORE(round);</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="comment">// Reverse the initial round and create the output words.</span></div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; DECRYPT(RIGHT);</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; output[posn] = state2[posn] ^ schedule[posn];</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;</div>
<div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="classAESSmall256.html#ac63bf2dff7de8a73ba57f4bb0f1df444"> 395</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESSmall256.html#ac63bf2dff7de8a73ba57f4bb0f1df444">AESSmall256::clear</a>()</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;{</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; clean(reverse);</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="classAESTiny256.html#ae4cac6af2e78cbf399b7f6d0e613a578">AESTiny256::clear</a>();</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;}</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="preprocessor">#endif // CRYPTO_AES_DEFAULT</span></div>
<div class="ttc" id="classAESTiny256_html_ae4cac6af2e78cbf399b7f6d0e613a578"><div class="ttname"><a href="classAESTiny256.html#ae4cac6af2e78cbf399b7f6d0e613a578">AESTiny256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00277">AES256.cpp:277</a></div></div>
<div class="ttc" id="classAESTiny256_html_a7b5a2ba4829e79283c53248d3d8a7a06"><div class="ttname"><a href="classAESTiny256.html#a7b5a2ba4829e79283c53248d3d8a7a06">AESTiny256::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 256-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00211">AES256.cpp:211</a></div></div>
<div class="ttc" id="classAESSmall256_html_aa343b59af73ad6c86541907f53f5572b"><div class="ttname"><a href="classAESSmall256.html#aa343b59af73ad6c86541907f53f5572b">AESSmall256::AESSmall256</a></div><div class="ttdeci">AESSmall256()</div><div class="ttdoc">Constructs an AES 256-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00308">AES256.cpp:308</a></div></div>
<div class="ttc" id="classAESTiny256_html_abdf72a52c37c060a9089693c118585bc"><div class="ttname"><a href="classAESTiny256.html#abdf72a52c37c060a9089693c118585bc">AESTiny256::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00272">AES256.cpp:272</a></div></div>
<div class="ttc" id="classAESTiny256_html_a36e4ffc85f7d7604d01a5629c185d0ef"><div class="ttname"><a href="classAESTiny256.html#a36e4ffc85f7d7604d01a5629c185d0ef">AESTiny256::encryptBlock</a></div><div class="ttdeci">void encryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Encrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00226">AES256.cpp:226</a></div></div>
<div class="ttc" id="classAESSmall256_html_aaba6d59d07d2f40efa8c962375c15888"><div class="ttname"><a href="classAESSmall256.html#aaba6d59d07d2f40efa8c962375c15888">AESSmall256::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00351">AES256.cpp:351</a></div></div>
<div class="ttc" id="classAES256_html_a3b2cbe56f03a87ec4260be4f8914fb02"><div class="ttname"><a href="classAES256.html#a3b2cbe56f03a87ec4260be4f8914fb02">AES256::AES256</a></div><div class="ttdeci">AES256()</div><div class="ttdoc">Constructs an AES 256-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00042">AES256.cpp:42</a></div></div>
<div class="ttc" id="classAES256_html_a6af085d2d6a730ff1e025f982121bbda"><div class="ttname"><a href="classAES256.html#a6af085d2d6a730ff1e025f982121bbda">AES256::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00062">AES256.cpp:62</a></div></div>
<div class="ttc" id="classAESTiny256_html_abc162075b181bfca34144f4eec6deec7"><div class="ttname"><a href="classAESTiny256.html#abc162075b181bfca34144f4eec6deec7">AESTiny256::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00216">AES256.cpp:216</a></div></div>
<div class="ttc" id="classAESSmall256_html_ac63bf2dff7de8a73ba57f4bb0f1df444"><div class="ttname"><a href="classAESSmall256.html#ac63bf2dff7de8a73ba57f4bb0f1df444">AESSmall256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00395">AES256.cpp:395</a></div></div>
<div class="ttc" id="classAESTiny256_html_a7af85adfdbd0a3bb68ef5a8f76102043"><div class="ttname"><a href="classAESTiny256.html#a7af85adfdbd0a3bb68ef5a8f76102043">AESTiny256::AESTiny256</a></div><div class="ttdeci">AESTiny256()</div><div class="ttdoc">Constructs an AES 256-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00189">AES256.cpp:189</a></div></div>
<div class="ttc" id="classAES256_html_af8ed6412bae6fc78274f60344899366a"><div class="ttname"><a href="classAES256.html#af8ed6412bae6fc78274f60344899366a">AES256::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 256-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00057">AES256.cpp:57</a></div></div>
<div class="ttc" id="classAESSmall256_html_ae7e05119a6183d5f7fc520206f97c0e0"><div class="ttname"><a href="classAESSmall256.html#ae7e05119a6183d5f7fc520206f97c0e0">AESSmall256::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00317">AES256.cpp:317</a></div></div>
<div class="ttc" id="classAESTiny256_html_a3f48f55b7600dfc672acda899928de76"><div class="ttname"><a href="classAESTiny256.html#a3f48f55b7600dfc672acda899928de76">AESTiny256::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of an AES block in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00202">AES256.cpp:202</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: AESCommon.cpp Source File</title>
<title>Arduino Cryptography Library: AESCommon.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -114,308 +113,311 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;Crypto.h&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;utility/ProgMemUtil.h&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">// AES S-box (http://en.wikipedia.org/wiki/Rijndael_S-box)</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">static</span> uint8_t <span class="keyword">const</span> sbox[256] PROGMEM = {</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, <span class="comment">// 0x00</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76,</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, <span class="comment">// 0x10</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0,</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, <span class="comment">// 0x20</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15,</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, <span class="comment">// 0x30</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75,</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, <span class="comment">// 0x40</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84,</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, <span class="comment">// 0x50</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF,</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, <span class="comment">// 0x60</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8,</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, <span class="comment">// 0x70</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2,</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, <span class="comment">// 0x80</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73,</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, <span class="comment">// 0x90</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB,</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, <span class="comment">// 0xA0</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79,</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, <span class="comment">// 0xB0</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08,</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, <span class="comment">// 0xC0</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A,</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, <span class="comment">// 0xD0</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E,</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, <span class="comment">// 0xE0</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF,</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, <span class="comment">// 0xF0</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16</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="comment">// AES inverse S-box (http://en.wikipedia.org/wiki/Rijndael_S-box)</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keyword">static</span> uint8_t <span class="keyword">const</span> sbox_inverse[256] PROGMEM = {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, <span class="comment">// 0x00</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB,</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, <span class="comment">// 0x10</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB,</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; 0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D, <span class="comment">// 0x20</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E,</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, <span class="comment">// 0x30</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25,</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, <span class="comment">// 0x40</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92,</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; 0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, <span class="comment">// 0x50</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84,</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, <span class="comment">// 0x60</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; 0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06,</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, <span class="comment">// 0x70</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B,</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; 0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, <span class="comment">// 0x80</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73,</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, <span class="comment">// 0x90</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; 0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E,</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, <span class="comment">// 0xA0</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B,</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; 0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20, <span class="comment">// 0xB0</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4,</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, <span class="comment">// 0xC0</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F,</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, <span class="comment">// 0xD0</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF,</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; 0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, <span class="comment">// 0xE0</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61,</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, <span class="comment">// 0xF0</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D</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="l00125"></a><span class="lineno"><a class="line" href="classAESCommon.html#acf224a392659429bac80dc68c7471b21"> 125</a></span>&#160;<a class="code" href="classAESCommon.html#acf224a392659429bac80dc68c7471b21">AESCommon::AESCommon</a>()</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; : rounds(0), schedule(0)</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;{</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;}</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8"> 134</a></span>&#160;<a class="code" href="classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8">AESCommon::~AESCommon</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;}</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classAESCommon.html#ae26afdcc6d18e8888974acae16df1413"> 142</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAESCommon.html#ae26afdcc6d18e8888974acae16df1413">AESCommon::blockSize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> 16;</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="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment">// Constants to correct Galois multiplication for the high bits</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment">// that are shifted out when multiplying by powers of two.</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="keyword">static</span> uint8_t <span class="keyword">const</span> K[8] = {</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; 0x00,</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; 0x1B,</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; (0x1B &lt;&lt; 1),</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; (0x1B &lt;&lt; 1) ^ 0x1B,</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; (0x1B &lt;&lt; 2),</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; (0x1B &lt;&lt; 2) ^ 0x1B,</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; (0x1B &lt;&lt; 2) ^ (0x1B &lt;&lt; 1),</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; (0x1B &lt;&lt; 2) ^ (0x1B &lt;&lt; 1) ^ 0x1B</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"> 160</span>&#160;<span class="comment">// Multiply x by 2 in the Galois field, to achieve the effect of the following:</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment">// if (x &amp; 0x80)</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment">// return (x &lt;&lt; 1) ^ 0x1B;</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment">// else</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment">// return (x &lt;&lt; 1);</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment">// However, we don&#39;t want to use runtime conditionals if we can help it</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment">// to avoid leaking timing information from the implementation.</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment">// In this case, multiplication is slightly faster than table lookup on AVR.</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="preprocessor">#define gmul2(x) (t = ((uint16_t)(x)) &lt;&lt; 1, \</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="preprocessor"> ((uint8_t)t) ^ (uint8_t)(0x1B * ((uint8_t)(t &gt;&gt; 8))))</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment">// Multiply x by 4 in the Galois field.</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="preprocessor">#define gmul4(x) (t = ((uint16_t)(x)) &lt;&lt; 2, ((uint8_t)t) ^ K[t &gt;&gt; 8])</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment">// Multiply x by 8 in the Galois field.</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="preprocessor">#define gmul8(x) (t = ((uint16_t)(x)) &lt;&lt; 3, ((uint8_t)t) ^ K[t &gt;&gt; 8])</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor">#define OUT(col, row) output[(col) * 4 + (row)]</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define IN(col, row) input[(col) * 4 + (row)]</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="keywordtype">void</span> AESCommon::subBytesAndShiftRows(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;{</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; OUT(0, 0) = pgm_read_byte(sbox + IN(0, 0));</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; OUT(0, 1) = pgm_read_byte(sbox + IN(1, 1));</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; OUT(0, 2) = pgm_read_byte(sbox + IN(2, 2));</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; OUT(0, 3) = pgm_read_byte(sbox + IN(3, 3));</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; OUT(1, 0) = pgm_read_byte(sbox + IN(1, 0));</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; OUT(1, 1) = pgm_read_byte(sbox + IN(2, 1));</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; OUT(1, 2) = pgm_read_byte(sbox + IN(3, 2));</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; OUT(1, 3) = pgm_read_byte(sbox + IN(0, 3));</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; OUT(2, 0) = pgm_read_byte(sbox + IN(2, 0));</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; OUT(2, 1) = pgm_read_byte(sbox + IN(3, 1));</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; OUT(2, 2) = pgm_read_byte(sbox + IN(0, 2));</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; OUT(2, 3) = pgm_read_byte(sbox + IN(1, 3));</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; OUT(3, 0) = pgm_read_byte(sbox + IN(3, 0));</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; OUT(3, 1) = pgm_read_byte(sbox + IN(0, 1));</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; OUT(3, 2) = pgm_read_byte(sbox + IN(1, 2));</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; OUT(3, 3) = pgm_read_byte(sbox + IN(2, 3));</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="keywordtype">void</span> AESCommon::inverseShiftRowsAndSubBytes(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; OUT(0, 0) = pgm_read_byte(sbox_inverse + IN(0, 0));</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; OUT(0, 1) = pgm_read_byte(sbox_inverse + IN(3, 1));</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; OUT(0, 2) = pgm_read_byte(sbox_inverse + IN(2, 2));</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; OUT(0, 3) = pgm_read_byte(sbox_inverse + IN(1, 3));</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; OUT(1, 0) = pgm_read_byte(sbox_inverse + IN(1, 0));</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; OUT(1, 1) = pgm_read_byte(sbox_inverse + IN(0, 1));</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; OUT(1, 2) = pgm_read_byte(sbox_inverse + IN(3, 2));</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; OUT(1, 3) = pgm_read_byte(sbox_inverse + IN(2, 3));</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; OUT(2, 0) = pgm_read_byte(sbox_inverse + IN(2, 0));</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; OUT(2, 1) = pgm_read_byte(sbox_inverse + IN(1, 1));</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; OUT(2, 2) = pgm_read_byte(sbox_inverse + IN(0, 2));</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; OUT(2, 3) = pgm_read_byte(sbox_inverse + IN(3, 3));</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; OUT(3, 0) = pgm_read_byte(sbox_inverse + IN(3, 0));</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; OUT(3, 1) = pgm_read_byte(sbox_inverse + IN(2, 1));</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; OUT(3, 2) = pgm_read_byte(sbox_inverse + IN(1, 2));</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; OUT(3, 3) = pgm_read_byte(sbox_inverse + IN(0, 3));</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> AESCommon::mixColumn(uint8_t *output, uint8_t *input)</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; uint16_t t; <span class="comment">// Needed by the gmul2 macro.</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; uint8_t a = input[0];</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; uint8_t b = input[1];</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; uint8_t c = input[2];</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; uint8_t d = input[3];</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; uint8_t a2 = gmul2(a);</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; uint8_t b2 = gmul2(b);</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; uint8_t c2 = gmul2(c);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; uint8_t d2 = gmul2(d);</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; output[0] = a2 ^ b2 ^ b ^ c ^ d;</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; output[1] = a ^ b2 ^ c2 ^ c ^ d;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; output[2] = a ^ b ^ c2 ^ d2 ^ d;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; output[3] = a2 ^ a ^ b ^ c ^ d2;</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;<span class="keywordtype">void</span> AESCommon::inverseMixColumn(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; uint16_t t; <span class="comment">// Needed by the gmul2, gmul4, and gmul8 macros.</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; uint8_t a = input[0];</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; uint8_t b = input[1];</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; uint8_t c = input[2];</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; uint8_t d = input[3];</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; uint8_t a2 = gmul2(a);</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; uint8_t b2 = gmul2(b);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; uint8_t c2 = gmul2(c);</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; uint8_t d2 = gmul2(d);</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; uint8_t a4 = gmul4(a);</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; uint8_t b4 = gmul4(b);</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; uint8_t c4 = gmul4(c);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; uint8_t d4 = gmul4(d);</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; uint8_t a8 = gmul8(a);</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; uint8_t b8 = gmul8(b);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; uint8_t c8 = gmul8(c);</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; uint8_t d8 = gmul8(d);</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; output[0] = a8 ^ a4 ^ a2 ^ b8 ^ b2 ^ b ^ c8 ^ c4 ^ c ^ d8 ^ d;</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; output[1] = a8 ^ a ^ b8 ^ b4 ^ b2 ^ c8 ^ c2 ^ c ^ d8 ^ d4 ^ d;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; output[2] = a8 ^ a4 ^ a ^ b8 ^ b ^ c8 ^ c4 ^ c2 ^ d8 ^ d2 ^ d;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; output[3] = a8 ^ a2 ^ a ^ b8 ^ b4 ^ b ^ c8 ^ c ^ d8 ^ d4 ^ d2;</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;}</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div>
<div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296"> 268</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296">AESCommon::encryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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="keyword">const</span> uint8_t *roundKey = schedule;</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; uint8_t posn;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; uint8_t state1[16];</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; uint8_t state2[16];</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="comment">// Copy the input into the state and XOR with the first round key.</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; state1[posn] = input[posn] ^ roundKey[posn];</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; roundKey += 16;</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; <span class="comment">// Perform all rounds except the last.</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">for</span> (round = rounds; round &gt; 1; --round) {</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; subBytesAndShiftRows(state2, state1);</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; mixColumn(state1, state2);</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; mixColumn(state1 + 4, state2 + 4);</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; mixColumn(state1 + 8, state2 + 8);</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; mixColumn(state1 + 12, state2 + 12);</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; state1[posn] ^= roundKey[posn];</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; roundKey += 16;</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="l00293"></a><span class="lineno"> 293</span>&#160; <span class="comment">// Perform the final round.</span></div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; subBytesAndShiftRows(state2, state1);</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; output[posn] = state2[posn] ^ roundKey[posn];</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;}</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div>
<div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classAESCommon.html#a95a806adf42f975765ff62907efdc639"> 299</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESCommon.html#a95a806adf42f975765ff62907efdc639">AESCommon::decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; <span class="keyword">const</span> uint8_t *roundKey = schedule + rounds * 16;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; uint8_t posn;</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; uint8_t state1[16];</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; uint8_t state2[16];</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="comment">// Copy the input into the state and reverse the final round.</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; state1[posn] = input[posn] ^ roundKey[posn];</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; inverseShiftRowsAndSubBytes(state2, state1);</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; <span class="comment">// Perform all other rounds in reverse.</span></div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">for</span> (round = rounds; round &gt; 1; --round) {</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; roundKey -= 16;</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; state2[posn] ^= roundKey[posn];</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; inverseMixColumn(state1, state2);</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; inverseMixColumn(state1 + 4, state2 + 4);</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; inverseMixColumn(state1 + 8, state2 + 8);</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; inverseMixColumn(state1 + 12, state2 + 12);</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; inverseShiftRowsAndSubBytes(state2, state1);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="comment">// Reverse the initial round and create the output words.</span></div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; roundKey -= 16;</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; output[posn] = state2[posn] ^ roundKey[posn];</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;</div>
<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6"> 330</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6">AESCommon::clear</a>()</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; clean(schedule, (rounds + 1) * 16);</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="l00337"></a><span class="lineno"> 337</span>&#160;<span class="keywordtype">void</span> AESCommon::keyScheduleCore(uint8_t *output, <span class="keyword">const</span> uint8_t *input, uint8_t iteration)</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; <span class="comment">// Rcon(i), 2^i in the Rijndael finite field, for i = 0..10.</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="comment">// http://en.wikipedia.org/wiki/Rijndael_key_schedule</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keyword">static</span> uint8_t <span class="keyword">const</span> rcon[11] PROGMEM = {</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, <span class="comment">// 0x00</span></div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; 0x80, 0x1B, 0x36</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; output[0] = pgm_read_byte(sbox + input[1]) ^ pgm_read_byte(rcon + iteration);</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; output[1] = pgm_read_byte(sbox + input[2]);</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; output[2] = pgm_read_byte(sbox + input[3]);</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; output[3] = pgm_read_byte(sbox + input[0]);</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 class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="keywordtype">void</span> AESCommon::applySbox(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;{</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; output[0] = pgm_read_byte(sbox + input[0]);</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; output[1] = pgm_read_byte(sbox + input[1]);</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; output[2] = pgm_read_byte(sbox + input[2]);</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; output[3] = pgm_read_byte(sbox + input[3]);</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;</div>
<div class="ttc" id="classAESCommon_html_a95a806adf42f975765ff62907efdc639"><div class="ttname"><a href="classAESCommon.html#a95a806adf42f975765ff62907efdc639">AESCommon::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00299">AESCommon.cpp:299</a></div></div>
<div class="ttc" id="classAESCommon_html_acf224a392659429bac80dc68c7471b21"><div class="ttname"><a href="classAESCommon.html#acf224a392659429bac80dc68c7471b21">AESCommon::AESCommon</a></div><div class="ttdeci">AESCommon()</div><div class="ttdoc">Constructs an AES block cipher object. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00125">AESCommon.cpp:125</a></div></div>
<div class="ttc" id="classAESCommon_html_ae26afdcc6d18e8888974acae16df1413"><div class="ttname"><a href="classAESCommon.html#ae26afdcc6d18e8888974acae16df1413">AESCommon::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of an AES block in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00142">AESCommon.cpp:142</a></div></div>
<div class="ttc" id="classAESCommon_html_a8f67970c86c23affb0297fc1bb10fad8"><div class="ttname"><a href="classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8">AESCommon::~AESCommon</a></div><div class="ttdeci">virtual ~AESCommon()</div><div class="ttdoc">Destroys this AES block cipher object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00134">AESCommon.cpp:134</a></div></div>
<div class="ttc" id="classAESCommon_html_a83e43f7d07e31d90fd7b768a93ecfce6"><div class="ttname"><a href="classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6">AESCommon::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00330">AESCommon.cpp:330</a></div></div>
<div class="ttc" id="classAESCommon_html_a2d95f6159abfcd92b5841f9018e44296"><div class="ttname"><a href="classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296">AESCommon::encryptBlock</a></div><div class="ttdeci">void encryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Encrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00268">AESCommon.cpp:268</a></div></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#if defined(CRYPTO_AES_DEFAULT) || defined(CRYPTO_DOC)</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">// AES S-box (http://en.wikipedia.org/wiki/Rijndael_S-box)</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">static</span> uint8_t <span class="keyword">const</span> sbox[256] PROGMEM = {</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, <span class="comment">// 0x00</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76,</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, <span class="comment">// 0x10</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0,</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, <span class="comment">// 0x20</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15,</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, <span class="comment">// 0x30</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75,</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, <span class="comment">// 0x40</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84,</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, <span class="comment">// 0x50</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF,</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, <span class="comment">// 0x60</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8,</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, <span class="comment">// 0x70</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2,</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, <span class="comment">// 0x80</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73,</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, <span class="comment">// 0x90</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB,</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, <span class="comment">// 0xA0</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79,</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, <span class="comment">// 0xB0</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08,</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, <span class="comment">// 0xC0</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A,</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, <span class="comment">// 0xD0</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E,</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, <span class="comment">// 0xE0</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF,</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, <span class="comment">// 0xF0</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;};</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment">// AES inverse S-box (http://en.wikipedia.org/wiki/Rijndael_S-box)</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keyword">static</span> uint8_t <span class="keyword">const</span> sbox_inverse[256] PROGMEM = {</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, <span class="comment">// 0x00</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB,</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, <span class="comment">// 0x10</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB,</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; 0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D, <span class="comment">// 0x20</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E,</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, <span class="comment">// 0x30</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25,</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, <span class="comment">// 0x40</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92,</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; 0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, <span class="comment">// 0x50</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84,</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, <span class="comment">// 0x60</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; 0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06,</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, <span class="comment">// 0x70</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B,</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; 0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, <span class="comment">// 0x80</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73,</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, <span class="comment">// 0x90</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; 0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E,</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, <span class="comment">// 0xA0</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B,</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; 0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20, <span class="comment">// 0xB0</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4,</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, <span class="comment">// 0xC0</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F,</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, <span class="comment">// 0xD0</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF,</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; 0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, <span class="comment">// 0xE0</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61,</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, <span class="comment">// 0xF0</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D</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="l00127"></a><span class="lineno"><a class="line" href="classAESCommon.html#acf224a392659429bac80dc68c7471b21"> 127</a></span>&#160;<a class="code" href="classAESCommon.html#acf224a392659429bac80dc68c7471b21">AESCommon::AESCommon</a>()</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; : rounds(0), schedule(0)</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;{</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div>
<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8"> 136</a></span>&#160;<a class="code" href="classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8">AESCommon::~AESCommon</a>()</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="l00144"></a><span class="lineno"><a class="line" href="classAESCommon.html#ae26afdcc6d18e8888974acae16df1413"> 144</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classAESCommon.html#ae26afdcc6d18e8888974acae16df1413">AESCommon::blockSize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> 16;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment">// Constants to correct Galois multiplication for the high bits</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment">// that are shifted out when multiplying by powers of two.</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="keyword">static</span> uint8_t <span class="keyword">const</span> K[8] = {</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; 0x00,</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; 0x1B,</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; (0x1B &lt;&lt; 1),</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; (0x1B &lt;&lt; 1) ^ 0x1B,</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; (0x1B &lt;&lt; 2),</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; (0x1B &lt;&lt; 2) ^ 0x1B,</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; (0x1B &lt;&lt; 2) ^ (0x1B &lt;&lt; 1),</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; (0x1B &lt;&lt; 2) ^ (0x1B &lt;&lt; 1) ^ 0x1B</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;};</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment">// Multiply x by 2 in the Galois field, to achieve the effect of the following:</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment">// if (x &amp; 0x80)</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment">// return (x &lt;&lt; 1) ^ 0x1B;</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment">// else</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment">// return (x &lt;&lt; 1);</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment">// However, we don&#39;t want to use runtime conditionals if we can help it</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment">// to avoid leaking timing information from the implementation.</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment">// In this case, multiplication is slightly faster than table lookup on AVR.</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="preprocessor">#define gmul2(x) (t = ((uint16_t)(x)) &lt;&lt; 1, \</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="preprocessor"> ((uint8_t)t) ^ (uint8_t)(0x1B * ((uint8_t)(t &gt;&gt; 8))))</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment">// Multiply x by 4 in the Galois field.</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="preprocessor">#define gmul4(x) (t = ((uint16_t)(x)) &lt;&lt; 2, ((uint8_t)t) ^ K[t &gt;&gt; 8])</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment">// Multiply x by 8 in the Galois field.</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor">#define gmul8(x) (t = ((uint16_t)(x)) &lt;&lt; 3, ((uint8_t)t) ^ K[t &gt;&gt; 8])</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor">#define OUT(col, row) output[(col) * 4 + (row)]</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define IN(col, row) input[(col) * 4 + (row)]</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="keywordtype">void</span> AESCommon::subBytesAndShiftRows(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; OUT(0, 0) = pgm_read_byte(sbox + IN(0, 0));</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; OUT(0, 1) = pgm_read_byte(sbox + IN(1, 1));</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; OUT(0, 2) = pgm_read_byte(sbox + IN(2, 2));</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; OUT(0, 3) = pgm_read_byte(sbox + IN(3, 3));</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; OUT(1, 0) = pgm_read_byte(sbox + IN(1, 0));</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; OUT(1, 1) = pgm_read_byte(sbox + IN(2, 1));</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; OUT(1, 2) = pgm_read_byte(sbox + IN(3, 2));</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; OUT(1, 3) = pgm_read_byte(sbox + IN(0, 3));</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; OUT(2, 0) = pgm_read_byte(sbox + IN(2, 0));</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; OUT(2, 1) = pgm_read_byte(sbox + IN(3, 1));</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; OUT(2, 2) = pgm_read_byte(sbox + IN(0, 2));</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; OUT(2, 3) = pgm_read_byte(sbox + IN(1, 3));</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; OUT(3, 0) = pgm_read_byte(sbox + IN(3, 0));</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; OUT(3, 1) = pgm_read_byte(sbox + IN(0, 1));</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; OUT(3, 2) = pgm_read_byte(sbox + IN(1, 2));</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; OUT(3, 3) = pgm_read_byte(sbox + IN(2, 3));</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;}</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="keywordtype">void</span> AESCommon::inverseShiftRowsAndSubBytes(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; OUT(0, 0) = pgm_read_byte(sbox_inverse + IN(0, 0));</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; OUT(0, 1) = pgm_read_byte(sbox_inverse + IN(3, 1));</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; OUT(0, 2) = pgm_read_byte(sbox_inverse + IN(2, 2));</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; OUT(0, 3) = pgm_read_byte(sbox_inverse + IN(1, 3));</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; OUT(1, 0) = pgm_read_byte(sbox_inverse + IN(1, 0));</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; OUT(1, 1) = pgm_read_byte(sbox_inverse + IN(0, 1));</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; OUT(1, 2) = pgm_read_byte(sbox_inverse + IN(3, 2));</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; OUT(1, 3) = pgm_read_byte(sbox_inverse + IN(2, 3));</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; OUT(2, 0) = pgm_read_byte(sbox_inverse + IN(2, 0));</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; OUT(2, 1) = pgm_read_byte(sbox_inverse + IN(1, 1));</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; OUT(2, 2) = pgm_read_byte(sbox_inverse + IN(0, 2));</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; OUT(2, 3) = pgm_read_byte(sbox_inverse + IN(3, 3));</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; OUT(3, 0) = pgm_read_byte(sbox_inverse + IN(3, 0));</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; OUT(3, 1) = pgm_read_byte(sbox_inverse + IN(2, 1));</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; OUT(3, 2) = pgm_read_byte(sbox_inverse + IN(1, 2));</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; OUT(3, 3) = pgm_read_byte(sbox_inverse + IN(0, 3));</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;</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="keywordtype">void</span> AESCommon::mixColumn(uint8_t *output, uint8_t *input)</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; uint16_t t; <span class="comment">// Needed by the gmul2 macro.</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; uint8_t a = input[0];</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; uint8_t b = input[1];</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; uint8_t c = input[2];</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; uint8_t d = input[3];</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; uint8_t a2 = gmul2(a);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; uint8_t b2 = gmul2(b);</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; uint8_t c2 = gmul2(c);</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; uint8_t d2 = gmul2(d);</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; output[0] = a2 ^ b2 ^ b ^ c ^ d;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; output[1] = a ^ b2 ^ c2 ^ c ^ d;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; output[2] = a ^ b ^ c2 ^ d2 ^ d;</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; output[3] = a2 ^ a ^ b ^ c ^ d2;</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;</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="keywordtype">void</span> AESCommon::inverseMixColumn(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; uint16_t t; <span class="comment">// Needed by the gmul2, gmul4, and gmul8 macros.</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; uint8_t a = input[0];</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; uint8_t b = input[1];</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; uint8_t c = input[2];</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; uint8_t d = input[3];</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; uint8_t a2 = gmul2(a);</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; uint8_t b2 = gmul2(b);</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; uint8_t c2 = gmul2(c);</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; uint8_t d2 = gmul2(d);</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; uint8_t a4 = gmul4(a);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; uint8_t b4 = gmul4(b);</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; uint8_t c4 = gmul4(c);</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; uint8_t d4 = gmul4(d);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; uint8_t a8 = gmul8(a);</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; uint8_t b8 = gmul8(b);</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; uint8_t c8 = gmul8(c);</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; uint8_t d8 = gmul8(d);</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; output[0] = a8 ^ a4 ^ a2 ^ b8 ^ b2 ^ b ^ c8 ^ c4 ^ c ^ d8 ^ d;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; output[1] = a8 ^ a ^ b8 ^ b4 ^ b2 ^ c8 ^ c2 ^ c ^ d8 ^ d4 ^ d;</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; output[2] = a8 ^ a4 ^ a ^ b8 ^ b ^ c8 ^ c4 ^ c2 ^ d8 ^ d2 ^ d;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; output[3] = a8 ^ a2 ^ a ^ b8 ^ b4 ^ b ^ c8 ^ c ^ d8 ^ d4 ^ d2;</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;}</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div>
<div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296"> 270</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296">AESCommon::encryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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="keyword">const</span> uint8_t *roundKey = schedule;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; uint8_t posn;</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; uint8_t state1[16];</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; uint8_t state2[16];</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; <span class="comment">// Copy the input into the state and XOR with the first round key.</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; state1[posn] = input[posn] ^ roundKey[posn];</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; roundKey += 16;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// Perform all rounds except the last.</span></div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">for</span> (round = rounds; round &gt; 1; --round) {</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; subBytesAndShiftRows(state2, state1);</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; mixColumn(state1, state2);</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; mixColumn(state1 + 4, state2 + 4);</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; mixColumn(state1 + 8, state2 + 8);</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; mixColumn(state1 + 12, state2 + 12);</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; state1[posn] ^= roundKey[posn];</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; roundKey += 16;</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="comment">// Perform the final round.</span></div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; subBytesAndShiftRows(state2, state1);</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; output[posn] = state2[posn] ^ roundKey[posn];</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;</div>
<div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classAESCommon.html#a95a806adf42f975765ff62907efdc639"> 301</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESCommon.html#a95a806adf42f975765ff62907efdc639">AESCommon::decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;{</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keyword">const</span> uint8_t *roundKey = schedule + rounds * 16;</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; uint8_t round;</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; uint8_t posn;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; uint8_t state1[16];</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; uint8_t state2[16];</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">// Copy the input into the state and reverse the final round.</span></div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; state1[posn] = input[posn] ^ roundKey[posn];</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; inverseShiftRowsAndSubBytes(state2, state1);</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="comment">// Perform all other rounds in reverse.</span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">for</span> (round = rounds; round &gt; 1; --round) {</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; roundKey -= 16;</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; state2[posn] ^= roundKey[posn];</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; inverseMixColumn(state1, state2);</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; inverseMixColumn(state1 + 4, state2 + 4);</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; inverseMixColumn(state1 + 8, state2 + 8);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; inverseMixColumn(state1 + 12, state2 + 12);</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; inverseShiftRowsAndSubBytes(state2, state1);</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;</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="comment">// Reverse the initial round and create the output words.</span></div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; roundKey -= 16;</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">for</span> (posn = 0; posn &lt; 16; ++posn)</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; output[posn] = state2[posn] ^ roundKey[posn];</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;}</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"><a class="line" href="classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6"> 332</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6">AESCommon::clear</a>()</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; clean(schedule, (rounds + 1) * 16);</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="l00339"></a><span class="lineno"> 339</span>&#160;<span class="keywordtype">void</span> AESCommon::keyScheduleCore(uint8_t *output, <span class="keyword">const</span> uint8_t *input, uint8_t iteration)</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;{</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="comment">// Rcon(i), 2^i in the Rijndael finite field, for i = 0..10.</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="comment">// http://en.wikipedia.org/wiki/Rijndael_key_schedule</span></div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">static</span> uint8_t <span class="keyword">const</span> rcon[11] PROGMEM = {</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, <span class="comment">// 0x00</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; 0x80, 0x1B, 0x36</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; output[0] = pgm_read_byte(sbox + input[1]) ^ pgm_read_byte(rcon + iteration);</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; output[1] = pgm_read_byte(sbox + input[2]);</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; output[2] = pgm_read_byte(sbox + input[3]);</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; output[3] = pgm_read_byte(sbox + input[0]);</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;</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="keywordtype">void</span> AESCommon::applySbox(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; output[0] = pgm_read_byte(sbox + input[0]);</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; output[1] = pgm_read_byte(sbox + input[1]);</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; output[2] = pgm_read_byte(sbox + input[2]);</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; output[3] = pgm_read_byte(sbox + input[3]);</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;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="preprocessor">#endif // CRYPTO_AES_DEFAULT</span></div>
<div class="ttc" id="classAESCommon_html_a95a806adf42f975765ff62907efdc639"><div class="ttname"><a href="classAESCommon.html#a95a806adf42f975765ff62907efdc639">AESCommon::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00301">AESCommon.cpp:301</a></div></div>
<div class="ttc" id="classAESCommon_html_acf224a392659429bac80dc68c7471b21"><div class="ttname"><a href="classAESCommon.html#acf224a392659429bac80dc68c7471b21">AESCommon::AESCommon</a></div><div class="ttdeci">AESCommon()</div><div class="ttdoc">Constructs an AES block cipher object. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00127">AESCommon.cpp:127</a></div></div>
<div class="ttc" id="classAESCommon_html_ae26afdcc6d18e8888974acae16df1413"><div class="ttname"><a href="classAESCommon.html#ae26afdcc6d18e8888974acae16df1413">AESCommon::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of an AES block in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00144">AESCommon.cpp:144</a></div></div>
<div class="ttc" id="classAESCommon_html_a8f67970c86c23affb0297fc1bb10fad8"><div class="ttname"><a href="classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8">AESCommon::~AESCommon</a></div><div class="ttdeci">virtual ~AESCommon()</div><div class="ttdoc">Destroys this AES block cipher object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00136">AESCommon.cpp:136</a></div></div>
<div class="ttc" id="classAESCommon_html_a83e43f7d07e31d90fd7b768a93ecfce6"><div class="ttname"><a href="classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6">AESCommon::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00332">AESCommon.cpp:332</a></div></div>
<div class="ttc" id="classAESCommon_html_a2d95f6159abfcd92b5841f9018e44296"><div class="ttname"><a href="classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296">AESCommon::encryptBlock</a></div><div class="ttdeci">void encryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Encrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00270">AESCommon.cpp:270</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: TelnetDefs.h Source File</title>
<title>Arduino Cryptography Library: AESEsp32.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -80,16 +79,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_1de32c476debcefedf4aa8bb43bea551.html">Shell</a></li> </ul>
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_e2ce51835550ba18edf07a8311722290.html">Crypto</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">TelnetDefs.h</div> </div>
<div class="title">AESEsp32.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) 2016 Southern Storm Software, Pty Ltd.</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (C) 2018 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>
@ -110,102 +109,84 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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 TELNET_DEFS_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define TELNET_DEFS_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">// References:</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// https://tools.ietf.org/html/rfc854</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// http://www.iana.org/assignments/telnet-options/telnet-options.xhtml</span></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">namespace </span>TelnetDefs</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;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">enum</span> Command</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; EndOfFile = 236, </div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; Suspend = 237, </div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; Abort = 238, </div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; EndOfRecord = 239, </div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SubEnd = 240, </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; NOP = 241, </div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; DataMark = 242, </div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; Break = 243, </div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; Interrupt = 244, </div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; AbortOutput = 245, </div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; AreYouThere = 246, </div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; EraseChar = 247, </div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; EraseLine = 248, </div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; GoAhead = 249, </div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; SubStart = 250, </div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; WILL = 251, </div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; WONT = 252, </div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; DO = 253, </div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; DONT = 254, </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; IAC = 255 </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;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="keyword">enum</span> Option</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; Binary = 0, </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; Echo = 1, </div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; Reconnection = 2, </div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; SuppressGoAhead = 3, </div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; ApproxMsgSize = 4, </div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; Status = 5, </div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; TimingMark = 6, </div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; RemoteTransmitEcho = 7, </div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; LineWidth = 8, </div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; PageSize = 9, </div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; CarriageReturn = 10, </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; HorzTabStops = 11, </div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; HorzTabStopDisp = 12, </div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; FormFeed = 13, </div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; VertTabStops = 14, </div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; VertTabStopDisp = 15, </div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; LineFeed = 16, </div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; ExtendedASCII = 17, </div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; Logout = 18, </div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; ByteMacro = 19, </div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; DataEntryTerminal = 20, </div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; SUPDUP = 21, </div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; SUPDUPOutput = 22, </div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; SendLocation = 23, </div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; TerminalType = 24, </div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; EndOfRecordOption = 25, </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; TACACSUserId = 26, </div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; OutputMarking = 27, </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; TerminalLocation = 28, </div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; Telnet3270Regime = 29, </div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; X3Pad = 30, </div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; WindowSize = 31, </div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; Speed = 32, </div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; RemoteFlowControl = 33, </div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; Linemode = 34, </div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; XDisplay = 35, </div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; EnvironmentOld = 36, </div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; Authentication = 37, </div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; Encryption = 38, </div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; Environment = 39, </div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; TN3270E = 40, </div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; XAUTH = 41, </div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; Charset = 42, </div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; RemoteSerialPort = 43, </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; ComPortControl = 44, </div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; SuppressLocalEcho = 45, </div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; StartTLS = 46, </div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; Kermit = 47, </div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; SendURL = 48, </div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; ForwardX = 49, </div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; Extended = 255 </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"> 115</span>&#160;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;AES.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;Crypto.h&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// AES implementation for ESP32 using the hardware crypto module.</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="preprocessor">#if defined(CRYPTO_AES_ESP32)</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;<a class="code" href="classAESCommon.html#acf224a392659429bac80dc68c7471b21">AESCommon::AESCommon</a>(uint8_t keySize)</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; ctx.key_bytes = <a class="code" href="classBlockCipher.html#afde6004a859e015d877eab3c37042a0f">keySize</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"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<a class="code" href="classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8">AESCommon::~AESCommon</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; clean(ctx.key, <span class="keyword">sizeof</span>(ctx.key));</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="keywordtype">size_t</span> <a class="code" href="classAESCommon.html#ae26afdcc6d18e8888974acae16df1413">AESCommon::blockSize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> 16;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classBlockCipher.html#afde6004a859e015d877eab3c37042a0f">AESCommon::keySize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> ctx.key_bytes;</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="keywordtype">bool</span> <a class="code" href="classBlockCipher.html#a9a05307664469777592799c8f77397c4">AESCommon::setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len)</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="keywordflow">if</span> (len == ctx.key_bytes) {</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// Do the effect of esp_aes_setkey() which is just a memcpy().</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; memcpy(ctx.key, key, len);</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</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; <span class="keywordflow">return</span> <span class="keyword">false</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="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296">AESCommon::encryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; esp_aes_encrypt(&amp;ctx, input, output);</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="keywordtype">void</span> <a class="code" href="classAESCommon.html#a95a806adf42f975765ff62907efdc639">AESCommon::decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input)</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; esp_aes_decrypt(&amp;ctx, input, output);</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="l00071"></a><span class="lineno"> 71</span>&#160;<span class="keywordtype">void</span> <a class="code" href="classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6">AESCommon::clear</a>()</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; clean(ctx.key, <span class="keyword">sizeof</span>(ctx.key));</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="l00076"></a><span class="lineno"> 76</span>&#160;AES128::~AES128()</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;}</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;AES192::~AES192()</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="l00084"></a><span class="lineno"> 84</span>&#160;AES256::~AES256()</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;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor">#endif // CRYPTO_AES_ESP32</span></div>
<div class="ttc" id="classAESCommon_html_a95a806adf42f975765ff62907efdc639"><div class="ttname"><a href="classAESCommon.html#a95a806adf42f975765ff62907efdc639">AESCommon::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00301">AESCommon.cpp:301</a></div></div>
<div class="ttc" id="classAESCommon_html_acf224a392659429bac80dc68c7471b21"><div class="ttname"><a href="classAESCommon.html#acf224a392659429bac80dc68c7471b21">AESCommon::AESCommon</a></div><div class="ttdeci">AESCommon()</div><div class="ttdoc">Constructs an AES block cipher object. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00127">AESCommon.cpp:127</a></div></div>
<div class="ttc" id="classAESCommon_html_ae26afdcc6d18e8888974acae16df1413"><div class="ttname"><a href="classAESCommon.html#ae26afdcc6d18e8888974acae16df1413">AESCommon::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of an AES block in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00144">AESCommon.cpp:144</a></div></div>
<div class="ttc" id="classAESCommon_html_a8f67970c86c23affb0297fc1bb10fad8"><div class="ttname"><a href="classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8">AESCommon::~AESCommon</a></div><div class="ttdeci">virtual ~AESCommon()</div><div class="ttdoc">Destroys this AES block cipher object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00136">AESCommon.cpp:136</a></div></div>
<div class="ttc" id="classAESCommon_html_a83e43f7d07e31d90fd7b768a93ecfce6"><div class="ttname"><a href="classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6">AESCommon::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00332">AESCommon.cpp:332</a></div></div>
<div class="ttc" id="classAESCommon_html_a2d95f6159abfcd92b5841f9018e44296"><div class="ttname"><a href="classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296">AESCommon::encryptBlock</a></div><div class="ttdeci">void encryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Encrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00270">AESCommon.cpp:270</a></div></div>
<div class="ttc" id="classBlockCipher_html_a9a05307664469777592799c8f77397c4"><div class="ttname"><a href="classBlockCipher.html#a9a05307664469777592799c8f77397c4">BlockCipher::setKey</a></div><div class="ttdeci">virtual bool setKey(const uint8_t *key, size_t len)=0</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div></div>
<div class="ttc" id="classBlockCipher_html_afde6004a859e015d877eab3c37042a0f"><div class="ttname"><a href="classBlockCipher.html#afde6004a859e015d877eab3c37042a0f">BlockCipher::keySize</a></div><div class="ttdeci">virtual size_t keySize() const =0</div><div class="ttdoc">Default size of the key for this block cipher, in bytes. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: AES.h Source File</title>
<title>Arduino Cryptography Library: AES.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -115,206 +114,284 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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;BlockCipher.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="classAESTiny128.html">AESTiny128</a>;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">class </span><a class="code" href="classAESTiny256.html">AESTiny256</a>;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">class </span><a class="code" href="classAESSmall128.html">AESSmall128</a>;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">class </span><a class="code" href="classAESSmall256.html">AESSmall256</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"><a class="line" href="classAESCommon.html"> 33</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAESCommon.html">AESCommon</a> : <span class="keyword">public</span> <a class="code" href="classBlockCipher.html">BlockCipher</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"> 35</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8">~AESCommon</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">size_t</span> <a class="code" href="classAESCommon.html#ae26afdcc6d18e8888974acae16df1413">blockSize</a>() <span class="keyword">const</span>;</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; <span class="keywordtype">void</span> <a class="code" href="classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296">encryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAESCommon.html#a95a806adf42f975765ff62907efdc639">decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</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="classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6">clear</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="keyword">protected</span>:</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classAESCommon.html#acf224a392659429bac80dc68c7471b21">AESCommon</a>();</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; uint8_t rounds;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; uint8_t *schedule;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// Determine which AES implementation to export to applications.</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#if defined(ESP32)</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CRYPTO_AES_ESP32 1</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CRYPTO_AES_DEFAULT 1</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#if defined(CRYPTO_AES_DEFAULT) || defined(CRYPTO_DOC)</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="keyword">class </span><a class="code" href="classAESTiny128.html">AESTiny128</a>;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">class </span><a class="code" href="classAESTiny256.html">AESTiny256</a>;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">class </span><a class="code" href="classAESSmall128.html">AESSmall128</a>;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">class </span><a class="code" href="classAESSmall256.html">AESSmall256</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="line" href="classAESCommon.html"> 42</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAESCommon.html">AESCommon</a> : <span class="keyword">public</span> <a class="code" href="classBlockCipher.html">BlockCipher</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"> 44</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8">~AESCommon</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="keywordtype">size_t</span> <a class="code" href="classAESCommon.html#ae26afdcc6d18e8888974acae16df1413">blockSize</a>() <span class="keyword">const</span>;</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="keywordtype">void</span> <a class="code" href="classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296">encryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAESCommon.html#a95a806adf42f975765ff62907efdc639">decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</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="keyword">static</span> <span class="keywordtype">void</span> subBytesAndShiftRows(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> inverseShiftRowsAndSubBytes(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> mixColumn(uint8_t *output, uint8_t *input);</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> inverseMixColumn(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> keyScheduleCore(uint8_t *output, <span class="keyword">const</span> uint8_t *input, uint8_t iteration);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> applySbox(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classAESTiny128.html">AESTiny128</a>;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classAESTiny256.html">AESTiny256</a>;</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="classAESSmall128.html">AESSmall128</a>;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classAESSmall256.html">AESSmall256</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="line" href="classAES128.html"> 66</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAES128.html">AES128</a> : <span class="keyword">public</span> <a class="code" href="classAESCommon.html">AESCommon</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">public</span>:</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="classAES128.html#af826ce33301767919bb60f27ad3ff693">AES128</a>();</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAES128.html">AES128</a>();</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">size_t</span> <a class="code" href="classAES128.html#aa871832a156f0ea61b964e489670ae9d">keySize</a>() <span class="keyword">const</span>;</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; <span class="keywordtype">bool</span> <a class="code" href="classAES128.html#a42d7548eb5084a2c3e2d5aa5f6f98ba4">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</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; uint8_t sched[176];</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"><a class="line" href="classAES192.html"> 80</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAES192.html">AES192</a> : <span class="keyword">public</span> <a class="code" href="classAESCommon.html">AESCommon</a></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;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classAES192.html#a6f8e457cfffdc12f7dd829e3ac4585ce">AES192</a>();</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAES192.html">AES192</a>();</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="keywordtype">size_t</span> <a class="code" href="classAES192.html#ade28843e51e262b30eb55791c83fd791">keySize</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">bool</span> <a class="code" href="classAES192.html#a4ab37cff19fb05ceef1533ebc5e37cde">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</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="keyword">private</span>:</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; uint8_t sched[208];</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;};</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div>
<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classAES256.html"> 94</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAES256.html">AES256</a> : <span class="keyword">public</span> <a class="code" href="classAESCommon.html">AESCommon</a></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">public</span>:</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classAES256.html#a3b2cbe56f03a87ec4260be4f8914fb02">AES256</a>();</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAES256.html">AES256</a>();</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classAES256.html#af8ed6412bae6fc78274f60344899366a">keySize</a>() <span class="keyword">const</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">bool</span> <a class="code" href="classAES256.html#a6af085d2d6a730ff1e025f982121bbda">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</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="keyword">private</span>:</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; uint8_t sched[240];</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"><a class="line" href="classAESTiny256.html"> 108</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAESTiny256.html">AESTiny256</a> : <span class="keyword">public</span> <a class="code" href="classBlockCipher.html">BlockCipher</a></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classAESTiny256.html#a7af85adfdbd0a3bb68ef5a8f76102043">AESTiny256</a>();</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAESTiny256.html">AESTiny256</a>();</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="keywordtype">size_t</span> <a class="code" href="classAESTiny256.html#a3f48f55b7600dfc672acda899928de76">blockSize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classAESTiny256.html#a7b5a2ba4829e79283c53248d3d8a7a06">keySize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6">clear</a>();</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="keyword">protected</span>:</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classAESCommon.html#acf224a392659429bac80dc68c7471b21">AESCommon</a>();</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; uint8_t rounds;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; uint8_t *schedule;</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="keyword">static</span> <span class="keywordtype">void</span> subBytesAndShiftRows(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> inverseShiftRowsAndSubBytes(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> mixColumn(uint8_t *output, uint8_t *input);</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> inverseMixColumn(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> keyScheduleCore(uint8_t *output, <span class="keyword">const</span> uint8_t *input, uint8_t iteration);</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> applySbox(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classAESTiny128.html">AESTiny128</a>;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classAESTiny256.html">AESTiny256</a>;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classAESSmall128.html">AESSmall128</a>;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classAESSmall256.html">AESSmall256</a>;</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"><a class="line" href="classAES128.html"> 75</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAES128.html">AES128</a> : <span class="keyword">public</span> <a class="code" href="classAESCommon.html">AESCommon</a></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;{</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="classAES128.html#af826ce33301767919bb60f27ad3ff693">AES128</a>();</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAES128.html">AES128</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="keywordtype">size_t</span> <a class="code" href="classAES128.html#aa871832a156f0ea61b964e489670ae9d">keySize</a>() <span class="keyword">const</span>;</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">bool</span> <a class="code" href="classAES128.html#a42d7548eb5084a2c3e2d5aa5f6f98ba4">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</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">private</span>:</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; uint8_t sched[176];</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;</div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classAES192.html"> 89</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAES192.html">AES192</a> : <span class="keyword">public</span> <a class="code" href="classAESCommon.html">AESCommon</a></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;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classAES192.html#a6f8e457cfffdc12f7dd829e3ac4585ce">AES192</a>();</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAES192.html">AES192</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">size_t</span> <a class="code" href="classAES192.html#ade28843e51e262b30eb55791c83fd791">keySize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classAES192.html#a4ab37cff19fb05ceef1533ebc5e37cde">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</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="keyword">private</span>:</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; uint8_t sched[208];</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="line" href="classAES256.html"> 103</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAES256.html">AES256</a> : <span class="keyword">public</span> <a class="code" href="classAESCommon.html">AESCommon</a></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="keyword">public</span>:</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classAES256.html#a3b2cbe56f03a87ec4260be4f8914fb02">AES256</a>();</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAES256.html">AES256</a>();</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="keywordtype">size_t</span> <a class="code" href="classAES256.html#af8ed6412bae6fc78274f60344899366a">keySize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classAES256.html#a6af085d2d6a730ff1e025f982121bbda">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; uint8_t sched[240];</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; <span class="keywordtype">bool</span> <a class="code" href="classAESTiny256.html#abc162075b181bfca34144f4eec6deec7">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAESTiny256.html#a36e4ffc85f7d7604d01a5629c185d0ef">encryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAESTiny256.html#abdf72a52c37c060a9089693c118585bc">decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</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; <span class="keywordtype">void</span> <a class="code" href="classAESTiny256.html#ae4cac6af2e78cbf399b7f6d0e613a578">clear</a>();</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="keyword">private</span>:</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; uint8_t schedule[32];</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;};</div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classAESTiny256.html"> 117</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAESTiny256.html">AESTiny256</a> : <span class="keyword">public</span> <a class="code" href="classBlockCipher.html">BlockCipher</a></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;{</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classAESTiny256.html#a7af85adfdbd0a3bb68ef5a8f76102043">AESTiny256</a>();</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAESTiny256.html">AESTiny256</a>();</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="keywordtype">size_t</span> <a class="code" href="classAESTiny256.html#a3f48f55b7600dfc672acda899928de76">blockSize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classAESTiny256.html#a7b5a2ba4829e79283c53248d3d8a7a06">keySize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classAESTiny256.html#abc162075b181bfca34144f4eec6deec7">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</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="line" href="classAESSmall256.html"> 128</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAESSmall256.html">AESSmall256</a> : <span class="keyword">public</span> <a class="code" href="classAESTiny256.html">AESTiny256</a></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;{</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="classAESSmall256.html#aa343b59af73ad6c86541907f53f5572b">AESSmall256</a>();</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAESSmall256.html">AESSmall256</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; <span class="keywordtype">bool</span> <a class="code" href="classAESSmall256.html#ae7e05119a6183d5f7fc520206f97c0e0">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</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="keywordtype">void</span> <a class="code" href="classAESSmall256.html#aaba6d59d07d2f40efa8c962375c15888">decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</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="keywordtype">void</span> <a class="code" href="classAESSmall256.html#ac63bf2dff7de8a73ba57f4bb0f1df444">clear</a>();</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="keyword">private</span>:</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; uint8_t reverse[32];</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"><a class="line" href="classAESTiny128.html"> 144</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAESTiny128.html">AESTiny128</a> : <span class="keyword">public</span> <a class="code" href="classBlockCipher.html">BlockCipher</a></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="keyword">public</span>:</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classAESTiny128.html#a24682489d5af52f16c7ba2bc4b1116e8">AESTiny128</a>();</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAESTiny128.html">AESTiny128</a>();</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="keywordtype">size_t</span> <a class="code" href="classAESTiny128.html#ad00941c5ed48c413b30636420fd42a2e">blockSize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classAESTiny128.html#a6ff732873f0df88d93c3f7df1fb7a168">keySize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAESTiny256.html#a36e4ffc85f7d7604d01a5629c185d0ef">encryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAESTiny256.html#abdf72a52c37c060a9089693c118585bc">decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</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="classAESTiny256.html#ae4cac6af2e78cbf399b7f6d0e613a578">clear</a>();</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="keyword">private</span>:</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; uint8_t schedule[32];</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"><a class="line" href="classAESSmall256.html"> 137</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAESSmall256.html">AESSmall256</a> : <span class="keyword">public</span> <a class="code" href="classAESTiny256.html">AESTiny256</a></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="keyword">public</span>:</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="classAESSmall256.html#aa343b59af73ad6c86541907f53f5572b">AESSmall256</a>();</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAESSmall256.html">AESSmall256</a>();</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classAESSmall256.html#ae7e05119a6183d5f7fc520206f97c0e0">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</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="keywordtype">void</span> <a class="code" href="classAESSmall256.html#aaba6d59d07d2f40efa8c962375c15888">decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</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="keywordtype">void</span> <a class="code" href="classAESSmall256.html#ac63bf2dff7de8a73ba57f4bb0f1df444">clear</a>();</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; uint8_t reverse[32];</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; <span class="keywordtype">bool</span> <a class="code" href="classAESTiny128.html#a475b147be367e6053ff64e30bf79694c">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</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="keywordtype">void</span> <a class="code" href="classAESTiny128.html#a9e343baf2c3c815f8482222c52ebb3a3">encryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAESTiny128.html#a631c417a0f12c7e43f633c555b950182">decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAESTiny128.html#a17e56d025f9e55041150953d8561c793">clear</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;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; uint8_t schedule[16];</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;};</div>
<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classAESTiny128.html"> 153</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAESTiny128.html">AESTiny128</a> : <span class="keyword">public</span> <a class="code" href="classBlockCipher.html">BlockCipher</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;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classAESTiny128.html#a24682489d5af52f16c7ba2bc4b1116e8">AESTiny128</a>();</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAESTiny128.html">AESTiny128</a>();</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="keywordtype">size_t</span> <a class="code" href="classAESTiny128.html#ad00941c5ed48c413b30636420fd42a2e">blockSize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classAESTiny128.html#a6ff732873f0df88d93c3f7df1fb7a168">keySize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classAESTiny128.html#a475b147be367e6053ff64e30bf79694c">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</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"><a class="line" href="classAESSmall128.html"> 164</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAESSmall128.html">AESSmall128</a> : <span class="keyword">public</span> <a class="code" href="classAESTiny128.html">AESTiny128</a></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="keyword">public</span>:</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="classAESSmall128.html#abfa3d897d55524dadb1afbdc45eaed5e">AESSmall128</a>();</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAESSmall128.html">AESSmall128</a>();</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classAESSmall128.html#a6ca13e59f88498c8c3da338e76f47de5">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</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="keywordtype">void</span> <a class="code" href="classAESSmall128.html#aabdb20c638b2107b5b5e3e41dc6dae26">decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAESSmall128.html#a215b28599d388c2149aba2206d40863d">clear</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;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; uint8_t reverse[16];</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="preprocessor">#endif</span></div>
<div class="ttc" id="classAESTiny256_html_ae4cac6af2e78cbf399b7f6d0e613a578"><div class="ttname"><a href="classAESTiny256.html#ae4cac6af2e78cbf399b7f6d0e613a578">AESTiny256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00275">AES256.cpp:275</a></div></div>
<div class="ttc" id="classAESTiny256_html_a7b5a2ba4829e79283c53248d3d8a7a06"><div class="ttname"><a href="classAESTiny256.html#a7b5a2ba4829e79283c53248d3d8a7a06">AESTiny256::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 256-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00209">AES256.cpp:209</a></div></div>
<div class="ttc" id="classAESTiny256_html"><div class="ttname"><a href="classAESTiny256.html">AESTiny256</a></div><div class="ttdoc">AES block cipher with 256-bit keys and tiny memory usage. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00108">AES.h:108</a></div></div>
<div class="ttc" id="classAESTiny128_html_a6ff732873f0df88d93c3f7df1fb7a168"><div class="ttname"><a href="classAESTiny128.html#a6ff732873f0df88d93c3f7df1fb7a168">AESTiny128::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 128-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00172">AES128.cpp:172</a></div></div>
<div class="ttc" id="classAESTiny128_html_a17e56d025f9e55041150953d8561c793"><div class="ttname"><a href="classAESTiny128.html#a17e56d025f9e55041150953d8561c793">AESTiny128::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00238">AES128.cpp:238</a></div></div>
<div class="ttc" id="classAESCommon_html_a95a806adf42f975765ff62907efdc639"><div class="ttname"><a href="classAESCommon.html#a95a806adf42f975765ff62907efdc639">AESCommon::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00299">AESCommon.cpp:299</a></div></div>
<div class="ttc" id="classAES256_html"><div class="ttname"><a href="classAES256.html">AES256</a></div><div class="ttdoc">AES block cipher with 256-bit keys. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00094">AES.h:94</a></div></div>
<div class="ttc" id="classAESTiny128_html"><div class="ttname"><a href="classAESTiny128.html">AESTiny128</a></div><div class="ttdoc">AES block cipher with 128-bit keys and tiny memory usage. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00144">AES.h:144</a></div></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAESTiny128.html#a9e343baf2c3c815f8482222c52ebb3a3">encryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAESTiny128.html#a631c417a0f12c7e43f633c555b950182">decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</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="keywordtype">void</span> <a class="code" href="classAESTiny128.html#a17e56d025f9e55041150953d8561c793">clear</a>();</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="keyword">private</span>:</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; uint8_t schedule[16];</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="l00173"></a><span class="lineno"><a class="line" href="classAESSmall128.html"> 173</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAESSmall128.html">AESSmall128</a> : <span class="keyword">public</span> <a class="code" href="classAESTiny128.html">AESTiny128</a></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="keyword">public</span>:</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="classAESSmall128.html#abfa3d897d55524dadb1afbdc45eaed5e">AESSmall128</a>();</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAESSmall128.html">AESSmall128</a>();</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="keywordtype">bool</span> <a class="code" href="classAESSmall128.html#a6ca13e59f88498c8c3da338e76f47de5">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</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="keywordtype">void</span> <a class="code" href="classAESSmall128.html#aabdb20c638b2107b5b5e3e41dc6dae26">decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</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="keywordtype">void</span> <a class="code" href="classAESSmall128.html#a215b28599d388c2149aba2206d40863d">clear</a>();</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">private</span>:</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; uint8_t reverse[16];</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;<span class="preprocessor">#endif // CRYPTO_AES_DEFAULT</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="preprocessor">#if defined(CRYPTO_AES_ESP32)</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment">// &quot;hwcrypto/aes.h&quot; includes &quot;rom/aes.h&quot; which defines global enums for</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment">// AES128, AES192, and AES256. The enum definitions interfere with the</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment">// definition of the same-named classes below. The #define&#39;s and #undef&#39;s</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment">// here work around the problem by defining the enums to different names.</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="preprocessor">#define AES128 AES128_enum</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define AES192 AES192_enum</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define AES256 AES256_enum</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &quot;hwcrypto/aes.h&quot;</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="preprocessor">#undef AES128</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef AES192</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef AES256</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="keyword">class </span><a class="code" href="classAESCommon.html">AESCommon</a> : <span class="keyword">public</span> <a class="code" href="classBlockCipher.html">BlockCipher</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="keyword">public</span>:</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8">~AESCommon</a>();</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; <span class="keywordtype">size_t</span> <a class="code" href="classAESCommon.html#ae26afdcc6d18e8888974acae16df1413">blockSize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classBlockCipher.html#afde6004a859e015d877eab3c37042a0f">keySize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classBlockCipher.html#a9a05307664469777592799c8f77397c4">setKey</a>(<span class="keyword">const</span> uint8_t *key, <span class="keywordtype">size_t</span> len);</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="keywordtype">void</span> <a class="code" href="classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296">encryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAESCommon.html#a95a806adf42f975765ff62907efdc639">decryptBlock</a>(uint8_t *output, <span class="keyword">const</span> uint8_t *input);</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="keywordtype">void</span> <a class="code" href="classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6">clear</a>();</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="keyword">protected</span>:</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="classAESCommon.html#acf224a392659429bac80dc68c7471b21">AESCommon</a>(uint8_t <a class="code" href="classBlockCipher.html#afde6004a859e015d877eab3c37042a0f">keySize</a>);</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; esp_aes_context ctx;</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;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="keyword">class </span><a class="code" href="classAES128.html">AES128</a> : <span class="keyword">public</span> <a class="code" href="classAESCommon.html">AESCommon</a></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="keyword">public</span>:</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="classAES128.html#af826ce33301767919bb60f27ad3ff693">AES128</a>() : <a class="code" href="classAESCommon.html">AESCommon</a>(16) {}</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAES128.html">AES128</a>();</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;};</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="keyword">class </span><a class="code" href="classAES192.html">AES192</a> : <span class="keyword">public</span> <a class="code" href="classAESCommon.html">AESCommon</a></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;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="classAES192.html#a6f8e457cfffdc12f7dd829e3ac4585ce">AES192</a>() : <a class="code" href="classAESCommon.html">AESCommon</a>(24) {}</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAES192.html">AES192</a>();</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;<span class="keyword">class </span><a class="code" href="classAES256.html">AES256</a> : <span class="keyword">public</span> <a class="code" href="classAESCommon.html">AESCommon</a></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;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classAES256.html#a3b2cbe56f03a87ec4260be4f8914fb02">AES256</a>() : <a class="code" href="classAESCommon.html">AESCommon</a>(32) {}</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classAES256.html">AES256</a>();</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;</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment">// The ESP32 AES context is so small that it already qualifies as &quot;tiny&quot;.</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classAES128.html">AES128</a> <a class="code" href="classAESTiny128.html">AESTiny128</a>;</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classAES256.html">AES256</a> <a class="code" href="classAESTiny256.html">AESTiny256</a>;</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classAES128.html">AES128</a> <a class="code" href="classAESSmall128.html">AESSmall128</a>;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classAES256.html">AES256</a> <a class="code" href="classAESSmall256.html">AESSmall256</a>;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="preprocessor">#endif // CRYPTO_AES_ESP32</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classAESTiny256_html_ae4cac6af2e78cbf399b7f6d0e613a578"><div class="ttname"><a href="classAESTiny256.html#ae4cac6af2e78cbf399b7f6d0e613a578">AESTiny256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00277">AES256.cpp:277</a></div></div>
<div class="ttc" id="classAESTiny256_html_a7b5a2ba4829e79283c53248d3d8a7a06"><div class="ttname"><a href="classAESTiny256.html#a7b5a2ba4829e79283c53248d3d8a7a06">AESTiny256::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 256-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00211">AES256.cpp:211</a></div></div>
<div class="ttc" id="classAESTiny256_html"><div class="ttname"><a href="classAESTiny256.html">AESTiny256</a></div><div class="ttdoc">AES block cipher with 256-bit keys and tiny memory usage. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00117">AES.h:117</a></div></div>
<div class="ttc" id="classAESTiny128_html_a6ff732873f0df88d93c3f7df1fb7a168"><div class="ttname"><a href="classAESTiny128.html#a6ff732873f0df88d93c3f7df1fb7a168">AESTiny128::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 128-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00174">AES128.cpp:174</a></div></div>
<div class="ttc" id="classAESTiny128_html_a17e56d025f9e55041150953d8561c793"><div class="ttname"><a href="classAESTiny128.html#a17e56d025f9e55041150953d8561c793">AESTiny128::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00240">AES128.cpp:240</a></div></div>
<div class="ttc" id="classAESCommon_html_a95a806adf42f975765ff62907efdc639"><div class="ttname"><a href="classAESCommon.html#a95a806adf42f975765ff62907efdc639">AESCommon::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00301">AESCommon.cpp:301</a></div></div>
<div class="ttc" id="classAES256_html"><div class="ttname"><a href="classAES256.html">AES256</a></div><div class="ttdoc">AES block cipher with 256-bit keys. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00103">AES.h:103</a></div></div>
<div class="ttc" id="classAESTiny128_html"><div class="ttname"><a href="classAESTiny128.html">AESTiny128</a></div><div class="ttdoc">AES block cipher with 128-bit keys and tiny memory usage. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00153">AES.h:153</a></div></div>
<div class="ttc" id="classBlockCipher_html"><div class="ttname"><a href="classBlockCipher.html">BlockCipher</a></div><div class="ttdoc">Abstract base class for block ciphers. </div><div class="ttdef"><b>Definition:</b> <a href="BlockCipher_8h_source.html#l00029">BlockCipher.h:29</a></div></div>
<div class="ttc" id="classAESSmall128_html_aabdb20c638b2107b5b5e3e41dc6dae26"><div class="ttname"><a href="classAESSmall128.html#aabdb20c638b2107b5b5e3e41dc6dae26">AESSmall128::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00304">AES128.cpp:304</a></div></div>
<div class="ttc" id="classAESSmall256_html_aa343b59af73ad6c86541907f53f5572b"><div class="ttname"><a href="classAESSmall256.html#aa343b59af73ad6c86541907f53f5572b">AESSmall256::AESSmall256</a></div><div class="ttdeci">AESSmall256()</div><div class="ttdoc">Constructs an AES 256-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00306">AES256.cpp:306</a></div></div>
<div class="ttc" id="classAESCommon_html_acf224a392659429bac80dc68c7471b21"><div class="ttname"><a href="classAESCommon.html#acf224a392659429bac80dc68c7471b21">AESCommon::AESCommon</a></div><div class="ttdeci">AESCommon()</div><div class="ttdoc">Constructs an AES block cipher object. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00125">AESCommon.cpp:125</a></div></div>
<div class="ttc" id="classAESTiny128_html_a9e343baf2c3c815f8482222c52ebb3a3"><div class="ttname"><a href="classAESTiny128.html#a9e343baf2c3c815f8482222c52ebb3a3">AESTiny128::encryptBlock</a></div><div class="ttdeci">void encryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Encrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00187">AES128.cpp:187</a></div></div>
<div class="ttc" id="classAES128_html_aa871832a156f0ea61b964e489670ae9d"><div class="ttname"><a href="classAES128.html#aa871832a156f0ea61b964e489670ae9d">AES128::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 128-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00055">AES128.cpp:55</a></div></div>
<div class="ttc" id="classAES192_html_a4ab37cff19fb05ceef1533ebc5e37cde"><div class="ttname"><a href="classAES192.html#a4ab37cff19fb05ceef1533ebc5e37cde">AES192::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES192_8cpp_source.html#l00060">AES192.cpp:60</a></div></div>
<div class="ttc" id="classAESCommon_html_ae26afdcc6d18e8888974acae16df1413"><div class="ttname"><a href="classAESCommon.html#ae26afdcc6d18e8888974acae16df1413">AESCommon::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of an AES block in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00142">AESCommon.cpp:142</a></div></div>
<div class="ttc" id="classAESTiny128_html_a631c417a0f12c7e43f633c555b950182"><div class="ttname"><a href="classAESTiny128.html#a631c417a0f12c7e43f633c555b950182">AESTiny128::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00233">AES128.cpp:233</a></div></div>
<div class="ttc" id="classAESSmall128_html_a215b28599d388c2149aba2206d40863d"><div class="ttname"><a href="classAESSmall128.html#a215b28599d388c2149aba2206d40863d">AESSmall128::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00348">AES128.cpp:348</a></div></div>
<div class="ttc" id="classAESCommon_html_a8f67970c86c23affb0297fc1bb10fad8"><div class="ttname"><a href="classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8">AESCommon::~AESCommon</a></div><div class="ttdeci">virtual ~AESCommon()</div><div class="ttdoc">Destroys this AES block cipher object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00134">AESCommon.cpp:134</a></div></div>
<div class="ttc" id="classAESCommon_html_a83e43f7d07e31d90fd7b768a93ecfce6"><div class="ttname"><a href="classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6">AESCommon::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00330">AESCommon.cpp:330</a></div></div>
<div class="ttc" id="classAESTiny256_html_abdf72a52c37c060a9089693c118585bc"><div class="ttname"><a href="classAESTiny256.html#abdf72a52c37c060a9089693c118585bc">AESTiny256::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00270">AES256.cpp:270</a></div></div>
<div class="ttc" id="classAES128_html_a42d7548eb5084a2c3e2d5aa5f6f98ba4"><div class="ttname"><a href="classAES128.html#a42d7548eb5084a2c3e2d5aa5f6f98ba4">AES128::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00060">AES128.cpp:60</a></div></div>
<div class="ttc" id="classAESTiny256_html_a36e4ffc85f7d7604d01a5629c185d0ef"><div class="ttname"><a href="classAESTiny256.html#a36e4ffc85f7d7604d01a5629c185d0ef">AESTiny256::encryptBlock</a></div><div class="ttdeci">void encryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Encrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00224">AES256.cpp:224</a></div></div>
<div class="ttc" id="classAES192_html_ade28843e51e262b30eb55791c83fd791"><div class="ttname"><a href="classAES192.html#ade28843e51e262b30eb55791c83fd791">AES192::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 192-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES192_8cpp_source.html#l00055">AES192.cpp:55</a></div></div>
<div class="ttc" id="classAESSmall256_html_aaba6d59d07d2f40efa8c962375c15888"><div class="ttname"><a href="classAESSmall256.html#aaba6d59d07d2f40efa8c962375c15888">AESSmall256::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00349">AES256.cpp:349</a></div></div>
<div class="ttc" id="classAESTiny128_html_ad00941c5ed48c413b30636420fd42a2e"><div class="ttname"><a href="classAESTiny128.html#ad00941c5ed48c413b30636420fd42a2e">AESTiny128::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of an AES block in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00163">AES128.cpp:163</a></div></div>
<div class="ttc" id="classAESTiny128_html_a24682489d5af52f16c7ba2bc4b1116e8"><div class="ttname"><a href="classAESTiny128.html#a24682489d5af52f16c7ba2bc4b1116e8">AESTiny128::AESTiny128</a></div><div class="ttdeci">AESTiny128()</div><div class="ttdoc">Constructs an AES 128-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00150">AES128.cpp:150</a></div></div>
<div class="ttc" id="classAESCommon_html_a2d95f6159abfcd92b5841f9018e44296"><div class="ttname"><a href="classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296">AESCommon::encryptBlock</a></div><div class="ttdeci">void encryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Encrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00268">AESCommon.cpp:268</a></div></div>
<div class="ttc" id="classAES256_html_a3b2cbe56f03a87ec4260be4f8914fb02"><div class="ttname"><a href="classAES256.html#a3b2cbe56f03a87ec4260be4f8914fb02">AES256::AES256</a></div><div class="ttdeci">AES256()</div><div class="ttdoc">Constructs an AES 256-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00040">AES256.cpp:40</a></div></div>
<div class="ttc" id="classAESCommon_html"><div class="ttname"><a href="classAESCommon.html">AESCommon</a></div><div class="ttdoc">Abstract base class for AES block ciphers. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00033">AES.h:33</a></div></div>
<div class="ttc" id="classAES256_html_a6af085d2d6a730ff1e025f982121bbda"><div class="ttname"><a href="classAES256.html#a6af085d2d6a730ff1e025f982121bbda">AES256::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00060">AES256.cpp:60</a></div></div>
<div class="ttc" id="classAES128_html"><div class="ttname"><a href="classAES128.html">AES128</a></div><div class="ttdoc">AES block cipher with 128-bit keys. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00066">AES.h:66</a></div></div>
<div class="ttc" id="classAESTiny256_html_abc162075b181bfca34144f4eec6deec7"><div class="ttname"><a href="classAESTiny256.html#abc162075b181bfca34144f4eec6deec7">AESTiny256::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00214">AES256.cpp:214</a></div></div>
<div class="ttc" id="classAESSmall256_html_ac63bf2dff7de8a73ba57f4bb0f1df444"><div class="ttname"><a href="classAESSmall256.html#ac63bf2dff7de8a73ba57f4bb0f1df444">AESSmall256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00393">AES256.cpp:393</a></div></div>
<div class="ttc" id="classAESTiny256_html_a7af85adfdbd0a3bb68ef5a8f76102043"><div class="ttname"><a href="classAESTiny256.html#a7af85adfdbd0a3bb68ef5a8f76102043">AESTiny256::AESTiny256</a></div><div class="ttdeci">AESTiny256()</div><div class="ttdoc">Constructs an AES 256-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00187">AES256.cpp:187</a></div></div>
<div class="ttc" id="classAESTiny128_html_a475b147be367e6053ff64e30bf79694c"><div class="ttname"><a href="classAESTiny128.html#a475b147be367e6053ff64e30bf79694c">AESTiny128::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00177">AES128.cpp:177</a></div></div>
<div class="ttc" id="classAES256_html_af8ed6412bae6fc78274f60344899366a"><div class="ttname"><a href="classAES256.html#af8ed6412bae6fc78274f60344899366a">AES256::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 256-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00055">AES256.cpp:55</a></div></div>
<div class="ttc" id="classAESSmall256_html_ae7e05119a6183d5f7fc520206f97c0e0"><div class="ttname"><a href="classAESSmall256.html#ae7e05119a6183d5f7fc520206f97c0e0">AESSmall256::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00315">AES256.cpp:315</a></div></div>
<div class="ttc" id="classAES128_html_af826ce33301767919bb60f27ad3ff693"><div class="ttname"><a href="classAES128.html#af826ce33301767919bb60f27ad3ff693">AES128::AES128</a></div><div class="ttdeci">AES128()</div><div class="ttdoc">Constructs an AES 128-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00040">AES128.cpp:40</a></div></div>
<div class="ttc" id="classAESSmall128_html"><div class="ttname"><a href="classAESSmall128.html">AESSmall128</a></div><div class="ttdoc">AES block cipher with 128-bit keys and reduced memory usage. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00164">AES.h:164</a></div></div>
<div class="ttc" id="classAESTiny256_html_a3f48f55b7600dfc672acda899928de76"><div class="ttname"><a href="classAESTiny256.html#a3f48f55b7600dfc672acda899928de76">AESTiny256::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of an AES block in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00200">AES256.cpp:200</a></div></div>
<div class="ttc" id="classAES192_html"><div class="ttname"><a href="classAES192.html">AES192</a></div><div class="ttdoc">AES block cipher with 192-bit keys. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00080">AES.h:80</a></div></div>
<div class="ttc" id="classAESSmall256_html"><div class="ttname"><a href="classAESSmall256.html">AESSmall256</a></div><div class="ttdoc">AES block cipher with 256-bit keys and reduced memory usage. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00128">AES.h:128</a></div></div>
<div class="ttc" id="classAESSmall128_html_a6ca13e59f88498c8c3da338e76f47de5"><div class="ttname"><a href="classAESSmall128.html#a6ca13e59f88498c8c3da338e76f47de5">AESSmall128::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00278">AES128.cpp:278</a></div></div>
<div class="ttc" id="classAES192_html_a6f8e457cfffdc12f7dd829e3ac4585ce"><div class="ttname"><a href="classAES192.html#a6f8e457cfffdc12f7dd829e3ac4585ce">AES192::AES192</a></div><div class="ttdeci">AES192()</div><div class="ttdoc">Constructs an AES 192-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES192_8cpp_source.html#l00040">AES192.cpp:40</a></div></div>
<div class="ttc" id="classAESSmall128_html_abfa3d897d55524dadb1afbdc45eaed5e"><div class="ttname"><a href="classAESSmall128.html#abfa3d897d55524dadb1afbdc45eaed5e">AESSmall128::AESSmall128</a></div><div class="ttdeci">AESSmall128()</div><div class="ttdoc">Constructs an AES 128-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00269">AES128.cpp:269</a></div></div>
<div class="ttc" id="classAESSmall128_html_aabdb20c638b2107b5b5e3e41dc6dae26"><div class="ttname"><a href="classAESSmall128.html#aabdb20c638b2107b5b5e3e41dc6dae26">AESSmall128::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00306">AES128.cpp:306</a></div></div>
<div class="ttc" id="classAESSmall256_html_aa343b59af73ad6c86541907f53f5572b"><div class="ttname"><a href="classAESSmall256.html#aa343b59af73ad6c86541907f53f5572b">AESSmall256::AESSmall256</a></div><div class="ttdeci">AESSmall256()</div><div class="ttdoc">Constructs an AES 256-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00308">AES256.cpp:308</a></div></div>
<div class="ttc" id="classAESCommon_html_acf224a392659429bac80dc68c7471b21"><div class="ttname"><a href="classAESCommon.html#acf224a392659429bac80dc68c7471b21">AESCommon::AESCommon</a></div><div class="ttdeci">AESCommon()</div><div class="ttdoc">Constructs an AES block cipher object. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00127">AESCommon.cpp:127</a></div></div>
<div class="ttc" id="classAESTiny128_html_a9e343baf2c3c815f8482222c52ebb3a3"><div class="ttname"><a href="classAESTiny128.html#a9e343baf2c3c815f8482222c52ebb3a3">AESTiny128::encryptBlock</a></div><div class="ttdeci">void encryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Encrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00189">AES128.cpp:189</a></div></div>
<div class="ttc" id="classAES128_html_aa871832a156f0ea61b964e489670ae9d"><div class="ttname"><a href="classAES128.html#aa871832a156f0ea61b964e489670ae9d">AES128::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 128-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00057">AES128.cpp:57</a></div></div>
<div class="ttc" id="classAES192_html_a4ab37cff19fb05ceef1533ebc5e37cde"><div class="ttname"><a href="classAES192.html#a4ab37cff19fb05ceef1533ebc5e37cde">AES192::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES192_8cpp_source.html#l00062">AES192.cpp:62</a></div></div>
<div class="ttc" id="classAESCommon_html_ae26afdcc6d18e8888974acae16df1413"><div class="ttname"><a href="classAESCommon.html#ae26afdcc6d18e8888974acae16df1413">AESCommon::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of an AES block in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00144">AESCommon.cpp:144</a></div></div>
<div class="ttc" id="classAESTiny128_html_a631c417a0f12c7e43f633c555b950182"><div class="ttname"><a href="classAESTiny128.html#a631c417a0f12c7e43f633c555b950182">AESTiny128::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00235">AES128.cpp:235</a></div></div>
<div class="ttc" id="classAESSmall128_html_a215b28599d388c2149aba2206d40863d"><div class="ttname"><a href="classAESSmall128.html#a215b28599d388c2149aba2206d40863d">AESSmall128::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00350">AES128.cpp:350</a></div></div>
<div class="ttc" id="classAESCommon_html_a8f67970c86c23affb0297fc1bb10fad8"><div class="ttname"><a href="classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8">AESCommon::~AESCommon</a></div><div class="ttdeci">virtual ~AESCommon()</div><div class="ttdoc">Destroys this AES block cipher object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00136">AESCommon.cpp:136</a></div></div>
<div class="ttc" id="classAESCommon_html_a83e43f7d07e31d90fd7b768a93ecfce6"><div class="ttname"><a href="classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6">AESCommon::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00332">AESCommon.cpp:332</a></div></div>
<div class="ttc" id="classAESTiny256_html_abdf72a52c37c060a9089693c118585bc"><div class="ttname"><a href="classAESTiny256.html#abdf72a52c37c060a9089693c118585bc">AESTiny256::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00272">AES256.cpp:272</a></div></div>
<div class="ttc" id="classAES128_html_a42d7548eb5084a2c3e2d5aa5f6f98ba4"><div class="ttname"><a href="classAES128.html#a42d7548eb5084a2c3e2d5aa5f6f98ba4">AES128::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00062">AES128.cpp:62</a></div></div>
<div class="ttc" id="classAESTiny256_html_a36e4ffc85f7d7604d01a5629c185d0ef"><div class="ttname"><a href="classAESTiny256.html#a36e4ffc85f7d7604d01a5629c185d0ef">AESTiny256::encryptBlock</a></div><div class="ttdeci">void encryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Encrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00226">AES256.cpp:226</a></div></div>
<div class="ttc" id="classAES192_html_ade28843e51e262b30eb55791c83fd791"><div class="ttname"><a href="classAES192.html#ade28843e51e262b30eb55791c83fd791">AES192::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 192-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES192_8cpp_source.html#l00057">AES192.cpp:57</a></div></div>
<div class="ttc" id="classAESSmall256_html_aaba6d59d07d2f40efa8c962375c15888"><div class="ttname"><a href="classAESSmall256.html#aaba6d59d07d2f40efa8c962375c15888">AESSmall256::decryptBlock</a></div><div class="ttdeci">void decryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Decrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00351">AES256.cpp:351</a></div></div>
<div class="ttc" id="classAESTiny128_html_ad00941c5ed48c413b30636420fd42a2e"><div class="ttname"><a href="classAESTiny128.html#ad00941c5ed48c413b30636420fd42a2e">AESTiny128::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of an AES block in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00165">AES128.cpp:165</a></div></div>
<div class="ttc" id="classAESTiny128_html_a24682489d5af52f16c7ba2bc4b1116e8"><div class="ttname"><a href="classAESTiny128.html#a24682489d5af52f16c7ba2bc4b1116e8">AESTiny128::AESTiny128</a></div><div class="ttdeci">AESTiny128()</div><div class="ttdoc">Constructs an AES 128-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00152">AES128.cpp:152</a></div></div>
<div class="ttc" id="classAESCommon_html_a2d95f6159abfcd92b5841f9018e44296"><div class="ttname"><a href="classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296">AESCommon::encryptBlock</a></div><div class="ttdeci">void encryptBlock(uint8_t *output, const uint8_t *input)</div><div class="ttdoc">Encrypts a single block using this cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AESCommon_8cpp_source.html#l00270">AESCommon.cpp:270</a></div></div>
<div class="ttc" id="classAES256_html_a3b2cbe56f03a87ec4260be4f8914fb02"><div class="ttname"><a href="classAES256.html#a3b2cbe56f03a87ec4260be4f8914fb02">AES256::AES256</a></div><div class="ttdeci">AES256()</div><div class="ttdoc">Constructs an AES 256-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00042">AES256.cpp:42</a></div></div>
<div class="ttc" id="classAESCommon_html"><div class="ttname"><a href="classAESCommon.html">AESCommon</a></div><div class="ttdoc">Abstract base class for AES block ciphers. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00042">AES.h:42</a></div></div>
<div class="ttc" id="classBlockCipher_html_a9a05307664469777592799c8f77397c4"><div class="ttname"><a href="classBlockCipher.html#a9a05307664469777592799c8f77397c4">BlockCipher::setKey</a></div><div class="ttdeci">virtual bool setKey(const uint8_t *key, size_t len)=0</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div></div>
<div class="ttc" id="classAES256_html_a6af085d2d6a730ff1e025f982121bbda"><div class="ttname"><a href="classAES256.html#a6af085d2d6a730ff1e025f982121bbda">AES256::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00062">AES256.cpp:62</a></div></div>
<div class="ttc" id="classAES128_html"><div class="ttname"><a href="classAES128.html">AES128</a></div><div class="ttdoc">AES block cipher with 128-bit keys. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00075">AES.h:75</a></div></div>
<div class="ttc" id="classAESTiny256_html_abc162075b181bfca34144f4eec6deec7"><div class="ttname"><a href="classAESTiny256.html#abc162075b181bfca34144f4eec6deec7">AESTiny256::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00216">AES256.cpp:216</a></div></div>
<div class="ttc" id="classAESSmall256_html_ac63bf2dff7de8a73ba57f4bb0f1df444"><div class="ttname"><a href="classAESSmall256.html#ac63bf2dff7de8a73ba57f4bb0f1df444">AESSmall256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all security-sensitive state from this block cipher. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00395">AES256.cpp:395</a></div></div>
<div class="ttc" id="classAESTiny256_html_a7af85adfdbd0a3bb68ef5a8f76102043"><div class="ttname"><a href="classAESTiny256.html#a7af85adfdbd0a3bb68ef5a8f76102043">AESTiny256::AESTiny256</a></div><div class="ttdeci">AESTiny256()</div><div class="ttdoc">Constructs an AES 256-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00189">AES256.cpp:189</a></div></div>
<div class="ttc" id="classAESTiny128_html_a475b147be367e6053ff64e30bf79694c"><div class="ttname"><a href="classAESTiny128.html#a475b147be367e6053ff64e30bf79694c">AESTiny128::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00179">AES128.cpp:179</a></div></div>
<div class="ttc" id="classAES256_html_af8ed6412bae6fc78274f60344899366a"><div class="ttname"><a href="classAES256.html#af8ed6412bae6fc78274f60344899366a">AES256::keySize</a></div><div class="ttdeci">size_t keySize() const </div><div class="ttdoc">Size of a 256-bit AES key in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00057">AES256.cpp:57</a></div></div>
<div class="ttc" id="classAESSmall256_html_ae7e05119a6183d5f7fc520206f97c0e0"><div class="ttname"><a href="classAESSmall256.html#ae7e05119a6183d5f7fc520206f97c0e0">AESSmall256::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00317">AES256.cpp:317</a></div></div>
<div class="ttc" id="classAES128_html_af826ce33301767919bb60f27ad3ff693"><div class="ttname"><a href="classAES128.html#af826ce33301767919bb60f27ad3ff693">AES128::AES128</a></div><div class="ttdeci">AES128()</div><div class="ttdoc">Constructs an AES 128-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00042">AES128.cpp:42</a></div></div>
<div class="ttc" id="classAESSmall128_html"><div class="ttname"><a href="classAESSmall128.html">AESSmall128</a></div><div class="ttdoc">AES block cipher with 128-bit keys and reduced memory usage. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00173">AES.h:173</a></div></div>
<div class="ttc" id="classAESTiny256_html_a3f48f55b7600dfc672acda899928de76"><div class="ttname"><a href="classAESTiny256.html#a3f48f55b7600dfc672acda899928de76">AESTiny256::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of an AES block in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="AES256_8cpp_source.html#l00202">AES256.cpp:202</a></div></div>
<div class="ttc" id="classAES192_html"><div class="ttname"><a href="classAES192.html">AES192</a></div><div class="ttdoc">AES block cipher with 192-bit keys. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00089">AES.h:89</a></div></div>
<div class="ttc" id="classBlockCipher_html_afde6004a859e015d877eab3c37042a0f"><div class="ttname"><a href="classBlockCipher.html#afde6004a859e015d877eab3c37042a0f">BlockCipher::keySize</a></div><div class="ttdeci">virtual size_t keySize() const =0</div><div class="ttdoc">Default size of the key for this block cipher, in bytes. </div></div>
<div class="ttc" id="classAESSmall256_html"><div class="ttname"><a href="classAESSmall256.html">AESSmall256</a></div><div class="ttdoc">AES block cipher with 256-bit keys and reduced memory usage. </div><div class="ttdef"><b>Definition:</b> <a href="AES_8h_source.html#l00137">AES.h:137</a></div></div>
<div class="ttc" id="classAESSmall128_html_a6ca13e59f88498c8c3da338e76f47de5"><div class="ttname"><a href="classAESSmall128.html#a6ca13e59f88498c8c3da338e76f47de5">AESSmall128::setKey</a></div><div class="ttdeci">bool setKey(const uint8_t *key, size_t len)</div><div class="ttdoc">Sets the key to use for future encryption and decryption operations. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00280">AES128.cpp:280</a></div></div>
<div class="ttc" id="classAES192_html_a6f8e457cfffdc12f7dd829e3ac4585ce"><div class="ttname"><a href="classAES192.html#a6f8e457cfffdc12f7dd829e3ac4585ce">AES192::AES192</a></div><div class="ttdeci">AES192()</div><div class="ttdoc">Constructs an AES 192-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES192_8cpp_source.html#l00042">AES192.cpp:42</a></div></div>
<div class="ttc" id="classAESSmall128_html_abfa3d897d55524dadb1afbdc45eaed5e"><div class="ttname"><a href="classAESSmall128.html#abfa3d897d55524dadb1afbdc45eaed5e">AESSmall128::AESSmall128</a></div><div class="ttdeci">AESSmall128()</div><div class="ttdoc">Constructs an AES 128-bit block cipher with no initial key. </div><div class="ttdef"><b>Definition:</b> <a href="AES128_8cpp_source.html#l00271">AES128.cpp:271</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: AuthenticatedCipher.cpp Source File</title>
<title>Arduino Cryptography Library: AuthenticatedCipher.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -125,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: AuthenticatedCipher.h Source File</title>
<title>Arduino Cryptography Library: AuthenticatedCipher.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -141,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: BLAKE2b.cpp Source File</title>
<title>Arduino Cryptography Library: BLAKE2b.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -211,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; state.lengthHigh = 0;</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"><a class="line" href="classBLAKE2b.html#a468e48c66ce1738e11c922d133135069"> 192</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBLAKE2b.html#a468e48c66ce1738e11c922d133135069">BLAKE2b::update</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *<a class="code" href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d">data</a>, <span class="keywordtype">size_t</span> len)</div>
<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classBLAKE2b.html#a468e48c66ce1738e11c922d133135069"> 192</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBLAKE2b.html#a468e48c66ce1738e11c922d133135069">BLAKE2b::update</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> len)</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;{</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// Break the input up into 1024-bit chunks and process each in turn.</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">const</span> uint8_t *d = (<span class="keyword">const</span> uint8_t *)data;</div>
@ -358,14 +357,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="ttc" id="classBLAKE2b_html_a7555de16f6918ab820170a7ed3098c89"><div class="ttname"><a href="classBLAKE2b.html#a7555de16f6918ab820170a7ed3098c89">BLAKE2b::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00089">BLAKE2b.cpp:89</a></div></div>
<div class="ttc" id="classBLAKE2b_html_ad0287d7284000ff236153e6afa0130f1"><div class="ttname"><a href="classBLAKE2b.html#ad0287d7284000ff236153e6afa0130f1">BLAKE2b::~BLAKE2b</a></div><div class="ttdeci">virtual ~BLAKE2b()</div><div class="ttdoc">Destroys this BLAKE2b hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00084">BLAKE2b.cpp:84</a></div></div>
<div class="ttc" id="classBLAKE2b_html_a468e48c66ce1738e11c922d133135069"><div class="ttname"><a href="classBLAKE2b.html#a468e48c66ce1738e11c922d133135069">BLAKE2b::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00192">BLAKE2b.cpp:192</a></div></div>
<div class="ttc" id="classBitmap_html_a5eeed27c176eb6e4a2c39ea83444e27d"><div class="ttname"><a href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d">Bitmap::data</a></div><div class="ttdeci">uint8_t * data()</div><div class="ttdoc">Returns a pointer to the start of the bitmap&#39;s data buffer. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00053">Bitmap.h:53</a></div></div>
<div class="ttc" id="classBLAKE2b_html_acb1ca4081c509d1c34b3aee465cd4494"><div class="ttname"><a href="classBLAKE2b.html#acb1ca4081c509d1c34b3aee465cd4494">BLAKE2b::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00239">BLAKE2b.cpp:239</a></div></div>
<div class="ttc" id="classHash_html_ab6f40c9af91dc3d738d9fcce59af63cc"><div class="ttname"><a href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">Hash::formatHMACKey</a></div><div class="ttdeci">void formatHMACKey(void *block, const void *key, size_t len, uint8_t pad)</div><div class="ttdoc">Formats a HMAC key into a block. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00162">Hash.cpp:162</a></div></div>
<div class="ttc" id="classBLAKE2b_html_a29fafbba26e3c1d896b4d4c428f7d52a"><div class="ttname"><a href="classBLAKE2b.html#a29fafbba26e3c1d896b4d4c428f7d52a">BLAKE2b::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00246">BLAKE2b.cpp:246</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: BLAKE2b.h Source File</title>
<title>Arduino Cryptography Library: BLAKE2b.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -164,7 +163,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: BLAKE2s.cpp Source File</title>
<title>Arduino Cryptography Library: BLAKE2s.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -356,7 +355,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: BLAKE2s.h Source File</title>
<title>Arduino Cryptography Library: BLAKE2s.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -163,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: BigNumberUtil.cpp Source File</title>
<title>Arduino Cryptography Library: BigNumberUtil.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -682,7 +681,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: BigNumberUtil.h Source File</title>
<title>Arduino Cryptography Library: BigNumberUtil.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -215,7 +214,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -1,702 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Bitmap.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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.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;Bitmap.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;WString.h&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classBitmap.html#a40526748415c8bbc58a8510d636c20f4"> 88</a></span>&#160;<a class="code" href="classBitmap.html#a40526748415c8bbc58a8510d636c20f4">Bitmap::Bitmap</a>(<span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; : _width(width)</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; , _height(height)</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; , _stride((width + 7) / 8)</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; , fb(0)</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; , _font(0)</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; , _textColor(White)</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="comment">// Allocate memory for the framebuffer and clear it (1 = pixel off).</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size = _stride * _height;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; fb = (uint8_t *)malloc(size);</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span> (fb)</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; memset(fb, 0xFF, size);</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="l00106"></a><span class="lineno"><a class="line" href="classBitmap.html#a72d2a301ec1eb1c8d0f3d64823659a8e"> 106</a></span>&#160;<a class="code" href="classBitmap.html#a72d2a301ec1eb1c8d0f3d64823659a8e">Bitmap::~Bitmap</a>()</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="keywordflow">if</span> (fb)</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; free(fb);</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="l00174"></a><span class="lineno"><a class="line" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1"> 174</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1">Bitmap::clear</a>(<a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color)</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size = _stride * _height;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (color == <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a>)</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; memset(fb, 0xFF, size);</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; memset(fb, 0x00, size);</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;</div>
<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203"> 191</a></span>&#160;<a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Bitmap::Color</a> <a class="code" href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203">Bitmap::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="l00192"></a><span class="lineno"> 192</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">if</span> (((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)x) &gt;= ((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)_width) ||</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; ((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)y) &gt;= ((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)_height))</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a>;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; uint8_t *ptr = fb + y * _stride + (x &gt;&gt; 3);</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">if</span> (*ptr &amp; ((uint8_t)0x80) &gt;&gt; (x &amp; 0x07))</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a>;</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="keywordflow">return</span> <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a>;</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;</div>
<div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classBitmap.html#aac994b75418e7d37ec66829437329114"> 208</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">Bitmap::setPixel</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color)</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; <span class="keywordflow">if</span> (((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)x) &gt;= ((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)_width) ||</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; ((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)y) &gt;= ((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)_height))</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// Pixel is off-screen.</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; uint8_t *ptr = fb + y * _stride + (x &gt;&gt; 3);</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">if</span> (color)</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; *ptr &amp;= ~(((uint8_t)0x80) &gt;&gt; (x &amp; 0x07));</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; *ptr |= (((uint8_t)0x80) &gt;&gt; (x &amp; 0x07));</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;}</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div>
<div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767"> 225</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">Bitmap::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">Color</a> color)</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="comment">// Midpoint line scan-conversion algorithm from &quot;Computer Graphics:</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="comment">// Principles and Practice&quot;, Second Edition, Foley, van Dam, et al.</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordtype">int</span> dx = x2 - x1;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordtype">int</span> dy = y2 - y1;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordtype">int</span> xstep, ystep;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordtype">int</span> d, incrE, incrNE;</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (dx &lt; 0) {</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; xstep = -1;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; dx = -dx;</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; xstep = 1;</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; <span class="keywordflow">if</span> (dy &lt; 0) {</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; ystep = -1;</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; dy = -dy;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; ystep = 1;</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">if</span> (dx &gt;= dy) {</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; d = 2 * dy - dx;</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; incrE = 2 * dy;</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; incrNE = 2 * (dy - dx);</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x1, y1, color);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">while</span> (x1 != x2) {</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span> (d &lt;= 0) {</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; d += incrE;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; d += incrNE;</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; y1 += ystep;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; x1 += xstep;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x1, y1, color);</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; d = 2 * dx - dy;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; incrE = 2 * dx;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; incrNE = 2 * (dx - dy);</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x1, y1, color);</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">while</span> (y1 != y2) {</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (d &lt;= 0) {</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; d += incrE;</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; d += incrNE;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; x1 += xstep;</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; y1 += ystep;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x1, y1, color);</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</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="l00286"></a><span class="lineno"><a class="line" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc"> 286</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc">Bitmap::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">Color</a> borderColor, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> fillColor)</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;{</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordtype">int</span> temp;</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span> (x1 &gt; x2) {</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; temp = x1;</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; x1 = x2;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; x2 = temp;</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; <span class="keywordflow">if</span> (y1 &gt; y2) {</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; temp = y1;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; y1 = y2;</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; y2 = temp;</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (fillColor == borderColor) {</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(x1, y1, x2 - x1 + 1, y2 - y1 + 1, fillColor);</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a>(x1, y1, x2, y1, borderColor);</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span> (y1 &lt; y2)</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a>(x2, y1 + 1, x2, y2, borderColor);</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (x1 &lt; x2)</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a>(x2 - 1, y2, x1, y2, borderColor);</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (y1 &lt; (y2 - 1))</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a>(x1, y2 - 1, x1, y1 + 1, borderColor);</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (fillColor != <a class="code" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">NoFill</a>)</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(x1 + 1, y1 + 1, x2 - x1 - 1, y2 - y1 - 1, fillColor);</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;</div>
<div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa"> 334</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa">Bitmap::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">Color</a> borderColor, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> fillColor)</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; <span class="comment">// Midpoint circle scan-conversion algorithm using second-order</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="comment">// differences from &quot;Computer Graphics: Principles and Practice&quot;,</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="comment">// Second Edition, Foley, van Dam, et al.</span></div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">if</span> (radius &lt; 0)</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; radius = -radius;</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordtype">int</span> x = 0;</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordtype">int</span> y = radius;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordtype">int</span> d = 1 - radius;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordtype">int</span> deltaE = 3;</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordtype">int</span> deltaSE = 5 - 2 * radius;</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; drawCirclePoints(centerX, centerY, radius, x, y, borderColor, fillColor);</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">while</span> (y &gt; x) {</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">if</span> (d &lt; 0) {</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; d += deltaE;</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; deltaE += 2;</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; deltaSE += 2;</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; d += deltaSE;</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; deltaE += 2;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; deltaSE += 4;</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; --y;</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; ++x;</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; drawCirclePoints(centerX, centerY, radius, x, y, borderColor, fillColor);</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;}</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div>
<div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72"> 388</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72">Bitmap::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">Bitmap</a> &amp;bitmap, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color)</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="keywordtype">int</span> w = bitmap.<a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>();</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordtype">int</span> s = bitmap.<a class="code" href="classBitmap.html#af30df263729385ea2330effe3c80a1bc">stride</a>();</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordtype">int</span> h = bitmap.<a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>();</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> invColor = !color;</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">for</span> (uint8_t by = 0; by &lt; h; ++by) {</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keyword">const</span> uint8_t *line = bitmap.<a class="code" href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d">data</a>() + by * s;</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; uint8_t mask = 0x80;</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; uint8_t value = *line++;</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">for</span> (uint8_t bx = 0; bx &lt; w; ++bx) {</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">if</span> (value &amp; mask)</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x + bx, y + by, invColor);</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x + bx, y + by, color);</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; mask &gt;&gt;= 1;</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">if</span> (!mask) {</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; mask = 0x80;</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; value = *line++;</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</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 class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="classBitmap.html#a5e4f23e8f14e193410b5f071149401e4"> 425</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72">Bitmap::drawBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <a class="code" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43">Bitmap::ProgMem</a> bitmap, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color)</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; uint8_t w = pgm_read_byte(bitmap);</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; uint8_t s = (w + 7) &gt;&gt; 3;</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; uint8_t h = pgm_read_byte(bitmap + 1);</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> invColor = !color;</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">for</span> (uint8_t by = 0; by &lt; h; ++by) {</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keyword">const</span> uint8_t *line = ((<span class="keyword">const</span> uint8_t *)bitmap) + 2 + by * s;</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; uint8_t mask = 0x80;</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; uint8_t value = pgm_read_byte(line);</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">for</span> (uint8_t bx = 0; bx &lt; w; ++bx) {</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span> (value &amp; mask)</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x + bx, y + by, color);</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x + bx, y + by, invColor);</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; mask &gt;&gt;= 1;</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">if</span> (!mask) {</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; mask = 0x80;</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; ++line;</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; value = pgm_read_byte(line);</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; }</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;}</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="preprocessor">#define fontIsFixed(font) (pgm_read_byte((font)) == 0 &amp;&amp; \</span></div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="preprocessor"> pgm_read_byte((font) + 1) == 0)</span></div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define fontWidth(font) (pgm_read_byte((font) + 2))</span></div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define fontHeight(font) (pgm_read_byte((font) + 3))</span></div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define fontFirstChar(font) (pgm_read_byte((font) + 4))</span></div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define fontCharCount(font) (pgm_read_byte((font) + 5))</span></div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00526"></a><span class="lineno"><a class="line" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0"> 526</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0">Bitmap::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)</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;{</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">if</span> (!_font)</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; uint8_t <a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a> = fontHeight(_font);</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">if</span> (len &lt; 0)</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; len = strlen(str);</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">while</span> (len-- &gt; 0) {</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; x += <a class="code" href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd">drawChar</a>(x, y, *str++);</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">if</span> (len &gt; 0) {</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(x, y, 1, height, !_textColor);</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; ++x;</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">if</span> (x &gt;= _width)</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;}</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;</div>
<div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classBitmap.html#a802f5d6bd19a3727670e61e7a88a0cac"> 555</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0">Bitmap::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, <span class="keywordtype">int</span> len)</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;{</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">if</span> (!_font)</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; uint8_t <a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a> = fontHeight(_font);</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">if</span> (len &lt; 0)</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; len = str.length() - start;</div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">while</span> (len-- &gt; 0) {</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; x += <a class="code" href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd">drawChar</a>(x, y, str[start++]);</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">if</span> (len &gt; 0) {</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(x, y, 1, height, !_textColor);</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; ++x;</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="keywordflow">if</span> (x &gt;= _width)</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; }</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;}</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div>
<div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd"> 585</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd">Bitmap::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="l00586"></a><span class="lineno"> 586</span>&#160;{</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; uint8_t <a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a> = fontHeight(_font);</div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">if</span> (ch == <span class="charliteral">&#39; &#39;</span>) {</div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="comment">// Font may not have space, or it is zero-width. Calculate</span></div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="comment">// the real size and fill the space.</span></div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordtype">int</span> spaceWidth = <a class="code" href="classBitmap.html#a9b79ac13077ca865e4515510297780bd">charWidth</a>(<span class="charliteral">&#39;n&#39;</span>);</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(x, y, spaceWidth, height, !_textColor);</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">return</span> spaceWidth;</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; uint8_t first = fontFirstChar(_font);</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; uint8_t count = fontCharCount(_font);</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; uint8_t index = (uint8_t)ch;</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">if</span> (index &lt; first || index &gt;= (first + count))</div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; index -= first;</div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; uint8_t heightBytes = (height + 7) &gt;&gt; 3;;</div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; uint8_t <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>;</div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keyword">const</span> uint8_t *image;</div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">if</span> (fontIsFixed(_font)) {</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="comment">// Fixed-width font.</span></div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; width = fontWidth(_font);</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; image = ((<span class="keyword">const</span> uint8_t *)_font) + 6 + index * heightBytes * <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>;</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="comment">// Variable-width font.</span></div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; width = pgm_read_byte(_font + 6 + index);</div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; image = ((<span class="keyword">const</span> uint8_t *)_font) + 6 + count;</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">for</span> (uint8_t temp = 0; temp &lt; index; ++temp) {</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="comment">// Scan through all previous characters to find the starting</span></div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="comment">// location for this one.</span></div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; image += pgm_read_byte(_font + 6 + temp) * heightBytes;</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; }</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; }</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">if</span> ((x + width) &lt;= 0 || (y + height) &lt;= 0)</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>; <span class="comment">// Character is off the top or left of the screen.</span></div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> invColor = !_textColor;</div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">for</span> (uint8_t cx = 0; cx &lt; <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>; ++cx) {</div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">for</span> (uint8_t cy = 0; cy &lt; heightBytes; ++cy) {</div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; uint8_t value = pgm_read_byte(image + cy * width + cx);</div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordtype">int</span> posn;</div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">if</span> (heightBytes &gt; 1 &amp;&amp; cy == (heightBytes - 1))</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; posn = height - 8;</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; posn = cy * 8;</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">for</span> (uint8_t bit = 0; bit &lt; 8; ++bit) {</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> ((posn + bit) &gt;= (cy * 8) &amp;&amp; (posn + bit) &lt;= height) {</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">if</span> (value &amp; 0x01)</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x + cx, y + posn + bit, _textColor);</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x + cx, y + posn + bit, invColor);</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; }</div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; value &gt;&gt;= 1;</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; }</div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; }</div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; }</div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>;</div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;}</div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;</div>
<div class="line"><a name="l00650"></a><span class="lineno"><a class="line" href="classBitmap.html#a9b79ac13077ca865e4515510297780bd"> 650</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a9b79ac13077ca865e4515510297780bd">Bitmap::charWidth</a>(<span class="keywordtype">char</span> ch)<span class="keyword"> const</span></div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; uint8_t index = (uint8_t)ch;</div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">if</span> (!_font)</div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; uint8_t first = fontFirstChar(_font);</div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; uint8_t count = fontCharCount(_font);</div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">if</span> (index == <span class="charliteral">&#39; &#39;</span>)</div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; index = <span class="charliteral">&#39;n&#39;</span>; <span class="comment">// In case the font does not contain space.</span></div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">if</span> (index &lt; first || index &gt;= (first + count))</div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (fontIsFixed(_font))</div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">return</span> fontWidth(_font);</div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">return</span> pgm_read_byte(_font + 6 + (index - first));</div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;}</div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;</div>
<div class="line"><a name="l00675"></a><span class="lineno"><a class="line" href="classBitmap.html#a0f7607b1c7867987f4500d490a666e8a"> 675</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a0f7607b1c7867987f4500d490a666e8a">Bitmap::textWidth</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">int</span> len)<span class="keyword"> const</span></div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a> = 0;</div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">if</span> (len &lt; 0)</div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; len = strlen(str);</div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">while</span> (len-- &gt; 0) {</div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; width += <a class="code" href="classBitmap.html#a9b79ac13077ca865e4515510297780bd">charWidth</a>(*str++);</div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">if</span> (len &gt; 0)</div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; ++<a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>;</div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>;</div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;}</div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;</div>
<div class="line"><a name="l00697"></a><span class="lineno"><a class="line" href="classBitmap.html#a8ca70aa0f8f722a228358bffe794e925"> 697</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a0f7607b1c7867987f4500d490a666e8a">Bitmap::textWidth</a>(<span class="keyword">const</span> String &amp;str, <span class="keywordtype">int</span> start, <span class="keywordtype">int</span> len)<span class="keyword"> const</span></div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a> = 0;</div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">if</span> (len &lt; 0)</div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; len = str.length() - start;</div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordflow">while</span> (len-- &gt; 0) {</div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; width += <a class="code" href="classBitmap.html#a9b79ac13077ca865e4515510297780bd">charWidth</a>(str[start++]);</div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">if</span> (len &gt; 0)</div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; ++<a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>;</div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; }</div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>;</div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;}</div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;</div>
<div class="line"><a name="l00716"></a><span class="lineno"><a class="line" href="classBitmap.html#a628bb694fcfe6eab619a4f1e152d41c4"> 716</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a628bb694fcfe6eab619a4f1e152d41c4">Bitmap::textHeight</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">if</span> (_font)</div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">return</span> fontHeight(_font);</div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;}</div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;</div>
<div class="line"><a name="l00738"></a><span class="lineno"><a class="line" href="classBitmap.html#ab22fe1f3871934987a670b559f67c67c"> 738</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBitmap.html#ab22fe1f3871934987a670b559f67c67c">Bitmap::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">Bitmap</a> *dest, <span class="keywordtype">int</span> destX, <span class="keywordtype">int</span> destY)</div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;{</div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">if</span> (dest == <span class="keyword">this</span>) {</div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="comment">// Copying to within the same bitmap, so copy in a direction</span></div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="comment">// that will prevent problems with overlap.</span></div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; blit(x, y, x + width - 1, y + height - 1, destX, destY);</div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="comment">// Copying to a different bitmap.</span></div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">while</span> (height &gt; 0) {</div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> tempx = 0; tempx &lt; <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>; ++tempx)</div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; dest-&gt;<a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(destX + tempx, destY, <a class="code" href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203">pixel</a>(x + tempx, y));</div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; ++y;</div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; ++destY;</div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; --<a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>;</div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; }</div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; }</div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;}</div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;</div>
<div class="line"><a name="l00762"></a><span class="lineno"><a class="line" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2"> 762</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">Bitmap::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">Color</a> color)</div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;{</div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">while</span> (height &gt; 0) {</div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> temp = 0; temp &lt; <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>; ++temp)</div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x + temp, y, color);</div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; ++y;</div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; --<a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>;</div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; }</div>
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;}</div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;</div>
<div class="line"><a name="l00785"></a><span class="lineno"><a class="line" href="classBitmap.html#ac661adab340858b541a2fe44e6303f56"> 785</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">Bitmap::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">Bitmap::ProgMem</a> pattern, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color)</div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;{</div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; uint8_t w = pgm_read_byte(pattern);</div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; uint8_t s = (w + 7) &gt;&gt; 3;</div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; uint8_t h = pgm_read_byte(pattern + 1);</div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">if</span> (!w || !h)</div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> invColor = !color;</div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> tempy = 0; tempy &lt; <a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>; ++tempy) {</div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keyword">const</span> uint8_t *startLine = ((<span class="keyword">const</span> uint8_t *)pattern) + 2 + (tempy % h) * s;</div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keyword">const</span> uint8_t *line = startLine;</div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; uint8_t mask = 0x80;</div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; uint8_t value = pgm_read_byte(line++);</div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordtype">int</span> bit = 0;</div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> tempx = 0; tempx &lt; <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>; ++tempx) {</div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordflow">if</span> (value &amp; mask)</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x + tempx, y + tempy, color);</div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x + tempx, y + tempy, invColor);</div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">if</span> (++bit &gt;= w) {</div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; mask = 0x80;</div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; line = startLine;</div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; value = pgm_read_byte(line++);</div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; bit = 0;</div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; mask &gt;&gt;= 1;</div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">if</span> (!mask) {</div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; mask = 0x80;</div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; value = pgm_read_byte(line++);</div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; }</div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; }</div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; }</div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;}</div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;</div>
<div class="line"><a name="l00841"></a><span class="lineno"><a class="line" href="classBitmap.html#af79ad4432297ff453fddc55625fec485"> 841</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a">Bitmap::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">Color</a> fillColor)</div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;{</div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="comment">// Bail out if no scrolling at all.</span></div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">if</span> (!dx &amp;&amp; !dy)</div>
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;</div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="comment">// Clamp the scroll region to the extents of the bitmap.</span></div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">if</span> (x &lt; 0) {</div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; width += x;</div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; x = 0;</div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; }</div>
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">if</span> (y &lt; 0) {</div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; height += y;</div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; y = 0;</div>
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; }</div>
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">if</span> ((x + width) &gt; _width)</div>
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; width = _width - x;</div>
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">if</span> ((y + height) &gt; _height)</div>
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; height = _height - y;</div>
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">if</span> (width &lt;= 0 || height &lt;= 0)</div>
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;</div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="comment">// Scroll the region in the specified direction.</span></div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">if</span> (dy &lt; 0) {</div>
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">if</span> (dx &lt; 0)</div>
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; blit(x - dx, y - dy, x + width - 1 + dx, y + height - 1 + dy, x, y);</div>
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; blit(x, y - dy, x + width - 1 - dx, y + height - 1 + dy, x + dx, y);</div>
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">if</span> (dx &lt; 0)</div>
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; blit(x - dx, y, x + width - 1 + dx, y + height - 1 - dy, x, y + dy);</div>
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; blit(x, y, x + width - 1 - dx, y + height - 1 - dy, x + dx, y + dy);</div>
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; }</div>
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;</div>
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="comment">// Fill the pixels that were uncovered by the scroll.</span></div>
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">if</span> (dy &lt; 0) {</div>
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(x, y + height + dy, width, -dy, fillColor);</div>
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">if</span> (dx &lt; 0)</div>
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(x + width + dx, y, -dx, height + dy, fillColor);</div>
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dx &gt; 0)</div>
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(x, y, dx, height + dy, fillColor);</div>
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dy &gt; 0) {</div>
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(x, y, width, -dy, fillColor);</div>
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">if</span> (dx &lt; 0)</div>
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(x + width + dx, y + dy, -dx, height - dy, fillColor);</div>
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dx &gt; 0)</div>
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(x, y + dy, dx, height - dy, fillColor);</div>
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dx &lt; 0) {</div>
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(x + width + dx, y, -dx, height, fillColor);</div>
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dx &gt; 0) {</div>
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">fill</a>(x, y, dx, height, fillColor);</div>
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; }</div>
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;}</div>
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160;</div>
<div class="line"><a name="l00902"></a><span class="lineno"><a class="line" href="classBitmap.html#a6d85556bcc9fac91d33f0f6f7a6430dd"> 902</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a6d85556bcc9fac91d33f0f6f7a6430dd">Bitmap::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="l00903"></a><span class="lineno"> 903</span>&#160;{</div>
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordflow">while</span> (height &gt; 0) {</div>
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> tempx = x + width - 1; tempx &gt;= x; --tempx)</div>
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(tempx, y, !<a class="code" href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203">pixel</a>(tempx, y));</div>
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; --<a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>;</div>
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; ++y;</div>
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; }</div>
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;}</div>
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160;</div>
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160;<span class="keywordtype">void</span> Bitmap::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="l00913"></a><span class="lineno"> 913</span>&#160;{</div>
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">if</span> (y3 &lt; y1 || (y1 == y3 &amp;&amp; x3 &lt;= x1)) {</div>
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> tempy = y1; tempy &lt;= y2; ++tempy) {</div>
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordtype">int</span> y = y1 - tempy + y3;</div>
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordtype">int</span> x = x3 - x1;</div>
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> tempx = x1; tempx &lt;= x2; ++tempx)</div>
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x + tempx, y, <a class="code" href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203">pixel</a>(tempx, tempy));</div>
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; }</div>
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> tempy = y2; tempy &gt;= y1; --tempy) {</div>
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordtype">int</span> y = y1 - tempy + y3;</div>
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keywordtype">int</span> x = x3 - x1;</div>
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> tempx = x2; tempx &gt;= x1; --tempx)</div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(x + tempx, y, <a class="code" href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203">pixel</a>(tempx, tempy));</div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; }</div>
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; }</div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160;}</div>
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;</div>
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160;<span class="keywordtype">void</span> Bitmap::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, Color borderColor, Color fillColor)</div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;{</div>
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">if</span> (x != y) {</div>
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(centerX + x, centerY + y, borderColor);</div>
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(centerX + y, centerY + x, borderColor);</div>
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(centerX + y, centerY - x, borderColor);</div>
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(centerX + x, centerY - y, borderColor);</div>
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(centerX - x, centerY - y, borderColor);</div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(centerX - y, centerY - x, borderColor);</div>
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(centerX - y, centerY + x, borderColor);</div>
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(centerX - x, centerY + y, borderColor);</div>
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keywordflow">if</span> (fillColor != <a class="code" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">NoFill</a>) {</div>
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">if</span> (radius &gt; 1) {</div>
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <a class="code" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a>(centerX - x + 1, centerY + y, centerX + x - 1, centerY + y, fillColor);</div>
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <a class="code" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a>(centerX - y + 1, centerY + x, centerX + y - 1, centerY + x, fillColor);</div>
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <a class="code" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a>(centerX - x + 1, centerY - y, centerX + x - 1, centerY - y, fillColor);</div>
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <a class="code" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a>(centerX - y + 1, centerY - x, centerX + y - 1, centerY - x, fillColor);</div>
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (radius == 1) {</div>
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(centerX, centerY, fillColor);</div>
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; }</div>
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; }</div>
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(centerX + x, centerY + y, borderColor);</div>
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(centerX + y, centerY - x, borderColor);</div>
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(centerX - x, centerY - y, borderColor);</div>
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(centerX - y, centerY + x, borderColor);</div>
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">if</span> (fillColor != <a class="code" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">NoFill</a>) {</div>
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">if</span> (radius &gt; 1) {</div>
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <a class="code" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a>(centerX - x + 1, centerY + y, centerX + x - 1, centerY + y, fillColor);</div>
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <a class="code" href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">drawLine</a>(centerX - x + 1, centerY - y, centerX + x - 1, centerY - y, fillColor);</div>
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (radius == 1) {</div>
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <a class="code" href="classBitmap.html#aac994b75418e7d37ec66829437329114">setPixel</a>(centerX, centerY, fillColor);</div>
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; }</div>
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; }</div>
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; }</div>
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160;}</div>
<div class="ttc" id="classBitmap_html_a76c3b49e535761f07c553e7336daf523"><div class="ttname"><a href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">Bitmap::width</a></div><div class="ttdeci">int width() const </div><div class="ttdoc">Returns the width of the bitmap in pixels. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00048">Bitmap.h:48</a></div></div>
<div class="ttc" id="classBitmap_html_ab22fe1f3871934987a670b559f67c67c"><div class="ttname"><a href="classBitmap.html#ab22fe1f3871934987a670b559f67c67c">Bitmap::copy</a></div><div class="ttdeci">void copy(int x, int y, int width, int height, Bitmap *dest, int destX, int destY)</div><div class="ttdoc">Copies the width x height pixels starting at top-left corner (x, y) to (destX, destY) in the bitmap d...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00738">Bitmap.cpp:738</a></div></div>
<div class="ttc" id="classBitmap_html_ae08eb6f9086f9923d8dc83a469ae4c4a"><div class="ttname"><a href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a">Bitmap::scroll</a></div><div class="ttdeci">void scroll(int dx, int dy, Color fillColor=Black)</div><div class="ttdoc">Scrolls the entire contents of the bitmap by dx and dy. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00135">Bitmap.h:135</a></div></div>
<div class="ttc" id="classBitmap_html"><div class="ttname"><a href="classBitmap.html">Bitmap</a></div><div class="ttdoc">Represents a monochrome bitmap within main memory. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00032">Bitmap.h:32</a></div></div>
<div class="ttc" id="classBitmap_html_aac61e3f7f625db568e37d88b52b3b2fc"><div class="ttname"><a href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc">Bitmap::drawRect</a></div><div class="ttdeci">void drawRect(int x1, int y1, int x2, int y2, Color borderColor=White, Color fillColor=NoFill)</div><div class="ttdoc">Draws a rectangle from (x1, y1) to (x2, y2), with the outline in borderColor and the interior filled ...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00286">Bitmap.cpp:286</a></div></div>
<div class="ttc" id="classBitmap_html_aac994b75418e7d37ec66829437329114"><div class="ttname"><a href="classBitmap.html#aac994b75418e7d37ec66829437329114">Bitmap::setPixel</a></div><div class="ttdeci">void setPixel(int x, int y, Color color)</div><div class="ttdoc">Sets the pixel at (x, y) to color. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00208">Bitmap.cpp:208</a></div></div>
<div class="ttc" id="classBitmap_html_aa0a84f3694e343d68e7021552c69f767"><div class="ttname"><a href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">Bitmap::drawLine</a></div><div class="ttdeci">void drawLine(int x1, int y1, int x2, int y2, Color color=White)</div><div class="ttdoc">Draws a line from (x1, y1) to (x2, y2) in color. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00225">Bitmap.cpp:225</a></div></div>
<div class="ttc" id="classBitmap_html_a491e9c0bb20ddf5a5eb4933077c8ed72"><div class="ttname"><a href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72">Bitmap::drawBitmap</a></div><div class="ttdeci">void drawBitmap(int x, int y, const Bitmap &amp;bitmap, Color color=White)</div><div class="ttdoc">Draws bitmap at (x, y) in color. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00388">Bitmap.cpp:388</a></div></div>
<div class="ttc" id="classBitmap_html_a933763a4f3cba79fbcf97ae6d0a864aa"><div class="ttname"><a href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa">Bitmap::drawCircle</a></div><div class="ttdeci">void drawCircle(int centerX, int centerY, int radius, Color borderColor=White, Color fillColor=NoFill)</div><div class="ttdoc">Draws a circle with a specific center (centerX, centerY) and radius, with the outline in borderColor ...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00334">Bitmap.cpp:334</a></div></div>
<div class="ttc" id="classBitmap_html_a1a11f29863ee7f36a3b15c91963102bd"><div class="ttname"><a href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd">Bitmap::drawChar</a></div><div class="ttdeci">int drawChar(int x, int y, char ch)</div><div class="ttdoc">Draws a single character ch at (x, y). </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00585">Bitmap.cpp:585</a></div></div>
<div class="ttc" id="classBitmap_html_a2fcc98fd7580932b218134126a29ce43"><div class="ttname"><a href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43">Bitmap::ProgMem</a></div><div class="ttdeci">PGM_VOID_P ProgMem</div><div class="ttdoc">Type that represents a bitmap within program memory. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00041">Bitmap.h:41</a></div></div>
<div class="ttc" id="classBitmap_html_a88d386944a7017aa776a177b10d8b2ba"><div class="ttname"><a href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Bitmap::Color</a></div><div class="ttdeci">uint8_t Color</div><div class="ttdoc">Type that represents the color of a pixel in a bitmap. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00040">Bitmap.h:40</a></div></div>
<div class="ttc" id="classBitmap_html_adcd4e3dc7594421e647b0f52da9a41a3"><div class="ttname"><a href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">Bitmap::height</a></div><div class="ttdeci">int height() const </div><div class="ttdoc">Returns the height of the bitmap in pixels. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00049">Bitmap.h:49</a></div></div>
<div class="ttc" id="classBitmap_html_aa89170263dc1f51f6366c1907119715e"><div class="ttname"><a href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">Bitmap::NoFill</a></div><div class="ttdeci">static const Color NoFill</div><div class="ttdoc">Special color value that is used with drawRect() and drawCircle() to indicate that the interior of th...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00046">Bitmap.h:46</a></div></div>
<div class="ttc" id="classBitmap_html_a0f7607b1c7867987f4500d490a666e8a"><div class="ttname"><a href="classBitmap.html#a0f7607b1c7867987f4500d490a666e8a">Bitmap::textWidth</a></div><div class="ttdeci">int textWidth(const char *str, int len=-1) const </div><div class="ttdoc">Returns the width in pixels of the len characters of str in the current font(), including inter-chara...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00675">Bitmap.cpp:675</a></div></div>
<div class="ttc" id="classBitmap_html_a99da820f9280aace6b512801d5a5e2b2"><div class="ttname"><a href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">Bitmap::fill</a></div><div class="ttdeci">void fill(int x, int y, int width, int height, Color color)</div><div class="ttdoc">Fills the width x height pixels starting at top-left corner (x, y) with color. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00762">Bitmap.cpp:762</a></div></div>
<div class="ttc" id="classBitmap_html_a5eeed27c176eb6e4a2c39ea83444e27d"><div class="ttname"><a href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d">Bitmap::data</a></div><div class="ttdeci">uint8_t * data()</div><div class="ttdoc">Returns a pointer to the start of the bitmap&#39;s data buffer. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00053">Bitmap.h:53</a></div></div>
<div class="ttc" id="classBitmap_html_a628bb694fcfe6eab619a4f1e152d41c4"><div class="ttname"><a href="classBitmap.html#a628bb694fcfe6eab619a4f1e152d41c4">Bitmap::textHeight</a></div><div class="ttdeci">int textHeight() const </div><div class="ttdoc">Returns the height in pixels of the current text drawing font(); or zero if font() is not set...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00716">Bitmap.cpp:716</a></div></div>
<div class="ttc" id="classBitmap_html_a9b79ac13077ca865e4515510297780bd"><div class="ttname"><a href="classBitmap.html#a9b79ac13077ca865e4515510297780bd">Bitmap::charWidth</a></div><div class="ttdeci">int charWidth(char ch) const </div><div class="ttdoc">Returns the width in pixels of ch in the current font(). </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00650">Bitmap.cpp:650</a></div></div>
<div class="ttc" id="classBitmap_html_a40526748415c8bbc58a8510d636c20f4"><div class="ttname"><a href="classBitmap.html#a40526748415c8bbc58a8510d636c20f4">Bitmap::Bitmap</a></div><div class="ttdeci">Bitmap(int width, int height)</div><div class="ttdoc">Constructs a new in-memory bitmap that is width x height pixels in size. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00088">Bitmap.cpp:88</a></div></div>
<div class="ttc" id="classBitmap_html_a39b6754cfe50a457bbfdb1980fd87eb7"><div class="ttname"><a href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">Bitmap::White</a></div><div class="ttdeci">static const Color White</div><div class="ttdoc">Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00045">Bitmap.h:45</a></div></div>
<div class="ttc" id="classBitmap_html_af30df263729385ea2330effe3c80a1bc"><div class="ttname"><a href="classBitmap.html#af30df263729385ea2330effe3c80a1bc">Bitmap::stride</a></div><div class="ttdeci">int stride() const </div><div class="ttdoc">Returns the number of bytes in each line of the bitmap&#39;s data() buffer. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00050">Bitmap.h:50</a></div></div>
<div class="ttc" id="classBitmap_html_a2c7faeeb89d3624b5bbca58871785adc"><div class="ttname"><a href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Bitmap::Black</a></div><div class="ttdeci">static const Color Black</div><div class="ttdoc">Color value corresponding to &quot;black&quot;. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00044">Bitmap.h:44</a></div></div>
<div class="ttc" id="classBitmap_html_a839dc8fab05a5ebf7a6b2e61436b2fa1"><div class="ttname"><a href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1">Bitmap::clear</a></div><div class="ttdeci">void clear(Color color=Black)</div><div class="ttdoc">Clears the entire bitmap to the specified color. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00174">Bitmap.cpp:174</a></div></div>
<div class="ttc" id="classBitmap_html_a6d85556bcc9fac91d33f0f6f7a6430dd"><div class="ttname"><a href="classBitmap.html#a6d85556bcc9fac91d33f0f6f7a6430dd">Bitmap::invert</a></div><div class="ttdeci">void invert(int x, int y, int width, int height)</div><div class="ttdoc">Inverts the width x height pixels starting at top-left corner (x, y). </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00902">Bitmap.cpp:902</a></div></div>
<div class="ttc" id="classBitmap_html_a3e9bcbfb584d5020bd6f0a313ee275f0"><div class="ttname"><a href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0">Bitmap::drawText</a></div><div class="ttdeci">void drawText(int x, int y, const char *str, int len=-1)</div><div class="ttdoc">Draws the len characters of str at (x, y). </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00526">Bitmap.cpp:526</a></div></div>
<div class="ttc" id="classBitmap_html_a72d2a301ec1eb1c8d0f3d64823659a8e"><div class="ttname"><a href="classBitmap.html#a72d2a301ec1eb1c8d0f3d64823659a8e">Bitmap::~Bitmap</a></div><div class="ttdeci">~Bitmap()</div><div class="ttdoc">Destroys this bitmap. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00106">Bitmap.cpp:106</a></div></div>
<div class="ttc" id="classBitmap_html_a35aa38b377d509d6c4f061a0b988d203"><div class="ttname"><a href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203">Bitmap::pixel</a></div><div class="ttdeci">Color pixel(int x, int y) const </div><div class="ttdoc">Returns the color of the pixel at (x, y); either Black or White. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00191">Bitmap.cpp:191</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,279 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Bitmap.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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">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="line" href="classBitmap.html"> 32</a></span>&#160;<span class="keyword">class </span><a class="code" href="classBitmap.html">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">Bitmap</a>(<span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">width</a>, <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">height</a>);</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="classBitmap.html#a72d2a301ec1eb1c8d0f3d64823659a8e">~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="line" href="classBitmap.html#a3846a240722e847d3cf11f701da1ce7b"> 38</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classBitmap.html#a3846a240722e847d3cf11f701da1ce7b">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="line" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba"> 40</a></span>&#160; <span class="keyword">typedef</span> uint8_t <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a>;</div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43"> 41</a></span>&#160; <span class="keyword">typedef</span> PGM_VOID_P <a class="code" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43">ProgMem</a>;</div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf"> 42</a></span>&#160; <span class="keyword">typedef</span> PGM_VOID_P <a class="code" href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf">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="line" 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">Color</a> <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a> = 0;</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" 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">Color</a> <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a> = 1;</div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" 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">Color</a> <a class="code" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">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="line" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523"> 48</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">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="line" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3"> 49</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">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="line" href="classBitmap.html#af30df263729385ea2330effe3c80a1bc"> 50</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#af30df263729385ea2330effe3c80a1bc">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="line" href="classBitmap.html#ad18d3d5a1e77d541a95e93ad1f958411"> 51</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classBitmap.html#ad18d3d5a1e77d541a95e93ad1f958411">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="line" href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d"> 53</a></span>&#160; uint8_t *<a class="code" href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d">data</a>() { <span class="keywordflow">return</span> fb; }</div>
<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classBitmap.html#a20fea2a946545aa3b5edd78245149e5f"> 54</a></span>&#160; <span class="keyword">const</span> uint8_t *<a class="code" href="classBitmap.html#a20fea2a946545aa3b5edd78245149e5f">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">clear</a>(<a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color = <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">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">Color</a> <a class="code" href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203">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">setPixel</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">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">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">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">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">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">Color</a> borderColor = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a>, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> fillColor = <a class="code" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">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">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">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">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">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">Color</a> borderColor = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a>, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> fillColor = <a class="code" href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">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">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">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">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">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">Bitmap</a> &amp;bitmap, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">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">drawBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <a class="code" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43">Bitmap::ProgMem</a> bitmap, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">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">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">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">drawInvertedBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <a class="code" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43">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="line" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c"> 72</a></span>&#160; <a class="code" href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf">Font</a> <a class="code" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c">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="line" href="classBitmap.html#a64d7a9651d5c385a044cc910a3b82837"> 73</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a64d7a9651d5c385a044cc910a3b82837">setFont</a>(<a class="code" href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf">Font</a> <a class="code" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c">font</a>) { _font = <a class="code" href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c">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="line" href="classBitmap.html#ab6e5f5744fd2f18478aac428b751d848"> 75</a></span>&#160; <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> <a class="code" href="classBitmap.html#ab6e5f5744fd2f18478aac428b751d848">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="line" href="classBitmap.html#a8e225a4f188269bb18265ae4b49de0a3"> 76</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBitmap.html#a8e225a4f188269bb18265ae4b49de0a3">setTextColor</a>(<a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">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">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">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">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">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">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">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">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">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">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">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">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">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">Bitmap::ProgMem</a> pattern, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> color = <a class="code" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">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">scroll</a>(<span class="keywordtype">int</span> dx, <span class="keywordtype">int</span> dy, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> fillColor = <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">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">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">Color</a> fillColor = <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">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">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">Bitmap</a>(<span class="keyword">const</span> <a class="code" href="classBitmap.html">Bitmap</a> &amp;) {}</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classBitmap.html">Bitmap</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="classBitmap.html">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">Font</a> _font;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">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">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">Color</a> borderColor, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">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="line" 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">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">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">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="line" 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">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">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">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="line" 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">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">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">drawBitmap</a>(x, y, bitmap, <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">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="line" 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">Bitmap::drawInvertedBitmap</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <a class="code" href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43">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">drawBitmap</a>(x, y, bitmap, <a class="code" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">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="line" 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">Bitmap::scroll</a>(<span class="keywordtype">int</span> dx, <span class="keywordtype">int</span> dy, <a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">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">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 class="ttc" id="classDMD_html"><div class="ttname"><a href="classDMD.html">DMD</a></div><div class="ttdoc">Handle large dot matrix displays composed of LED&#39;s. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8h_source.html#l00028">DMD.h:28</a></div></div>
<div class="ttc" id="classBitmap_html_a76c3b49e535761f07c553e7336daf523"><div class="ttname"><a href="classBitmap.html#a76c3b49e535761f07c553e7336daf523">Bitmap::width</a></div><div class="ttdeci">int width() const </div><div class="ttdoc">Returns the width of the bitmap in pixels. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00048">Bitmap.h:48</a></div></div>
<div class="ttc" id="classBitmap_html_ab22fe1f3871934987a670b559f67c67c"><div class="ttname"><a href="classBitmap.html#ab22fe1f3871934987a670b559f67c67c">Bitmap::copy</a></div><div class="ttdeci">void copy(int x, int y, int width, int height, Bitmap *dest, int destX, int destY)</div><div class="ttdoc">Copies the width x height pixels starting at top-left corner (x, y) to (destX, destY) in the bitmap d...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00738">Bitmap.cpp:738</a></div></div>
<div class="ttc" id="classBitmap_html_ae08eb6f9086f9923d8dc83a469ae4c4a"><div class="ttname"><a href="classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a">Bitmap::scroll</a></div><div class="ttdeci">void scroll(int dx, int dy, Color fillColor=Black)</div><div class="ttdoc">Scrolls the entire contents of the bitmap by dx and dy. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00135">Bitmap.h:135</a></div></div>
<div class="ttc" id="classBitmap_html"><div class="ttname"><a href="classBitmap.html">Bitmap</a></div><div class="ttdoc">Represents a monochrome bitmap within main memory. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00032">Bitmap.h:32</a></div></div>
<div class="ttc" id="classBitmap_html_aac61e3f7f625db568e37d88b52b3b2fc"><div class="ttname"><a href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc">Bitmap::drawRect</a></div><div class="ttdeci">void drawRect(int x1, int y1, int x2, int y2, Color borderColor=White, Color fillColor=NoFill)</div><div class="ttdoc">Draws a rectangle from (x1, y1) to (x2, y2), with the outline in borderColor and the interior filled ...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00286">Bitmap.cpp:286</a></div></div>
<div class="ttc" id="classBitmap_html_aac994b75418e7d37ec66829437329114"><div class="ttname"><a href="classBitmap.html#aac994b75418e7d37ec66829437329114">Bitmap::setPixel</a></div><div class="ttdeci">void setPixel(int x, int y, Color color)</div><div class="ttdoc">Sets the pixel at (x, y) to color. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00208">Bitmap.cpp:208</a></div></div>
<div class="ttc" id="classBitmap_html_a757291b9a39bcb0d64ac98d3a2fa061b"><div class="ttname"><a href="classBitmap.html#a757291b9a39bcb0d64ac98d3a2fa061b">Bitmap::drawFilledCircle</a></div><div class="ttdeci">void drawFilledCircle(int centerX, int centerY, int radius, Color color=White)</div><div class="ttdoc">Draws a filled circle with a specific center (centerX, centerY) and radius in color. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00120">Bitmap.h:120</a></div></div>
<div class="ttc" id="classBitmap_html_aa0a84f3694e343d68e7021552c69f767"><div class="ttname"><a href="classBitmap.html#aa0a84f3694e343d68e7021552c69f767">Bitmap::drawLine</a></div><div class="ttdeci">void drawLine(int x1, int y1, int x2, int y2, Color color=White)</div><div class="ttdoc">Draws a line from (x1, y1) to (x2, y2) in color. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00225">Bitmap.cpp:225</a></div></div>
<div class="ttc" id="classBitmap_html_a491e9c0bb20ddf5a5eb4933077c8ed72"><div class="ttname"><a href="classBitmap.html#a491e9c0bb20ddf5a5eb4933077c8ed72">Bitmap::drawBitmap</a></div><div class="ttdeci">void drawBitmap(int x, int y, const Bitmap &amp;bitmap, Color color=White)</div><div class="ttdoc">Draws bitmap at (x, y) in color. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00388">Bitmap.cpp:388</a></div></div>
<div class="ttc" id="classBitmap_html_a568acbca3818dd85dd62fff6d0b36ffb"><div class="ttname"><a href="classBitmap.html#a568acbca3818dd85dd62fff6d0b36ffb">Bitmap::drawFilledRect</a></div><div class="ttdeci">void drawFilledRect(int x1, int y1, int x2, int y2, Color color=White)</div><div class="ttdoc">Draws a filled rectangle from (x1, y1) to (x2, y2) in color. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00115">Bitmap.h:115</a></div></div>
<div class="ttc" id="classBitmap_html_a4321640464bc08b60348c09bff01b86a"><div class="ttname"><a href="classBitmap.html#a4321640464bc08b60348c09bff01b86a">Bitmap::drawInvertedBitmap</a></div><div class="ttdeci">void drawInvertedBitmap(int x, int y, const Bitmap &amp;bitmap)</div><div class="ttdoc">Draws bitmap at (x, y) in inverted colors. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00125">Bitmap.h:125</a></div></div>
<div class="ttc" id="classBitmap_html_ad18d3d5a1e77d541a95e93ad1f958411"><div class="ttname"><a href="classBitmap.html#ad18d3d5a1e77d541a95e93ad1f958411">Bitmap::bitsPerPixel</a></div><div class="ttdeci">int bitsPerPixel() const </div><div class="ttdoc">Returns the number of bits per pixel for the bitmap; always 1. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00051">Bitmap.h:51</a></div></div>
<div class="ttc" id="classBitmap_html_a933763a4f3cba79fbcf97ae6d0a864aa"><div class="ttname"><a href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa">Bitmap::drawCircle</a></div><div class="ttdeci">void drawCircle(int centerX, int centerY, int radius, Color borderColor=White, Color fillColor=NoFill)</div><div class="ttdoc">Draws a circle with a specific center (centerX, centerY) and radius, with the outline in borderColor ...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00334">Bitmap.cpp:334</a></div></div>
<div class="ttc" id="classBitmap_html_a8e225a4f188269bb18265ae4b49de0a3"><div class="ttname"><a href="classBitmap.html#a8e225a4f188269bb18265ae4b49de0a3">Bitmap::setTextColor</a></div><div class="ttdeci">void setTextColor(Color color)</div><div class="ttdoc">Sets the color that will be used for drawing text with drawText() and drawChar(). ...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00076">Bitmap.h:76</a></div></div>
<div class="ttc" id="classBitmap_html_a1a11f29863ee7f36a3b15c91963102bd"><div class="ttname"><a href="classBitmap.html#a1a11f29863ee7f36a3b15c91963102bd">Bitmap::drawChar</a></div><div class="ttdeci">int drawChar(int x, int y, char ch)</div><div class="ttdoc">Draws a single character ch at (x, y). </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00585">Bitmap.cpp:585</a></div></div>
<div class="ttc" id="classBitmap_html_a2fcc98fd7580932b218134126a29ce43"><div class="ttname"><a href="classBitmap.html#a2fcc98fd7580932b218134126a29ce43">Bitmap::ProgMem</a></div><div class="ttdeci">PGM_VOID_P ProgMem</div><div class="ttdoc">Type that represents a bitmap within program memory. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00041">Bitmap.h:41</a></div></div>
<div class="ttc" id="classBitmap_html_a88d386944a7017aa776a177b10d8b2ba"><div class="ttname"><a href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Bitmap::Color</a></div><div class="ttdeci">uint8_t Color</div><div class="ttdoc">Type that represents the color of a pixel in a bitmap. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00040">Bitmap.h:40</a></div></div>
<div class="ttc" id="classBitmap_html_ab6e5f5744fd2f18478aac428b751d848"><div class="ttname"><a href="classBitmap.html#ab6e5f5744fd2f18478aac428b751d848">Bitmap::textColor</a></div><div class="ttdeci">Color textColor() const </div><div class="ttdoc">Returns the color that will be used for drawing text with drawText() and drawChar(). The default is White. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00075">Bitmap.h:75</a></div></div>
<div class="ttc" id="classBitmap_html_adcd4e3dc7594421e647b0f52da9a41a3"><div class="ttname"><a href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3">Bitmap::height</a></div><div class="ttdeci">int height() const </div><div class="ttdoc">Returns the height of the bitmap in pixels. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00049">Bitmap.h:49</a></div></div>
<div class="ttc" id="classBitmap_html_aa89170263dc1f51f6366c1907119715e"><div class="ttname"><a href="classBitmap.html#aa89170263dc1f51f6366c1907119715e">Bitmap::NoFill</a></div><div class="ttdeci">static const Color NoFill</div><div class="ttdoc">Special color value that is used with drawRect() and drawCircle() to indicate that the interior of th...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00046">Bitmap.h:46</a></div></div>
<div class="ttc" id="classBitmap_html_a0f7607b1c7867987f4500d490a666e8a"><div class="ttname"><a href="classBitmap.html#a0f7607b1c7867987f4500d490a666e8a">Bitmap::textWidth</a></div><div class="ttdeci">int textWidth(const char *str, int len=-1) const </div><div class="ttdoc">Returns the width in pixels of the len characters of str in the current font(), including inter-chara...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00675">Bitmap.cpp:675</a></div></div>
<div class="ttc" id="classBitmap_html_a99da820f9280aace6b512801d5a5e2b2"><div class="ttname"><a href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2">Bitmap::fill</a></div><div class="ttdeci">void fill(int x, int y, int width, int height, Color color)</div><div class="ttdoc">Fills the width x height pixels starting at top-left corner (x, y) with color. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00762">Bitmap.cpp:762</a></div></div>
<div class="ttc" id="classBitmap_html_a20fea2a946545aa3b5edd78245149e5f"><div class="ttname"><a href="classBitmap.html#a20fea2a946545aa3b5edd78245149e5f">Bitmap::data</a></div><div class="ttdeci">const uint8_t * data() const </div><div class="ttdoc">Returns a constant pointer to the start of the bitmap&#39;s data buffer. This is an overloaded member fun...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00054">Bitmap.h:54</a></div></div>
<div class="ttc" id="classBitmap_html_a5eeed27c176eb6e4a2c39ea83444e27d"><div class="ttname"><a href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d">Bitmap::data</a></div><div class="ttdeci">uint8_t * data()</div><div class="ttdoc">Returns a pointer to the start of the bitmap&#39;s data buffer. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00053">Bitmap.h:53</a></div></div>
<div class="ttc" id="classBitmap_html_a628bb694fcfe6eab619a4f1e152d41c4"><div class="ttname"><a href="classBitmap.html#a628bb694fcfe6eab619a4f1e152d41c4">Bitmap::textHeight</a></div><div class="ttdeci">int textHeight() const </div><div class="ttdoc">Returns the height in pixels of the current text drawing font(); or zero if font() is not set...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00716">Bitmap.cpp:716</a></div></div>
<div class="ttc" id="classBitmap_html_a9b79ac13077ca865e4515510297780bd"><div class="ttname"><a href="classBitmap.html#a9b79ac13077ca865e4515510297780bd">Bitmap::charWidth</a></div><div class="ttdeci">int charWidth(char ch) const </div><div class="ttdoc">Returns the width in pixels of ch in the current font(). </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00650">Bitmap.cpp:650</a></div></div>
<div class="ttc" id="classBitmap_html_a40526748415c8bbc58a8510d636c20f4"><div class="ttname"><a href="classBitmap.html#a40526748415c8bbc58a8510d636c20f4">Bitmap::Bitmap</a></div><div class="ttdeci">Bitmap(int width, int height)</div><div class="ttdoc">Constructs a new in-memory bitmap that is width x height pixels in size. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00088">Bitmap.cpp:88</a></div></div>
<div class="ttc" id="classBitmap_html_a3846a240722e847d3cf11f701da1ce7b"><div class="ttname"><a href="classBitmap.html#a3846a240722e847d3cf11f701da1ce7b">Bitmap::isValid</a></div><div class="ttdeci">bool isValid() const </div><div class="ttdoc">Returns true if the memory for this bitmap is valid; false otherwise. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00038">Bitmap.h:38</a></div></div>
<div class="ttc" id="classBitmap_html_a39b6754cfe50a457bbfdb1980fd87eb7"><div class="ttname"><a href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">Bitmap::White</a></div><div class="ttdeci">static const Color White</div><div class="ttdoc">Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00045">Bitmap.h:45</a></div></div>
<div class="ttc" id="classBitmap_html_a7bf0a232b4bd12573cc570cc0edef47c"><div class="ttname"><a href="classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c">Bitmap::font</a></div><div class="ttdeci">Font font() const </div><div class="ttdoc">Returns the currently selected font, or null if none selected. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00072">Bitmap.h:72</a></div></div>
<div class="ttc" id="classBitmap_html_af30df263729385ea2330effe3c80a1bc"><div class="ttname"><a href="classBitmap.html#af30df263729385ea2330effe3c80a1bc">Bitmap::stride</a></div><div class="ttdeci">int stride() const </div><div class="ttdoc">Returns the number of bytes in each line of the bitmap&#39;s data() buffer. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00050">Bitmap.h:50</a></div></div>
<div class="ttc" id="classBitmap_html_a2c7faeeb89d3624b5bbca58871785adc"><div class="ttname"><a href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Bitmap::Black</a></div><div class="ttdeci">static const Color Black</div><div class="ttdoc">Color value corresponding to &quot;black&quot;. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00044">Bitmap.h:44</a></div></div>
<div class="ttc" id="classBitmap_html_a839dc8fab05a5ebf7a6b2e61436b2fa1"><div class="ttname"><a href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1">Bitmap::clear</a></div><div class="ttdeci">void clear(Color color=Black)</div><div class="ttdoc">Clears the entire bitmap to the specified color. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00174">Bitmap.cpp:174</a></div></div>
<div class="ttc" id="classBitmap_html_a456f7d6da03189c1e7148563a891b3cf"><div class="ttname"><a href="classBitmap.html#a456f7d6da03189c1e7148563a891b3cf">Bitmap::Font</a></div><div class="ttdeci">PGM_VOID_P Font</div><div class="ttdoc">Type that represents a font within program memory. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00042">Bitmap.h:42</a></div></div>
<div class="ttc" id="classBitmap_html_a64d7a9651d5c385a044cc910a3b82837"><div class="ttname"><a href="classBitmap.html#a64d7a9651d5c385a044cc910a3b82837">Bitmap::setFont</a></div><div class="ttdeci">void setFont(Font font)</div><div class="ttdoc">Sets the font for use with drawText() and drawChar(). </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00073">Bitmap.h:73</a></div></div>
<div class="ttc" id="classBitmap_html_a6d85556bcc9fac91d33f0f6f7a6430dd"><div class="ttname"><a href="classBitmap.html#a6d85556bcc9fac91d33f0f6f7a6430dd">Bitmap::invert</a></div><div class="ttdeci">void invert(int x, int y, int width, int height)</div><div class="ttdoc">Inverts the width x height pixels starting at top-left corner (x, y). </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00902">Bitmap.cpp:902</a></div></div>
<div class="ttc" id="classBitmap_html_a3e9bcbfb584d5020bd6f0a313ee275f0"><div class="ttname"><a href="classBitmap.html#a3e9bcbfb584d5020bd6f0a313ee275f0">Bitmap::drawText</a></div><div class="ttdeci">void drawText(int x, int y, const char *str, int len=-1)</div><div class="ttdoc">Draws the len characters of str at (x, y). </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00526">Bitmap.cpp:526</a></div></div>
<div class="ttc" id="classBitmap_html_a72d2a301ec1eb1c8d0f3d64823659a8e"><div class="ttname"><a href="classBitmap.html#a72d2a301ec1eb1c8d0f3d64823659a8e">Bitmap::~Bitmap</a></div><div class="ttdeci">~Bitmap()</div><div class="ttdoc">Destroys this bitmap. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00106">Bitmap.cpp:106</a></div></div>
<div class="ttc" id="classBitmap_html_a35aa38b377d509d6c4f061a0b988d203"><div class="ttname"><a href="classBitmap.html#a35aa38b377d509d6c4f061a0b988d203">Bitmap::pixel</a></div><div class="ttdeci">Color pixel(int x, int y) const </div><div class="ttdoc">Returns the color of the pixel at (x, y); either Black or White. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8cpp_source.html#l00191">Bitmap.cpp:191</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,204 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: BlinkLED.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f"> 64</a></span>&#160;<a class="code" href="classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f">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="line" 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="line" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258"> 122</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258">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">onTime</a>;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; _offTime = <a class="code" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc">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="line" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4"> 145</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4">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">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="line" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252"> 170</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252">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 class="ttc" id="classBlinkLED_html_a380241e4dfd20e8a558487227f2f4252"><div class="ttname"><a href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252">BlinkLED::resume</a></div><div class="ttdeci">void resume()</div><div class="ttdoc">Resumes the LED blink cycle after a pause(). </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8cpp_source.html#l00170">BlinkLED.cpp:170</a></div></div>
<div class="ttc" id="classBlinkLED_html_aeeaf42b94c5392935f00f0f12a58c75e"><div class="ttname"><a href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">BlinkLED::loop</a></div><div class="ttdeci">void loop()</div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8cpp_source.html#l00079">BlinkLED.cpp:79</a></div></div>
<div class="ttc" id="classBlinkLED_html_a74c640edf1a9f6e8bea1e139462908bc"><div class="ttname"><a href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc">BlinkLED::offTime</a></div><div class="ttdeci">unsigned long offTime() const </div><div class="ttdoc">Returns the number of milliseconds the LED will be off. </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8h_source.html#l00036">BlinkLED.h:36</a></div></div>
<div class="ttc" id="classBlinkLED_html_af904a345e56d49948a042ac439d0b9d4"><div class="ttname"><a href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4">BlinkLED::setState</a></div><div class="ttdeci">void setState(bool state)</div><div class="ttdoc">Sets the current state of the LED, where true is on, false is off. </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8cpp_source.html#l00145">BlinkLED.cpp:145</a></div></div>
<div class="ttc" id="classBlinkLED_html_a47f95624881063aa91c0066ed2c92258"><div class="ttname"><a href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258">BlinkLED::setBlinkRate</a></div><div class="ttdeci">void setBlinkRate(unsigned long onTime, unsigned long offTime)</div><div class="ttdoc">Sets the onTime and offTime (in milliseconds). </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8cpp_source.html#l00122">BlinkLED.cpp:122</a></div></div>
<div class="ttc" id="classBlinkLED_html_ab89b5b3435998ea6699d4bf94866e233"><div class="ttname"><a href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233">BlinkLED::state</a></div><div class="ttdeci">bool state() const </div><div class="ttdoc">Returns the current state of the LED; true is on, false is off. </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8h_source.html#l00039">BlinkLED.h:39</a></div></div>
<div class="ttc" id="classBlinkLED_html_a8475f78f41d1a2d5d719bec8cbbb3ebb"><div class="ttname"><a href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb">BlinkLED::onTime</a></div><div class="ttdeci">unsigned long onTime() const </div><div class="ttdoc">Returns the number of milliseconds the LED will be on. </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8h_source.html#l00035">BlinkLED.h:35</a></div></div>
<div class="ttc" id="classBlinkLED_html_afc33958651e7ce6dceb428ea654c2c2f"><div class="ttname"><a href="classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f">BlinkLED::BlinkLED</a></div><div class="ttdeci">BlinkLED(uint8_t pin, unsigned long onTime, unsigned long offTime, bool initialState=false)</div><div class="ttdoc">Initialize a blinking LED on the specified pin. </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8cpp_source.html#l00064">BlinkLED.cpp:64</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,165 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: BlinkLED.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classBlinkLED.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classBlinkLED.html">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">BlinkLED</a>(uint8_t pin, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb">onTime</a>, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc">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="line" 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">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="line" 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">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">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="line" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233"> 39</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233">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">setState</a>(<span class="keywordtype">bool</span> <a class="code" href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233">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="line" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a"> 42</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a">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">resume</a>();</div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8"> 44</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8">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 class="ttc" id="classBlinkLED_html_a380241e4dfd20e8a558487227f2f4252"><div class="ttname"><a href="classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252">BlinkLED::resume</a></div><div class="ttdeci">void resume()</div><div class="ttdoc">Resumes the LED blink cycle after a pause(). </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8cpp_source.html#l00170">BlinkLED.cpp:170</a></div></div>
<div class="ttc" id="classBlinkLED_html_aeeaf42b94c5392935f00f0f12a58c75e"><div class="ttname"><a href="classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e">BlinkLED::loop</a></div><div class="ttdeci">void loop()</div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8cpp_source.html#l00079">BlinkLED.cpp:79</a></div></div>
<div class="ttc" id="classBlinkLED_html_a74c640edf1a9f6e8bea1e139462908bc"><div class="ttname"><a href="classBlinkLED.html#a74c640edf1a9f6e8bea1e139462908bc">BlinkLED::offTime</a></div><div class="ttdeci">unsigned long offTime() const </div><div class="ttdoc">Returns the number of milliseconds the LED will be off. </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8h_source.html#l00036">BlinkLED.h:36</a></div></div>
<div class="ttc" id="classBlinkLED_html_a2760a0223cd6a0598b961f681ffb5c0a"><div class="ttname"><a href="classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a">BlinkLED::pause</a></div><div class="ttdeci">void pause()</div><div class="ttdoc">Pauses the LED blink cycle in its current state(). </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8h_source.html#l00042">BlinkLED.h:42</a></div></div>
<div class="ttc" id="classBlinkLED_html_af904a345e56d49948a042ac439d0b9d4"><div class="ttname"><a href="classBlinkLED.html#af904a345e56d49948a042ac439d0b9d4">BlinkLED::setState</a></div><div class="ttdeci">void setState(bool state)</div><div class="ttdoc">Sets the current state of the LED, where true is on, false is off. </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8cpp_source.html#l00145">BlinkLED.cpp:145</a></div></div>
<div class="ttc" id="classBlinkLED_html_a47f95624881063aa91c0066ed2c92258"><div class="ttname"><a href="classBlinkLED.html#a47f95624881063aa91c0066ed2c92258">BlinkLED::setBlinkRate</a></div><div class="ttdeci">void setBlinkRate(unsigned long onTime, unsigned long offTime)</div><div class="ttdoc">Sets the onTime and offTime (in milliseconds). </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8cpp_source.html#l00122">BlinkLED.cpp:122</a></div></div>
<div class="ttc" id="classBlinkLED_html"><div class="ttname"><a href="classBlinkLED.html">BlinkLED</a></div><div class="ttdoc">Blink a LED on a digital output pin. </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8h_source.html#l00028">BlinkLED.h:28</a></div></div>
<div class="ttc" id="classBlinkLED_html_ab89b5b3435998ea6699d4bf94866e233"><div class="ttname"><a href="classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233">BlinkLED::state</a></div><div class="ttdeci">bool state() const </div><div class="ttdoc">Returns the current state of the LED; true is on, false is off. </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8h_source.html#l00039">BlinkLED.h:39</a></div></div>
<div class="ttc" id="classBlinkLED_html_a8475f78f41d1a2d5d719bec8cbbb3ebb"><div class="ttname"><a href="classBlinkLED.html#a8475f78f41d1a2d5d719bec8cbbb3ebb">BlinkLED::onTime</a></div><div class="ttdeci">unsigned long onTime() const </div><div class="ttdoc">Returns the number of milliseconds the LED will be on. </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8h_source.html#l00035">BlinkLED.h:35</a></div></div>
<div class="ttc" id="classBlinkLED_html_afc33958651e7ce6dceb428ea654c2c2f"><div class="ttname"><a href="classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f">BlinkLED::BlinkLED</a></div><div class="ttdeci">BlinkLED(uint8_t pin, unsigned long onTime, unsigned long offTime, bool initialState=false)</div><div class="ttdoc">Initialize a blinking LED on the specified pin. </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8cpp_source.html#l00064">BlinkLED.cpp:64</a></div></div>
<div class="ttc" id="classBlinkLED_html_aa0ee318b886b84fb71d5831fa456ecc8"><div class="ttname"><a href="classBlinkLED.html#aa0ee318b886b84fb71d5831fa456ecc8">BlinkLED::isPaused</a></div><div class="ttdeci">bool isPaused() const </div><div class="ttdoc">Returns true if the LED blink cycle is paused; false otherwise. </div><div class="ttdef"><b>Definition:</b> <a href="BlinkLED_8h_source.html#l00044">BlinkLED.h:44</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: BlockCipher.cpp Source File</title>
<title>Arduino Cryptography Library: BlockCipher.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -125,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: BlockCipher.h Source File</title>
<title>Arduino Cryptography Library: BlockCipher.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -146,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -1,210 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: BoolField.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998"> 77</a></span>&#160;<a class="code" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998">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">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="line" href="classBoolField.html#a49aad212ed18f84baa105c24e86281d9"> 94</a></span>&#160;<a class="code" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998">BoolField::BoolField</a>(<a class="code" href="classForm.html">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">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="line" href="classBoolField.html#af793bafc1193d79b495c2ede711bca57"> 103</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classBoolField.html#af793bafc1193d79b495c2ede711bca57">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">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="line" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09"> 113</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09">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="classField.html#aa032bbeacb405c56546cb56fbbee94f5">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="line" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577"> 131</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577">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">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">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="line" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194"> 153</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194">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">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">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="line" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a"> 173</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a">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">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">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">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">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">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">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">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 class="ttc" id="classBoolField_html_a5d4382cdcdc989de0179d8f3f3a59998"><div class="ttname"><a href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998">BoolField::BoolField</a></div><div class="ttdeci">BoolField(const String &amp;label)</div><div class="ttdoc">Constructs a new boolean field with a specific label. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8cpp_source.html#l00077">BoolField.cpp:77</a></div></div>
<div class="ttc" id="classBoolField_html_a080c575fd4a98e6afc4b9197fbab5577"><div class="ttname"><a href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577">BoolField::setValue</a></div><div class="ttdeci">void setValue(bool value)</div><div class="ttdoc">Sets the current value of this field to value. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8cpp_source.html#l00131">BoolField.cpp:131</a></div></div>
<div class="ttc" id="classBoolField_html_a9972030beec6e007b556c6eb652e163d"><div class="ttname"><a href="classBoolField.html#a9972030beec6e007b556c6eb652e163d">BoolField::trueLabel</a></div><div class="ttdeci">const String &amp; trueLabel() const </div><div class="ttdoc">Returns the string that is displayed when value() is true. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8h_source.html#l00040">BoolField.h:40</a></div></div>
<div class="ttc" id="classField_html"><div class="ttname"><a href="classField.html">Field</a></div><div class="ttdoc">Manages a single data input/output field within a Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00028">Field.h:28</a></div></div>
<div class="ttc" id="classForm_html"><div class="ttname"><a href="classForm.html">Form</a></div><div class="ttdoc">Manager for a form containing data input/output fields. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8h_source.html#l00032">Form.h:32</a></div></div>
<div class="ttc" id="classField_html_aa032bbeacb405c56546cb56fbbee94f5"><div class="ttname"><a href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">Field::enterField</a></div><div class="ttdeci">virtual void enterField(bool reverse)</div><div class="ttdoc">Enters the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00116">Field.cpp:116</a></div></div>
<div class="ttc" id="classBoolField_html_a803fc8c39765da4a44af01d925cd4194"><div class="ttname"><a href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194">BoolField::setTrueLabel</a></div><div class="ttdeci">void setTrueLabel(const String &amp;trueLabel)</div><div class="ttdoc">Sets the string that is displayed when value() is true to trueLabel. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8cpp_source.html#l00153">BoolField.cpp:153</a></div></div>
<div class="ttc" id="classField_html_a5cf21bf958a71e51feac9e1bf9f599d1"><div class="ttname"><a href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">Field::lcd</a></div><div class="ttdeci">LiquidCrystal * lcd() const </div><div class="ttdoc">Returns the LCD that this field is being drawn on. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00047">Field.h:47</a></div></div>
<div class="ttc" id="classBoolField_html_ae6a29d27139fd78f2ca96152059fb30a"><div class="ttname"><a href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a">BoolField::setFalseLabel</a></div><div class="ttdeci">void setFalseLabel(const String &amp;falseLabel)</div><div class="ttdoc">Sets the string that is displayed when value() is false to falseLabel. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8cpp_source.html#l00173">BoolField.cpp:173</a></div></div>
<div class="ttc" id="classBoolField_html_af793bafc1193d79b495c2ede711bca57"><div class="ttname"><a href="classBoolField.html#af793bafc1193d79b495c2ede711bca57">BoolField::dispatch</a></div><div class="ttdeci">int dispatch(int event)</div><div class="ttdoc">Dispatches event via this field. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8cpp_source.html#l00103">BoolField.cpp:103</a></div></div>
<div class="ttc" id="classBoolField_html_ab3f1e610b52caed7e41016f6ae3d7d09"><div class="ttname"><a href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09">BoolField::enterField</a></div><div class="ttdeci">void enterField(bool reverse)</div><div class="ttdoc">Enters the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8cpp_source.html#l00113">BoolField.cpp:113</a></div></div>
<div class="ttc" id="classBoolField_html_a59ad7a8a33290bda0d9fbb3df4f09b01"><div class="ttname"><a href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01">BoolField::falseLabel</a></div><div class="ttdeci">const String &amp; falseLabel() const </div><div class="ttdoc">Returns the string that is displayed when value() is false. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8h_source.html#l00043">BoolField.h:43</a></div></div>
<div class="ttc" id="classBoolField_html_a9147826437fbaf9b29eda9dee9e37b39"><div class="ttname"><a href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39">BoolField::value</a></div><div class="ttdeci">bool value() const </div><div class="ttdoc">Returns the current value of this field, true or false. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8h_source.html#l00037">BoolField.h:37</a></div></div>
<div class="ttc" id="classField_html_a25d86a67b321e8c642edf75a10a35f72"><div class="ttname"><a href="classField.html#a25d86a67b321e8c642edf75a10a35f72">Field::isCurrent</a></div><div class="ttdeci">bool isCurrent() const </div><div class="ttdoc">Returns true if this field is the currently-displayed field in its owning form; false otherwise...</div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00169">Field.cpp:169</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,168 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: BoolField.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classBoolField.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classBoolField.html">BoolField</a> : <span class="keyword">public</span> <a class="code" href="classField.html">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">BoolField</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998">BoolField</a>(<a class="code" href="classForm.html">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>, <span class="keyword">const</span> String &amp;label, <span class="keyword">const</span> String &amp;<a class="code" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d">trueLabel</a>, <span class="keyword">const</span> String &amp;<a class="code" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01">falseLabel</a>, <span class="keywordtype">bool</span> <a class="code" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39">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">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">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="line" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39"> 37</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39">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">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="line" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d"> 40</a></span>&#160; <span class="keyword">const</span> String &amp;<a class="code" href="classBoolField.html#a9972030beec6e007b556c6eb652e163d">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">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="line" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01"> 43</a></span>&#160; <span class="keyword">const</span> String &amp;<a class="code" href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01">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">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 class="ttc" id="classBoolField_html_a5d4382cdcdc989de0179d8f3f3a59998"><div class="ttname"><a href="classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998">BoolField::BoolField</a></div><div class="ttdeci">BoolField(const String &amp;label)</div><div class="ttdoc">Constructs a new boolean field with a specific label. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8cpp_source.html#l00077">BoolField.cpp:77</a></div></div>
<div class="ttc" id="classBoolField_html_a080c575fd4a98e6afc4b9197fbab5577"><div class="ttname"><a href="classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577">BoolField::setValue</a></div><div class="ttdeci">void setValue(bool value)</div><div class="ttdoc">Sets the current value of this field to value. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8cpp_source.html#l00131">BoolField.cpp:131</a></div></div>
<div class="ttc" id="classBoolField_html_a9972030beec6e007b556c6eb652e163d"><div class="ttname"><a href="classBoolField.html#a9972030beec6e007b556c6eb652e163d">BoolField::trueLabel</a></div><div class="ttdeci">const String &amp; trueLabel() const </div><div class="ttdoc">Returns the string that is displayed when value() is true. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8h_source.html#l00040">BoolField.h:40</a></div></div>
<div class="ttc" id="classField_html"><div class="ttname"><a href="classField.html">Field</a></div><div class="ttdoc">Manages a single data input/output field within a Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00028">Field.h:28</a></div></div>
<div class="ttc" id="classForm_html"><div class="ttname"><a href="classForm.html">Form</a></div><div class="ttdoc">Manager for a form containing data input/output fields. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8h_source.html#l00032">Form.h:32</a></div></div>
<div class="ttc" id="classField_html_a27427319be1cc92db3128637d8884ee5"><div class="ttname"><a href="classField.html#a27427319be1cc92db3128637d8884ee5">Field::form</a></div><div class="ttdeci">Form * form() const </div><div class="ttdoc">Returns the Form that owns this field; null if not associated with a Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00034">Field.h:34</a></div></div>
<div class="ttc" id="classBoolField_html_a803fc8c39765da4a44af01d925cd4194"><div class="ttname"><a href="classBoolField.html#a803fc8c39765da4a44af01d925cd4194">BoolField::setTrueLabel</a></div><div class="ttdeci">void setTrueLabel(const String &amp;trueLabel)</div><div class="ttdoc">Sets the string that is displayed when value() is true to trueLabel. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8cpp_source.html#l00153">BoolField.cpp:153</a></div></div>
<div class="ttc" id="classField_html_aaa861ef917130c989a955bc75c683afe"><div class="ttname"><a href="classField.html#aaa861ef917130c989a955bc75c683afe">Field::label</a></div><div class="ttdeci">const String &amp; label() const </div><div class="ttdoc">Returns the label to display in the first line of this field. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00041">Field.h:41</a></div></div>
<div class="ttc" id="classBoolField_html_ae6a29d27139fd78f2ca96152059fb30a"><div class="ttname"><a href="classBoolField.html#ae6a29d27139fd78f2ca96152059fb30a">BoolField::setFalseLabel</a></div><div class="ttdeci">void setFalseLabel(const String &amp;falseLabel)</div><div class="ttdoc">Sets the string that is displayed when value() is false to falseLabel. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8cpp_source.html#l00173">BoolField.cpp:173</a></div></div>
<div class="ttc" id="classBoolField_html_af793bafc1193d79b495c2ede711bca57"><div class="ttname"><a href="classBoolField.html#af793bafc1193d79b495c2ede711bca57">BoolField::dispatch</a></div><div class="ttdeci">int dispatch(int event)</div><div class="ttdoc">Dispatches event via this field. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8cpp_source.html#l00103">BoolField.cpp:103</a></div></div>
<div class="ttc" id="classBoolField_html_ab3f1e610b52caed7e41016f6ae3d7d09"><div class="ttname"><a href="classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09">BoolField::enterField</a></div><div class="ttdeci">void enterField(bool reverse)</div><div class="ttdoc">Enters the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8cpp_source.html#l00113">BoolField.cpp:113</a></div></div>
<div class="ttc" id="classBoolField_html_a59ad7a8a33290bda0d9fbb3df4f09b01"><div class="ttname"><a href="classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01">BoolField::falseLabel</a></div><div class="ttdeci">const String &amp; falseLabel() const </div><div class="ttdoc">Returns the string that is displayed when value() is false. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8h_source.html#l00043">BoolField.h:43</a></div></div>
<div class="ttc" id="classBoolField_html_a9147826437fbaf9b29eda9dee9e37b39"><div class="ttname"><a href="classBoolField.html#a9147826437fbaf9b29eda9dee9e37b39">BoolField::value</a></div><div class="ttdeci">bool value() const </div><div class="ttdoc">Returns the current value of this field, true or false. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8h_source.html#l00037">BoolField.h:37</a></div></div>
<div class="ttc" id="classBoolField_html"><div class="ttname"><a href="classBoolField.html">BoolField</a></div><div class="ttdoc">Field that manages the input of a boolean value. </div><div class="ttdef"><b>Definition:</b> <a href="BoolField_8h_source.html#l00028">BoolField.h:28</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: CBC.cpp Source File</title>
<title>Arduino Cryptography Library: CBC.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -208,7 +207,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: CBC.h Source File</title>
<title>Arduino Cryptography Library: CBC.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -172,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: CFB.cpp Source File</title>
<title>Arduino Cryptography Library: CFB.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -233,7 +232,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: CFB.h Source File</title>
<title>Arduino Cryptography Library: CFB.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -171,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: CTR.cpp Source File</title>
<title>Arduino Cryptography Library: CTR.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -228,7 +227,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: CTR.h Source File</title>
<title>Arduino Cryptography Library: CTR.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -175,7 +174,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: ChaChaPoly.cpp Source File</title>
<title>Arduino Cryptography Library: ChaChaPoly.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -263,7 +262,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: ChaChaPoly.h Source File</title>
<title>Arduino Cryptography Library: ChaChaPoly.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -173,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: ChaCha.cpp Source File</title>
<title>Arduino Cryptography Library: ChaCha.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -311,7 +310,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: ChaCha.h Source File</title>
<title>Arduino Cryptography Library: ChaCha.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -170,7 +169,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -1,240 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Charlieplex.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd"> 121</a></span>&#160;<a class="code" href="classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd">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="line" href="classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103"> 159</a></span>&#160;<a class="code" href="classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103">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="line" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a"> 277</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a">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">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="line" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b"> 296</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b">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 class="ttc" id="classCharlieplex_html_a4dbe37ccba8ba18139f4e710afdcd103"><div class="ttname"><a href="classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103">Charlieplex::~Charlieplex</a></div><div class="ttdeci">~Charlieplex()</div><div class="ttdoc">Destroys this charlieplexed array. </div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8cpp_source.html#l00159">Charlieplex.cpp:159</a></div></div>
<div class="ttc" id="classCharlieplex_html_abfb0d0456bcbadbf60c21f615adacdbd"><div class="ttname"><a href="classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd">Charlieplex::Charlieplex</a></div><div class="ttdeci">Charlieplex(const uint8_t *pins, uint8_t numPins)</div><div class="ttdoc">Constructs a new charliexplexing array where the output pins are specified by the numPins entries in ...</div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8cpp_source.html#l00121">Charlieplex.cpp:121</a></div></div>
<div class="ttc" id="classCharlieplex_html_a8313edeacd8387c428b8299d52584d6a"><div class="ttname"><a href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a">Charlieplex::loop</a></div><div class="ttdeci">void loop()</div><div class="ttdoc">Runs the multiplexing loop, to display the LED states on the charlieplexed array. ...</div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8cpp_source.html#l00277">Charlieplex.cpp:277</a></div></div>
<div class="ttc" id="classCharlieplex_html_a3c961bfff866e400dad371f0376f096b"><div class="ttname"><a href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b">Charlieplex::refresh</a></div><div class="ttdeci">void refresh()</div><div class="ttdoc">Refreshes the charlieplexed array by advancing to the next LED that needs to be lit. </div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8cpp_source.html#l00296">Charlieplex.cpp:296</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,170 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Charlieplex.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classCharlieplex.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classCharlieplex.html">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">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">~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="line" href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e"> 34</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e">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="line" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d"> 36</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d">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="line" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5"> 37</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5">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="line" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6"> 39</a></span>&#160; uint8_t <a class="code" href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6">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="line" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b"> 40</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b">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="line" 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">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="line" href="classCharlieplex.html#a8502f4c752faba37023ced587695f6a4"> 43</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classCharlieplex.html#a8502f4c752faba37023ced587695f6a4">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">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">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 class="ttc" id="classCharlieplex_html_a605a302e13005a1aa3d68d0e22bc474b"><div class="ttname"><a href="classCharlieplex.html#a605a302e13005a1aa3d68d0e22bc474b">Charlieplex::setPwmLed</a></div><div class="ttdeci">void setPwmLed(int index, uint8_t value)</div><div class="ttdoc">Sets the PWM value of the LED at index in the charliplexed array; between 0 and 255. </div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8h_source.html#l00040">Charlieplex.h:40</a></div></div>
<div class="ttc" id="classCharlieplex_html_a4dbe37ccba8ba18139f4e710afdcd103"><div class="ttname"><a href="classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103">Charlieplex::~Charlieplex</a></div><div class="ttdeci">~Charlieplex()</div><div class="ttdoc">Destroys this charlieplexed array. </div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8cpp_source.html#l00159">Charlieplex.cpp:159</a></div></div>
<div class="ttc" id="classCharlieplex_html_a8502f4c752faba37023ced587695f6a4"><div class="ttname"><a href="classCharlieplex.html#a8502f4c752faba37023ced587695f6a4">Charlieplex::setHoldTime</a></div><div class="ttdeci">void setHoldTime(unsigned long us)</div><div class="ttdoc">Sets the number of microseconds that each LED should be held on for before moving onto the next in lo...</div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8h_source.html#l00043">Charlieplex.h:43</a></div></div>
<div class="ttc" id="classCharlieplex_html"><div class="ttname"><a href="classCharlieplex.html">Charlieplex</a></div><div class="ttdoc">Manage an array of LED&#39;s in a charlieplexed arrangement. </div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8h_source.html#l00028">Charlieplex.h:28</a></div></div>
<div class="ttc" id="classCharlieplex_html_ab103c9687a0890faf72e4da79e3de0a5"><div class="ttname"><a href="classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5">Charlieplex::setLed</a></div><div class="ttdeci">void setLed(int index, bool value)</div><div class="ttdoc">Sets the value of the LED at index in the charliplexed array. </div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8h_source.html#l00037">Charlieplex.h:37</a></div></div>
<div class="ttc" id="classCharlieplex_html_a90fd09f24b62424b0b7b8bcdb0140b9d"><div class="ttname"><a href="classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d">Charlieplex::led</a></div><div class="ttdeci">bool led(int index) const </div><div class="ttdoc">Returns the value of the LED at index in the charplexed array; true if lit; false if not lit...</div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8h_source.html#l00036">Charlieplex.h:36</a></div></div>
<div class="ttc" id="classCharlieplex_html_abfb0d0456bcbadbf60c21f615adacdbd"><div class="ttname"><a href="classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd">Charlieplex::Charlieplex</a></div><div class="ttdeci">Charlieplex(const uint8_t *pins, uint8_t numPins)</div><div class="ttdoc">Constructs a new charliexplexing array where the output pins are specified by the numPins entries in ...</div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8cpp_source.html#l00121">Charlieplex.cpp:121</a></div></div>
<div class="ttc" id="classCharlieplex_html_a8313edeacd8387c428b8299d52584d6a"><div class="ttname"><a href="classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a">Charlieplex::loop</a></div><div class="ttdeci">void loop()</div><div class="ttdoc">Runs the multiplexing loop, to display the LED states on the charlieplexed array. ...</div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8cpp_source.html#l00277">Charlieplex.cpp:277</a></div></div>
<div class="ttc" id="classCharlieplex_html_a5008aa4143d381ce34a3aed1a3843e4e"><div class="ttname"><a href="classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e">Charlieplex::count</a></div><div class="ttdeci">int count() const </div><div class="ttdoc">Returns the number of LED&#39;s in this charlieplexed array based on the number of pins. </div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8h_source.html#l00034">Charlieplex.h:34</a></div></div>
<div class="ttc" id="classCharlieplex_html_abb429659a7b1ee4c7306ea659050cb30"><div class="ttname"><a href="classCharlieplex.html#abb429659a7b1ee4c7306ea659050cb30">Charlieplex::holdTime</a></div><div class="ttdeci">unsigned long holdTime() const </div><div class="ttdoc">Returns the number of microseconds that each LED should be held on for before moving onto the next in...</div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8h_source.html#l00042">Charlieplex.h:42</a></div></div>
<div class="ttc" id="classCharlieplex_html_a3c961bfff866e400dad371f0376f096b"><div class="ttname"><a href="classCharlieplex.html#a3c961bfff866e400dad371f0376f096b">Charlieplex::refresh</a></div><div class="ttdeci">void refresh()</div><div class="ttdoc">Refreshes the charlieplexed array by advancing to the next LED that needs to be lit. </div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8cpp_source.html#l00296">Charlieplex.cpp:296</a></div></div>
<div class="ttc" id="classCharlieplex_html_a89312f2fd1d27c4e56346ed9cccfb9f6"><div class="ttname"><a href="classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6">Charlieplex::pwmLed</a></div><div class="ttdeci">uint8_t pwmLed(int index) const </div><div class="ttdoc">Returns the PWM value of the LED at index in the charplexed array; between 0 and 255. </div><div class="ttdef"><b>Definition:</b> <a href="Charlieplex_8h_source.html#l00039">Charlieplex.h:39</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,168 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: ChaseLEDs.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78"> 71</a></span>&#160;<a class="code" href="classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78">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="line" 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">advance</a>(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525">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">advance</a>(<a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525">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="line" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b"> 136</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b">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 class="ttc" id="classChaseLEDs_html_aa0f4e0bd07dd65ee5574e894a612486b"><div class="ttname"><a href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b">ChaseLEDs::advance</a></div><div class="ttdeci">virtual void advance(uint8_t prevPin, uint8_t nextPin)</div><div class="ttdoc">Advances to the next LED in sequence, turning off prevPin, and turning on nextPin. </div><div class="ttdef"><b>Definition:</b> <a href="ChaseLEDs_8cpp_source.html#l00136">ChaseLEDs.cpp:136</a></div></div>
<div class="ttc" id="classChaseLEDs_html_a27c460fcb341c2dc2fcf9341616eb525"><div class="ttname"><a href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525">ChaseLEDs::previousPin</a></div><div class="ttdeci">uint8_t previousPin(int n) const </div><div class="ttdoc">Returns the pin that is n steps back in the sequence. </div><div class="ttdef"><b>Definition:</b> <a href="ChaseLEDs_8h_source.html#l00040">ChaseLEDs.h:40</a></div></div>
<div class="ttc" id="classChaseLEDs_html_a8745fa6b9f33b6c6274a563dd4dea786"><div class="ttname"><a href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">ChaseLEDs::loop</a></div><div class="ttdeci">void loop()</div><div class="ttdef"><b>Definition:</b> <a href="ChaseLEDs_8cpp_source.html#l00087">ChaseLEDs.cpp:87</a></div></div>
<div class="ttc" id="classChaseLEDs_html_ab6bb3da371d3730a6552e93a9b2eab78"><div class="ttname"><a href="classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78">ChaseLEDs::ChaseLEDs</a></div><div class="ttdeci">ChaseLEDs(const uint8_t *pins, int num, unsigned long advanceTime)</div><div class="ttdoc">Initializes the LED chaser. </div><div class="ttdef"><b>Definition:</b> <a href="ChaseLEDs_8cpp_source.html#l00071">ChaseLEDs.cpp:71</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,157 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: ChaseLEDs.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classChaseLEDs.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classChaseLEDs.html">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">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">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="line" 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">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="line" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7"> 36</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7">setAdvanceTime</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> advanceTime) { _advanceTime = <a class="code" href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700">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">advance</a>(uint8_t prevPin, uint8_t nextPin);</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525"> 40</a></span>&#160; uint8_t <a class="code" href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525">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 class="ttc" id="classChaseLEDs_html_aed060c51bb63dd8065be89f895989700"><div class="ttname"><a href="classChaseLEDs.html#aed060c51bb63dd8065be89f895989700">ChaseLEDs::advanceTime</a></div><div class="ttdeci">unsigned long advanceTime() const </div><div class="ttdoc">Returns the number of milliseconds that each LED will be lit in the chase sequence. </div><div class="ttdef"><b>Definition:</b> <a href="ChaseLEDs_8h_source.html#l00035">ChaseLEDs.h:35</a></div></div>
<div class="ttc" id="classChaseLEDs_html_aa0f4e0bd07dd65ee5574e894a612486b"><div class="ttname"><a href="classChaseLEDs.html#aa0f4e0bd07dd65ee5574e894a612486b">ChaseLEDs::advance</a></div><div class="ttdeci">virtual void advance(uint8_t prevPin, uint8_t nextPin)</div><div class="ttdoc">Advances to the next LED in sequence, turning off prevPin, and turning on nextPin. </div><div class="ttdef"><b>Definition:</b> <a href="ChaseLEDs_8cpp_source.html#l00136">ChaseLEDs.cpp:136</a></div></div>
<div class="ttc" id="classChaseLEDs_html_a27c460fcb341c2dc2fcf9341616eb525"><div class="ttname"><a href="classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525">ChaseLEDs::previousPin</a></div><div class="ttdeci">uint8_t previousPin(int n) const </div><div class="ttdoc">Returns the pin that is n steps back in the sequence. </div><div class="ttdef"><b>Definition:</b> <a href="ChaseLEDs_8h_source.html#l00040">ChaseLEDs.h:40</a></div></div>
<div class="ttc" id="classChaseLEDs_html_a8745fa6b9f33b6c6274a563dd4dea786"><div class="ttname"><a href="classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786">ChaseLEDs::loop</a></div><div class="ttdeci">void loop()</div><div class="ttdef"><b>Definition:</b> <a href="ChaseLEDs_8cpp_source.html#l00087">ChaseLEDs.cpp:87</a></div></div>
<div class="ttc" id="classChaseLEDs_html"><div class="ttname"><a href="classChaseLEDs.html">ChaseLEDs</a></div><div class="ttdoc">Chase LED&#39;s on output pins in a defined sequence. </div><div class="ttdef"><b>Definition:</b> <a href="ChaseLEDs_8h_source.html#l00028">ChaseLEDs.h:28</a></div></div>
<div class="ttc" id="classChaseLEDs_html_ab6bb3da371d3730a6552e93a9b2eab78"><div class="ttname"><a href="classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78">ChaseLEDs::ChaseLEDs</a></div><div class="ttdeci">ChaseLEDs(const uint8_t *pins, int num, unsigned long advanceTime)</div><div class="ttdoc">Initializes the LED chaser. </div><div class="ttdef"><b>Definition:</b> <a href="ChaseLEDs_8cpp_source.html#l00071">ChaseLEDs.cpp:71</a></div></div>
<div class="ttc" id="classChaseLEDs_html_af560270f72302c19fb7f95002089c9d7"><div class="ttname"><a href="classChaseLEDs.html#af560270f72302c19fb7f95002089c9d7">ChaseLEDs::setAdvanceTime</a></div><div class="ttdeci">void setAdvanceTime(unsigned long advanceTime)</div><div class="ttdoc">Sets the number of milliseconds to advance between LED&#39;s to advanceTime. </div><div class="ttdef"><b>Definition:</b> <a href="ChaseLEDs_8h_source.html#l00036">ChaseLEDs.h:36</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Cipher.cpp Source File</title>
<title>Arduino Cryptography Library: Cipher.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -125,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Cipher.h Source File</title>
<title>Arduino Cryptography Library: Cipher.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -148,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Crypto.cpp Source File</title>
<title>Arduino Cryptography Library: Crypto.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -158,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Crypto.h Source File</title>
<title>Arduino Cryptography Library: Crypto.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -137,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Curve25519.cpp Source File</title>
<title>Arduino Cryptography Library: Curve25519.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -1459,7 +1458,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Curve25519.h Source File</title>
<title>Arduino Cryptography Library: Curve25519.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -173,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

BIN
Cylon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

View File

@ -1,464 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: DMD.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classDMD.html#affd37accffe951c8878434dfa1245809"> 237</a></span>&#160;<a class="code" href="classDMD.html#affd37accffe951c8878434dfa1245809">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">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="line" href="classDMD.html#a7b37e05584d3e0308163700920df99b2"> 278</a></span>&#160;<a class="code" href="classDMD.html#a7b37e05584d3e0308163700920df99b2">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="line" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723"> 314</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723">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">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="line" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a"> 363</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a">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="line" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736"> 396</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736">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">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="line" href="classDMD.html#a2c74a0845ef6080056b972d490648114"> 420</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114">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">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="line" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8"> 478</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8">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="line" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2"> 563</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2">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="line" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33"> 614</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33">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="line" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97"> 646</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97">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="line" href="classDMD.html#a52fe885bfb380b74df54c96221811cff"> 674</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a52fe885bfb380b74df54c96221811cff">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="line" href="classDMD.html#a557412f734fc4596e1102bf71e110ea0"> 690</a></span>&#160;<a class="code" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">DMD::Color</a> <a class="code" href="classDMD.html#a557412f734fc4596e1102bf71e110ea0">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">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">Black</a>;</div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;}</div>
<div class="ttc" id="classDMD_html_a39af27e216f654ecc7e60b0614cb6b33"><div class="ttname"><a href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33">DMD::disableTimer1</a></div><div class="ttdeci">void disableTimer1()</div><div class="ttdoc">Disables Timer1 overflow interrupts. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00614">DMD.cpp:614</a></div></div>
<div class="ttc" id="classDMD_html_a2c74a0845ef6080056b972d490648114"><div class="ttname"><a href="classDMD.html#a2c74a0845ef6080056b972d490648114">DMD::loop</a></div><div class="ttdeci">void loop()</div><div class="ttdoc">Performs regular display refresh activities from the application&#39;s main loop. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00420">DMD.cpp:420</a></div></div>
<div class="ttc" id="classDMD_html_a52fe885bfb380b74df54c96221811cff"><div class="ttname"><a href="classDMD.html#a52fe885bfb380b74df54c96221811cff">DMD::disableTimer2</a></div><div class="ttdeci">void disableTimer2()</div><div class="ttdoc">Disables Timer2 overflow interrupts. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00674">DMD.cpp:674</a></div></div>
<div class="ttc" id="classBitmap_html"><div class="ttname"><a href="classBitmap.html">Bitmap</a></div><div class="ttdoc">Represents a monochrome bitmap within main memory. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00032">Bitmap.h:32</a></div></div>
<div class="ttc" id="classDMD_html_aab1f3ba29c053d630ae12865d22166ec"><div class="ttname"><a href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec">DMD::doubleBuffer</a></div><div class="ttdeci">bool doubleBuffer() const </div><div class="ttdoc">Returns true if the display is double-buffered; false if single-buffered. The default is false...</div><div class="ttdef"><b>Definition:</b> <a href="DMD_8h_source.html#l00034">DMD.h:34</a></div></div>
<div class="ttc" id="classDMD_html_a80269ccd44b3ef9ee15f0a1009b7a60a"><div class="ttname"><a href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a">DMD::swapBuffers</a></div><div class="ttdeci">void swapBuffers()</div><div class="ttdoc">Swaps the buffers that are used for rendering to the display. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00363">DMD.cpp:363</a></div></div>
<div class="ttc" id="classDMD_html_a4c3b04b384f3d656a9b59690836775e2"><div class="ttname"><a href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2">DMD::enableTimer1</a></div><div class="ttdeci">void enableTimer1()</div><div class="ttdoc">Enables Timer1 overflow interrupts for updating this display. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00563">DMD.cpp:563</a></div></div>
<div class="ttc" id="classDMD_html_a7b37e05584d3e0308163700920df99b2"><div class="ttname"><a href="classDMD.html#a7b37e05584d3e0308163700920df99b2">DMD::~DMD</a></div><div class="ttdeci">~DMD()</div><div class="ttdoc">Destroys this dot matrix display handler. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00278">DMD.cpp:278</a></div></div>
<div class="ttc" id="classBitmap_html_a88d386944a7017aa776a177b10d8b2ba"><div class="ttname"><a href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Bitmap::Color</a></div><div class="ttdeci">uint8_t Color</div><div class="ttdoc">Type that represents the color of a pixel in a bitmap. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00040">Bitmap.h:40</a></div></div>
<div class="ttc" id="classDMD_html_a0b1771cf790b2b62eea55e56b02e3736"><div class="ttname"><a href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736">DMD::swapBuffersAndCopy</a></div><div class="ttdeci">void swapBuffersAndCopy()</div><div class="ttdoc">Swaps the buffers that are used for rendering to the display and copies the former back buffer conten...</div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00396">DMD.cpp:396</a></div></div>
<div class="ttc" id="classDMD_html_affd37accffe951c8878434dfa1245809"><div class="ttname"><a href="classDMD.html#affd37accffe951c8878434dfa1245809">DMD::DMD</a></div><div class="ttdeci">DMD(int widthPanels=1, int heightPanels=1)</div><div class="ttdoc">Constructs a new dot matrix display handler for a display that is widthPanels x heightPanels in size...</div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00237">DMD.cpp:237</a></div></div>
<div class="ttc" id="classDMD_html_a5469775db7fafebca2cdbc6a6372fb97"><div class="ttname"><a href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97">DMD::enableTimer2</a></div><div class="ttdeci">void enableTimer2()</div><div class="ttdoc">Enables Timer2 overflow interrupts for updating this display. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00646">DMD.cpp:646</a></div></div>
<div class="ttc" id="classDMD_html_a557412f734fc4596e1102bf71e110ea0"><div class="ttname"><a href="classDMD.html#a557412f734fc4596e1102bf71e110ea0">DMD::fromRGB</a></div><div class="ttdeci">static Color fromRGB(uint8_t r, uint8_t g, uint8_t b)</div><div class="ttdoc">Converts an RGB value into a pixel color value. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00690">DMD.cpp:690</a></div></div>
<div class="ttc" id="classBitmap_html_a39b6754cfe50a457bbfdb1980fd87eb7"><div class="ttname"><a href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">Bitmap::White</a></div><div class="ttdeci">static const Color White</div><div class="ttdoc">Color value corresponding to &quot;white&quot;. If the bitmap is displayed on a LED array, then it may have a d...</div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00045">Bitmap.h:45</a></div></div>
<div class="ttc" id="classDMD_html_a9e4bf2a9d247312d35c1401ff61261c8"><div class="ttname"><a href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8">DMD::refresh</a></div><div class="ttdeci">void refresh()</div><div class="ttdoc">Refresh the display. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00478">DMD.cpp:478</a></div></div>
<div class="ttc" id="classDMD_html_a6fbdcf8832f91d02500cb7a9b84d2723"><div class="ttname"><a href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723">DMD::setDoubleBuffer</a></div><div class="ttdeci">void setDoubleBuffer(bool doubleBuffer)</div><div class="ttdoc">Enables or disables double-buffering according to doubleBuffer. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00314">DMD.cpp:314</a></div></div>
<div class="ttc" id="classBitmap_html_a2c7faeeb89d3624b5bbca58871785adc"><div class="ttname"><a href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Bitmap::Black</a></div><div class="ttdeci">static const Color Black</div><div class="ttdoc">Color value corresponding to &quot;black&quot;. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00044">Bitmap.h:44</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,178 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: DMD.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classDMD.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classDMD.html">DMD</a> : <span class="keyword">public</span> <a class="code" href="classBitmap.html">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">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">~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="line" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec"> 34</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec">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">setDoubleBuffer</a>(<span class="keywordtype">bool</span> <a class="code" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec">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">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">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">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">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">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">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">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">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">Color</a> <a class="code" href="classDMD.html#a557412f734fc4596e1102bf71e110ea0">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">DMD</a>(<span class="keyword">const</span> <a class="code" href="classDMD.html">DMD</a> &amp;other) : <a class="code" href="classBitmap.html">Bitmap</a>(other) {}</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classDMD.html">DMD</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="classDMD.html">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 class="ttc" id="classDMD_html"><div class="ttname"><a href="classDMD.html">DMD</a></div><div class="ttdoc">Handle large dot matrix displays composed of LED&#39;s. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8h_source.html#l00028">DMD.h:28</a></div></div>
<div class="ttc" id="classDMD_html_a39af27e216f654ecc7e60b0614cb6b33"><div class="ttname"><a href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33">DMD::disableTimer1</a></div><div class="ttdeci">void disableTimer1()</div><div class="ttdoc">Disables Timer1 overflow interrupts. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00614">DMD.cpp:614</a></div></div>
<div class="ttc" id="classDMD_html_a2c74a0845ef6080056b972d490648114"><div class="ttname"><a href="classDMD.html#a2c74a0845ef6080056b972d490648114">DMD::loop</a></div><div class="ttdeci">void loop()</div><div class="ttdoc">Performs regular display refresh activities from the application&#39;s main loop. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00420">DMD.cpp:420</a></div></div>
<div class="ttc" id="classDMD_html_a52fe885bfb380b74df54c96221811cff"><div class="ttname"><a href="classDMD.html#a52fe885bfb380b74df54c96221811cff">DMD::disableTimer2</a></div><div class="ttdeci">void disableTimer2()</div><div class="ttdoc">Disables Timer2 overflow interrupts. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00674">DMD.cpp:674</a></div></div>
<div class="ttc" id="classBitmap_html"><div class="ttname"><a href="classBitmap.html">Bitmap</a></div><div class="ttdoc">Represents a monochrome bitmap within main memory. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00032">Bitmap.h:32</a></div></div>
<div class="ttc" id="classDMD_html_aab1f3ba29c053d630ae12865d22166ec"><div class="ttname"><a href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec">DMD::doubleBuffer</a></div><div class="ttdeci">bool doubleBuffer() const </div><div class="ttdoc">Returns true if the display is double-buffered; false if single-buffered. The default is false...</div><div class="ttdef"><b>Definition:</b> <a href="DMD_8h_source.html#l00034">DMD.h:34</a></div></div>
<div class="ttc" id="classDMD_html_a80269ccd44b3ef9ee15f0a1009b7a60a"><div class="ttname"><a href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a">DMD::swapBuffers</a></div><div class="ttdeci">void swapBuffers()</div><div class="ttdoc">Swaps the buffers that are used for rendering to the display. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00363">DMD.cpp:363</a></div></div>
<div class="ttc" id="classDMD_html_a4c3b04b384f3d656a9b59690836775e2"><div class="ttname"><a href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2">DMD::enableTimer1</a></div><div class="ttdeci">void enableTimer1()</div><div class="ttdoc">Enables Timer1 overflow interrupts for updating this display. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00563">DMD.cpp:563</a></div></div>
<div class="ttc" id="classDMD_html_a7b37e05584d3e0308163700920df99b2"><div class="ttname"><a href="classDMD.html#a7b37e05584d3e0308163700920df99b2">DMD::~DMD</a></div><div class="ttdeci">~DMD()</div><div class="ttdoc">Destroys this dot matrix display handler. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00278">DMD.cpp:278</a></div></div>
<div class="ttc" id="classBitmap_html_a88d386944a7017aa776a177b10d8b2ba"><div class="ttname"><a href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Bitmap::Color</a></div><div class="ttdeci">uint8_t Color</div><div class="ttdoc">Type that represents the color of a pixel in a bitmap. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00040">Bitmap.h:40</a></div></div>
<div class="ttc" id="classDMD_html_a0b1771cf790b2b62eea55e56b02e3736"><div class="ttname"><a href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736">DMD::swapBuffersAndCopy</a></div><div class="ttdeci">void swapBuffersAndCopy()</div><div class="ttdoc">Swaps the buffers that are used for rendering to the display and copies the former back buffer conten...</div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00396">DMD.cpp:396</a></div></div>
<div class="ttc" id="classDMD_html_affd37accffe951c8878434dfa1245809"><div class="ttname"><a href="classDMD.html#affd37accffe951c8878434dfa1245809">DMD::DMD</a></div><div class="ttdeci">DMD(int widthPanels=1, int heightPanels=1)</div><div class="ttdoc">Constructs a new dot matrix display handler for a display that is widthPanels x heightPanels in size...</div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00237">DMD.cpp:237</a></div></div>
<div class="ttc" id="classDMD_html_a5469775db7fafebca2cdbc6a6372fb97"><div class="ttname"><a href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97">DMD::enableTimer2</a></div><div class="ttdeci">void enableTimer2()</div><div class="ttdoc">Enables Timer2 overflow interrupts for updating this display. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00646">DMD.cpp:646</a></div></div>
<div class="ttc" id="classDMD_html_a557412f734fc4596e1102bf71e110ea0"><div class="ttname"><a href="classDMD.html#a557412f734fc4596e1102bf71e110ea0">DMD::fromRGB</a></div><div class="ttdeci">static Color fromRGB(uint8_t r, uint8_t g, uint8_t b)</div><div class="ttdoc">Converts an RGB value into a pixel color value. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00690">DMD.cpp:690</a></div></div>
<div class="ttc" id="classDMD_html_a9e4bf2a9d247312d35c1401ff61261c8"><div class="ttname"><a href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8">DMD::refresh</a></div><div class="ttdeci">void refresh()</div><div class="ttdoc">Refresh the display. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00478">DMD.cpp:478</a></div></div>
<div class="ttc" id="classDMD_html_a6fbdcf8832f91d02500cb7a9b84d2723"><div class="ttname"><a href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723">DMD::setDoubleBuffer</a></div><div class="ttdeci">void setDoubleBuffer(bool doubleBuffer)</div><div class="ttdoc">Enables or disables double-buffering according to doubleBuffer. </div><div class="ttdef"><b>Definition:</b> <a href="DMD_8cpp_source.html#l00314">DMD.cpp:314</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,423 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: DS1307RTC.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classDS1307RTC.html#a092805d75bea323dc4be062638bff866"> 83</a></span>&#160;<a class="code" href="classDS1307RTC.html#a092805d75bea323dc4be062638bff866">DS1307RTC::DS1307RTC</a>(<a class="code" href="classI2CMaster.html">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">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">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">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">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="line" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0"> 118</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0">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="line" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6"> 157</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6">DS1307RTC::readTime</a>(<a class="code" href="structRTCTime.html">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">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">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">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">second</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">minute</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">hour</a> = fromHourBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">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">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">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="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec">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="line" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4"> 177</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4">DS1307RTC::readDate</a>(<a class="code" href="structRTCDate.html">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="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e">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">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">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">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">day</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">month</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">year</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">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">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">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="line" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8"> 202</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8">DS1307RTC::writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html">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">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">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4">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">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="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e">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="line" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230"> 216</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230">DS1307RTC::writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html">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">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">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f">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">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="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7">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="line" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a"> 230</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a">DS1307RTC::readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html">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">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">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">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">hour</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">minute</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">flags</a> = _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">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">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">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="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66">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="line" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75"> 250</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75">DS1307RTC::writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html">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">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">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe">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">write</a>(value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">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">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="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e">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="line" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248"> 264</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248">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="line" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a"> 269</a></span>&#160;uint8_t <a class="code" href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a">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="classRTC.html#a0f47b10b436e3f9d36e04ec907579431">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="line" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6"> 277</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6">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="classRTC.html#a1cab6397ec04b1e2b3feea5b3cd1f749">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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">endWrite</a>();</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div>
<div class="ttc" id="structRTCDate_html_a6e6196059b36186041a5312400ea9202"><div class="ttname"><a href="structRTCDate.html#a6e6196059b36186041a5312400ea9202">RTCDate::month</a></div><div class="ttdeci">uint8_t month</div><div class="ttdoc">Month of the year (1-12) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00038">RTC.h:38</a></div></div>
<div class="ttc" id="classRTC_html_a102e2ec15bf0273d8f7e9ce4b6dcc96e"><div class="ttname"><a href="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e">RTC::writeTime</a></div><div class="ttdeci">virtual void writeTime(const RTCTime *value)</div><div class="ttdoc">Updates the time in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00179">RTC.cpp:179</a></div></div>
<div class="ttc" id="structRTCTime_html_acf2161ca037080dc4b767e636ad8db84"><div class="ttname"><a href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84">RTCTime::minute</a></div><div class="ttdeci">uint8_t minute</div><div class="ttdoc">Minute within the hour (0-59) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00031">RTC.h:31</a></div></div>
<div class="ttc" id="classRTC_html_ade282d7a60147c3f0269f1fcd59c8d66"><div class="ttname"><a href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66">RTC::readAlarm</a></div><div class="ttdeci">virtual void readAlarm(uint8_t alarmNum, RTCAlarm *value)</div><div class="ttdoc">Reads the details of the alarm with index alarmNum into value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00209">RTC.cpp:209</a></div></div>
<div class="ttc" id="classRTC_html_aa1e21bf42ebd4456919744ae0f4f631e"><div class="ttname"><a href="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e">RTC::readDate</a></div><div class="ttdeci">virtual void readDate(RTCDate *value)</div><div class="ttdoc">Reads the current date from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00169">RTC.cpp:169</a></div></div>
<div class="ttc" id="classDS1307RTC_html_acd9800d6df2244b8e4e790480a1d62a6"><div class="ttname"><a href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6">DS1307RTC::readTime</a></div><div class="ttdeci">void readTime(RTCTime *value)</div><div class="ttdoc">Reads the current time from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00157">DS1307RTC.cpp:157</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a6fec8ff71f33cc1a129eb0bd009600b0"><div class="ttname"><a href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0">DS1307RTC::hasUpdates</a></div><div class="ttdeci">bool hasUpdates()</div><div class="ttdoc">Returns true if the realtime clock has updated since the last call to this function. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00118">DS1307RTC.cpp:118</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a7354aed91d7c94d0d7b2144b1bf32c75"><div class="ttname"><a href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75">DS1307RTC::writeAlarm</a></div><div class="ttdeci">void writeAlarm(uint8_t alarmNum, const RTCAlarm *value)</div><div class="ttdoc">Updates the details of the alarm with index alarmNum from value. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00250">DS1307RTC.cpp:250</a></div></div>
<div class="ttc" id="classI2CMaster_html_a0bf6b84cb1e2b3a37a4a0260d0b6f960"><div class="ttname"><a href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">I2CMaster::write</a></div><div class="ttdeci">virtual void write(uint8_t value)=0</div><div class="ttdoc">Writes a single byte value on the I2C bus. </div></div>
<div class="ttc" id="classRTC_html_a0e96c91efd9e7a6340effdae3eadf17e"><div class="ttname"><a href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e">RTC::writeAlarm</a></div><div class="ttdeci">virtual void writeAlarm(uint8_t alarmNum, const RTCAlarm *value)</div><div class="ttdoc">Updates the details of the alarm with index alarmNum from value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00224">RTC.cpp:224</a></div></div>
<div class="ttc" id="classRTC_html_aee5ae8f600ee5296e65635c0d836fca3"><div class="ttname"><a href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">RTC::ALARM_COUNT</a></div><div class="ttdeci">static const uint8_t ALARM_COUNT</div><div class="ttdoc">Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm(). </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00077">RTC.h:77</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a0a5d0d86a0345420ebb289ea724b19e8"><div class="ttname"><a href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8">DS1307RTC::writeTime</a></div><div class="ttdeci">void writeTime(const RTCTime *value)</div><div class="ttdoc">Updates the time in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00202">DS1307RTC.cpp:202</a></div></div>
<div class="ttc" id="classRTC_html_ae667600d05c8e7b06a93574dd068a4d7"><div class="ttname"><a href="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7">RTC::writeDate</a></div><div class="ttdeci">virtual void writeDate(const RTCDate *value)</div><div class="ttdoc">Updates the date in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00194">RTC.cpp:194</a></div></div>
<div class="ttc" id="classI2CMaster_html_a4e5f1a1a4c2242699be5a35fc4872fde"><div class="ttname"><a href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde">I2CMaster::startRead</a></div><div class="ttdeci">virtual bool startRead(unsigned int address, unsigned int count)=0</div><div class="ttdoc">Starts a read operation for count bytes by sending the start condition and the I2C control byte...</div></div>
<div class="ttc" id="structRTCAlarm_html_a75bdc42acd3ab3ad495680c6b6a34692"><div class="ttname"><a href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692">RTCAlarm::hour</a></div><div class="ttdeci">uint8_t hour</div><div class="ttdoc">Hour of the day for the alarm (0-23). </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00046">RTC.h:46</a></div></div>
<div class="ttc" id="structRTCAlarm_html_a0f2ef7363cb60a26642d5295b77ca19e"><div class="ttname"><a href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">RTCAlarm::flags</a></div><div class="ttdeci">uint8_t flags</div><div class="ttdoc">Additional flags for the alarm. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00049">RTC.h:49</a></div></div>
<div class="ttc" id="structRTCDate_html"><div class="ttname"><a href="structRTCDate.html">RTCDate</a></div><div class="ttdoc">Stores date information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00035">RTC.h:35</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a6fb56d1690bc30e7995961a5b5e5fdc4"><div class="ttname"><a href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4">DS1307RTC::readDate</a></div><div class="ttdeci">void readDate(RTCDate *value)</div><div class="ttdoc">Reads the current date from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00177">DS1307RTC.cpp:177</a></div></div>
<div class="ttc" id="classI2CMaster_html_a01960fc821cb25e4c88c26d2c6107e35"><div class="ttname"><a href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">I2CMaster::startWrite</a></div><div class="ttdeci">virtual void startWrite(unsigned int address)</div><div class="ttdoc">Starts a write operation by sending a start condition and the I2C control byte. </div></div>
<div class="ttc" id="classI2CMaster_html_ab29f63551ddeb032a91505d1c0b8ac41"><div class="ttname"><a href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">I2CMaster::endWrite</a></div><div class="ttdeci">virtual bool endWrite()=0</div><div class="ttdoc">Ends the current write operation. </div></div>
<div class="ttc" id="structRTCDate_html_a7d31822daff3c3fc947386abd897732f"><div class="ttname"><a href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f">RTCDate::year</a></div><div class="ttdeci">unsigned int year</div><div class="ttdoc">Year (4-digit) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00037">RTC.h:37</a></div></div>
<div class="ttc" id="classRTC_html_a1cab6397ec04b1e2b3feea5b3cd1f749"><div class="ttname"><a href="classRTC.html#a1cab6397ec04b1e2b3feea5b3cd1f749">RTC::writeByte</a></div><div class="ttdeci">virtual void writeByte(uint8_t offset, uint8_t value)</div><div class="ttdoc">Writes value to offset within the realtime clock&#39;s non-volatile memory. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00262">RTC.cpp:262</a></div></div>
<div class="ttc" id="structRTCAlarm_html_ad9a75ceb4b4b3474baa66dd5466e62fe"><div class="ttname"><a href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe">RTCAlarm::minute</a></div><div class="ttdeci">uint8_t minute</div><div class="ttdoc">Minute of the hour for the alarm (0-59). </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00047">RTC.h:47</a></div></div>
<div class="ttc" id="classRTC_html_a0f47b10b436e3f9d36e04ec907579431"><div class="ttname"><a href="classRTC.html#a0f47b10b436e3f9d36e04ec907579431">RTC::readByte</a></div><div class="ttdeci">virtual uint8_t readByte(uint8_t offset)</div><div class="ttdoc">Reads the byte at offset within the realtime clock&#39;s non-volatile memory. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00247">RTC.cpp:247</a></div></div>
<div class="ttc" id="structRTCTime_html"><div class="ttname"><a href="structRTCTime.html">RTCTime</a></div><div class="ttdoc">Stores time information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00028">RTC.h:28</a></div></div>
<div class="ttc" id="classI2CMaster_html"><div class="ttname"><a href="classI2CMaster.html">I2CMaster</a></div><div class="ttdoc">Abstract base class for I2C master implementations. </div><div class="ttdef"><b>Definition:</b> <a href="I2CMaster_8h_source.html#l00028">I2CMaster.h:28</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a4f7346be33612cf9ecd96080eb046230"><div class="ttname"><a href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230">DS1307RTC::writeDate</a></div><div class="ttdeci">void writeDate(const RTCDate *value)</div><div class="ttdoc">Updates the date in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00216">DS1307RTC.cpp:216</a></div></div>
<div class="ttc" id="structRTCAlarm_html"><div class="ttname"><a href="structRTCAlarm.html">RTCAlarm</a></div><div class="ttdoc">Stores alarm information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00042">RTC.h:42</a></div></div>
<div class="ttc" id="classDS1307RTC_html_aab608eb1630520ee122306b721fdc47a"><div class="ttname"><a href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a">DS1307RTC::readAlarm</a></div><div class="ttdeci">void readAlarm(uint8_t alarmNum, RTCAlarm *value)</div><div class="ttdoc">Reads the details of the alarm with index alarmNum into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00230">DS1307RTC.cpp:230</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a092805d75bea323dc4be062638bff866"><div class="ttname"><a href="classDS1307RTC.html#a092805d75bea323dc4be062638bff866">DS1307RTC::DS1307RTC</a></div><div class="ttdeci">DS1307RTC(I2CMaster &amp;bus, uint8_t oneHzPin=255)</div><div class="ttdoc">Attaches to a realtime clock slave device on bus. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00083">DS1307RTC.cpp:83</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a93c25269a9b78ab3331354db26672248"><div class="ttname"><a href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248">DS1307RTC::byteCount</a></div><div class="ttdeci">int byteCount() const </div><div class="ttdoc">Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...</div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00264">DS1307RTC.cpp:264</a></div></div>
<div class="ttc" id="classI2CMaster_html_a49eeebb57f6bc06de39973fe836369cd"><div class="ttname"><a href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">I2CMaster::read</a></div><div class="ttdeci">virtual uint8_t read()=0</div><div class="ttdoc">Reads a single byte from the I2C bus. </div></div>
<div class="ttc" id="classDS1307RTC_html_a7364609a201022688778ab116c3e4f4a"><div class="ttname"><a href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a">DS1307RTC::readByte</a></div><div class="ttdeci">uint8_t readByte(uint8_t offset)</div><div class="ttdoc">Reads the byte at offset within the realtime clock&#39;s non-volatile memory. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00269">DS1307RTC.cpp:269</a></div></div>
<div class="ttc" id="structRTCTime_html_a98ba717092ef856dd2b773ba02fcb1a4"><div class="ttname"><a href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4">RTCTime::hour</a></div><div class="ttdeci">uint8_t hour</div><div class="ttdoc">Hour of the day (0-23) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00030">RTC.h:30</a></div></div>
<div class="ttc" id="structRTCDate_html_a2d68ff3fb90240df522b41222362704c"><div class="ttname"><a href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c">RTCDate::day</a></div><div class="ttdeci">uint8_t day</div><div class="ttdoc">Day of the month (1-31) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00039">RTC.h:39</a></div></div>
<div class="ttc" id="structRTCTime_html_a87b7c02e535d808dcba04c77e34abb91"><div class="ttname"><a href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91">RTCTime::second</a></div><div class="ttdeci">uint8_t second</div><div class="ttdoc">Second within the minute (0-59) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00032">RTC.h:32</a></div></div>
<div class="ttc" id="classRTC_html_aaf0a5c1f32f210a49718d148620b5bec"><div class="ttname"><a href="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec">RTC::readTime</a></div><div class="ttdeci">virtual void readTime(RTCTime *value)</div><div class="ttdoc">Reads the current time from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00144">RTC.cpp:144</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a6ef435fd4aa4adf8eefdf8b1741f5ba6"><div class="ttname"><a href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6">DS1307RTC::writeByte</a></div><div class="ttdeci">void writeByte(uint8_t offset, uint8_t value)</div><div class="ttdoc">Writes value to offset within the realtime clock&#39;s non-volatile memory. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00277">DS1307RTC.cpp:277</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,180 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: DS1307RTC.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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">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="line" href="classDS1307RTC.html"> 30</a></span>&#160;<span class="keyword">class </span><a class="code" href="classDS1307RTC.html">DS1307RTC</a> : <span class="keyword">public</span> <a class="code" href="classRTC.html">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">DS1307RTC</a>(<a class="code" href="classI2CMaster.html">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="line" href="classDS1307RTC.html#aba01ca4c2f7863b610e5dfe9146886bd"> 34</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classDS1307RTC.html#aba01ca4c2f7863b610e5dfe9146886bd">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">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">readTime</a>(<a class="code" href="structRTCTime.html">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">readDate</a>(<a class="code" href="structRTCDate.html">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">writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html">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">writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html">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">readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html">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">writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html">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">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">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">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">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 class="ttc" id="classDS1307RTC_html_acd9800d6df2244b8e4e790480a1d62a6"><div class="ttname"><a href="classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6">DS1307RTC::readTime</a></div><div class="ttdeci">void readTime(RTCTime *value)</div><div class="ttdoc">Reads the current time from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00157">DS1307RTC.cpp:157</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a6fec8ff71f33cc1a129eb0bd009600b0"><div class="ttname"><a href="classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0">DS1307RTC::hasUpdates</a></div><div class="ttdeci">bool hasUpdates()</div><div class="ttdoc">Returns true if the realtime clock has updated since the last call to this function. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00118">DS1307RTC.cpp:118</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a7354aed91d7c94d0d7b2144b1bf32c75"><div class="ttname"><a href="classDS1307RTC.html#a7354aed91d7c94d0d7b2144b1bf32c75">DS1307RTC::writeAlarm</a></div><div class="ttdeci">void writeAlarm(uint8_t alarmNum, const RTCAlarm *value)</div><div class="ttdoc">Updates the details of the alarm with index alarmNum from value. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00250">DS1307RTC.cpp:250</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a0a5d0d86a0345420ebb289ea724b19e8"><div class="ttname"><a href="classDS1307RTC.html#a0a5d0d86a0345420ebb289ea724b19e8">DS1307RTC::writeTime</a></div><div class="ttdeci">void writeTime(const RTCTime *value)</div><div class="ttdoc">Updates the time in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00202">DS1307RTC.cpp:202</a></div></div>
<div class="ttc" id="structRTCDate_html"><div class="ttname"><a href="structRTCDate.html">RTCDate</a></div><div class="ttdoc">Stores date information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00035">RTC.h:35</a></div></div>
<div class="ttc" id="classDS1307RTC_html"><div class="ttname"><a href="classDS1307RTC.html">DS1307RTC</a></div><div class="ttdoc">Communicates with a DS1307 realtime clock chip via I2C. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8h_source.html#l00030">DS1307RTC.h:30</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a6fb56d1690bc30e7995961a5b5e5fdc4"><div class="ttname"><a href="classDS1307RTC.html#a6fb56d1690bc30e7995961a5b5e5fdc4">DS1307RTC::readDate</a></div><div class="ttdeci">void readDate(RTCDate *value)</div><div class="ttdoc">Reads the current date from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00177">DS1307RTC.cpp:177</a></div></div>
<div class="ttc" id="classDS1307RTC_html_aba01ca4c2f7863b610e5dfe9146886bd"><div class="ttname"><a href="classDS1307RTC.html#aba01ca4c2f7863b610e5dfe9146886bd">DS1307RTC::isRealTime</a></div><div class="ttdeci">bool isRealTime() const </div><div class="ttdoc">Returns true if the realtime clock is on the I2C bus; false if the time and date are simulated...</div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8h_source.html#l00034">DS1307RTC.h:34</a></div></div>
<div class="ttc" id="structRTCTime_html"><div class="ttname"><a href="structRTCTime.html">RTCTime</a></div><div class="ttdoc">Stores time information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00028">RTC.h:28</a></div></div>
<div class="ttc" id="classI2CMaster_html"><div class="ttname"><a href="classI2CMaster.html">I2CMaster</a></div><div class="ttdoc">Abstract base class for I2C master implementations. </div><div class="ttdef"><b>Definition:</b> <a href="I2CMaster_8h_source.html#l00028">I2CMaster.h:28</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a4f7346be33612cf9ecd96080eb046230"><div class="ttname"><a href="classDS1307RTC.html#a4f7346be33612cf9ecd96080eb046230">DS1307RTC::writeDate</a></div><div class="ttdeci">void writeDate(const RTCDate *value)</div><div class="ttdoc">Updates the date in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00216">DS1307RTC.cpp:216</a></div></div>
<div class="ttc" id="structRTCAlarm_html"><div class="ttname"><a href="structRTCAlarm.html">RTCAlarm</a></div><div class="ttdoc">Stores alarm information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00042">RTC.h:42</a></div></div>
<div class="ttc" id="classDS1307RTC_html_aab608eb1630520ee122306b721fdc47a"><div class="ttname"><a href="classDS1307RTC.html#aab608eb1630520ee122306b721fdc47a">DS1307RTC::readAlarm</a></div><div class="ttdeci">void readAlarm(uint8_t alarmNum, RTCAlarm *value)</div><div class="ttdoc">Reads the details of the alarm with index alarmNum into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00230">DS1307RTC.cpp:230</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a092805d75bea323dc4be062638bff866"><div class="ttname"><a href="classDS1307RTC.html#a092805d75bea323dc4be062638bff866">DS1307RTC::DS1307RTC</a></div><div class="ttdeci">DS1307RTC(I2CMaster &amp;bus, uint8_t oneHzPin=255)</div><div class="ttdoc">Attaches to a realtime clock slave device on bus. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00083">DS1307RTC.cpp:83</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a93c25269a9b78ab3331354db26672248"><div class="ttname"><a href="classDS1307RTC.html#a93c25269a9b78ab3331354db26672248">DS1307RTC::byteCount</a></div><div class="ttdeci">int byteCount() const </div><div class="ttdoc">Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...</div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00264">DS1307RTC.cpp:264</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a7364609a201022688778ab116c3e4f4a"><div class="ttname"><a href="classDS1307RTC.html#a7364609a201022688778ab116c3e4f4a">DS1307RTC::readByte</a></div><div class="ttdeci">uint8_t readByte(uint8_t offset)</div><div class="ttdoc">Reads the byte at offset within the realtime clock&#39;s non-volatile memory. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00269">DS1307RTC.cpp:269</a></div></div>
<div class="ttc" id="classRTC_html"><div class="ttname"><a href="classRTC.html">RTC</a></div><div class="ttdoc">Base class for realtime clock handlers. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00052">RTC.h:52</a></div></div>
<div class="ttc" id="classDS1307RTC_html_a6ef435fd4aa4adf8eefdf8b1741f5ba6"><div class="ttname"><a href="classDS1307RTC.html#a6ef435fd4aa4adf8eefdf8b1741f5ba6">DS1307RTC::writeByte</a></div><div class="ttdeci">void writeByte(uint8_t offset, uint8_t value)</div><div class="ttdoc">Writes value to offset within the realtime clock&#39;s non-volatile memory. </div><div class="ttdef"><b>Definition:</b> <a href="DS1307RTC_8cpp_source.html#l00277">DS1307RTC.cpp:277</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,665 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: DS3231RTC.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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">DS3231RTC.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="comment">/*</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * Adapted from DS3232RTC library for DS3231 RTC chip by Thijs Oppermann</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * 2014-12-07</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> */</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">#include &quot;DS3231RTC.h&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;../I2C/I2CMaster.h&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#if defined(ARDUINO) &amp;&amp; ARDUINO &gt;= 100</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#endif</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="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment">// I2C address of the RTC chip (7-bit).</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#define DS3231_I2C_ADDRESS 0x68</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">// Registers.</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#define DS3231_SECOND 0x00</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_MINUTE 0x01</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_HOUR 0x02</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_DAY_OF_WEEK 0x03</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_DATE 0x04</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_MONTH 0x05</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_YEAR 0x06</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_ALARM1_SEC 0x07</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_ALARM1_MIN 0x08</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_ALARM1_HOUR 0x09</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_ALARM1_DAY 0x0A</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_ALARM2_MIN 0x0B</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_ALARM2_HOUR 0x0C</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_ALARM2_DAY 0x0D</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_CONTROL 0x0E</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_STATUS 0x0F</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_AGING_OFFSET 0x10</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_TEMP_MSB 0x11</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_TEMP_LSB 0x12</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">// Bits in the DS3231_CONTROL register.</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="preprocessor">#define DS3231_EOSC 0x80</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_BBSQW 0x40</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_CONV 0x20</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_RS_1HZ 0x00</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_RS_1024HZ 0x08</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_RS_4096HZ 0x10</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_RS_8192HZ 0x18</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_INTCN 0x04</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_A2IE 0x02</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_A1IE 0x01</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment">// Bits in the DS3231_STATUS register.</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor">#define DS3231_OSF 0x80</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_BB32KHZ 0x40</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_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 DS3231_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 DS3231_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 DS3231_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">// Alarms 0 and 1</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor">#define DS3231_ALARM_0 0x07</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231_ALARM_1 0x0B</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#a45df320cabed4ea2d5c34b437eda7e9f"> 125</a></span>&#160;<a class="code" href="classDS3231RTC.html#a45df320cabed4ea2d5c34b437eda7e9f">DS3231RTC::DS3231RTC</a>(<a class="code" href="classI2CMaster.html">I2CMaster</a> &amp;bus, uint8_t oneHzPin)</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; : _bus(&amp;bus)</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; , _oneHzPin(oneHzPin)</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; , prevOneHz(false)</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; , _isRealTime(true)</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; , alarmInterrupts(false) {</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">// Probe the device and configure it for our use.</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(DS3231_I2C_ADDRESS);</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(DS3231_CONTROL);</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">if</span> ( _bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde">startRead</a>(DS3231_I2C_ADDRESS, 1) ) {</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; uint8_t value = _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>() &amp; DS3231_CONV;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">if</span> ( oneHzPin != 255 ) {</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; value |= DS3231_BBSQW | DS3231_RS_1HZ;</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; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(DS3231_I2C_ADDRESS);</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(DS3231_CONTROL);</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(value);</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">endWrite</a>();</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">else</span> {</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// Did not get an acknowledgement from the RTC chip.</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; _isRealTime = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// Configure the 1 Hz square wave pin if required.</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span> ( ( oneHzPin != 255) &amp;&amp; _isRealTime ) {</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; pinMode(oneHzPin, INPUT);</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; digitalWrite(oneHzPin, HIGH);</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="l00166"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#a180bea03bd68df8f696e529cd1582095"> 166</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classDS3231RTC.html#a180bea03bd68df8f696e529cd1582095">DS3231RTC::hasUpdates</a>() {</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</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="l00168"></a><span class="lineno"> 168</span>&#160; <span class="comment">// then assume that there is an update available.</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> ( ( _oneHzPin == 255) || !_isRealTime ) {</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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="l00173"></a><span class="lineno"> 173</span>&#160; <span class="comment">// The DS3231 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; }</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; prevOneHz = value;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;}</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="keyword">inline</span> uint8_t fromBCD(uint8_t value) {</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; <span class="keywordflow">if</span> ( (value &amp; 0x40) != 0 ) {</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="comment">// 12-hour mode.</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; uint8_t result = ( (value &gt;&gt; 4) &amp; 0x01 ) * 10 + (value &amp; 0x0F);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> ( (value &amp; 0x20) != 0 ) {</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">return</span> (result == 12) ? 12 : (result + 12); <span class="comment">// PM</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">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; }</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; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="comment">// 24-hour mode.</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> fromBCD(value);</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;}</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#a3a2c448b152c401fb598c487ef0ed288"> 207</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a3a2c448b152c401fb598c487ef0ed288">DS3231RTC::readTime</a>(<a class="code" href="structRTCTime.html">RTCTime</a>* value) {</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span> ( _isRealTime ) {</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(DS3231_I2C_ADDRESS);</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(DS3231_SECOND);</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> ( _bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde">startRead</a>(DS3231_I2C_ADDRESS, 3) ) {</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91">second</a> = fromBCD( _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>() );</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84">minute</a> = fromBCD( _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>() );</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4">hour</a> = fromHourBCD( _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</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">else</span> {</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="comment">// RTC chip is not responding.</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91">second</a> = 0;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84">minute</a> = 0;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4">hour</a> = 0;</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; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec">RTC::readTime</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;}</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"><a class="line" href="classDS3231RTC.html#a498a1a37b78993ab52780198c5b4a9df"> 228</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a498a1a37b78993ab52780198c5b4a9df">DS3231RTC::readDate</a>(<a class="code" href="structRTCDate.html">RTCDate</a>* value) {</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span> ( !_isRealTime ) {</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e">RTC::readDate</a>(value);</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span>;</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; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(DS3231_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">write</a>(DS3231_DATE);</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">startRead</a>(DS3231_I2C_ADDRESS, 3) ) {</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c">day</a> = fromBCD( _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>() );</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202">month</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>() &amp; 0x7F); <span class="comment">// Strip century bit.</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f">year</a> = fromBCD( _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>() ) + 2000;</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; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="comment">// RTC chip is not responding.</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c">day</a> = 1;</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202">month</a> = 1;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f">year</a> = 2000;</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;}</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;<span class="keyword">inline</span> uint8_t toBCD(uint8_t value) {</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> ( (value / 10) &lt;&lt; 4 ) + (value % 10);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div>
<div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#ae9bee8f68f9e124562230175ca9d15c3"> 252</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#ae9bee8f68f9e124562230175ca9d15c3">DS3231RTC::writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html">RTCTime</a>* value) {</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> ( _isRealTime ) {</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(DS3231_I2C_ADDRESS);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(DS3231_SECOND);</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>( toBCD(value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91">second</a>) );</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>( toBCD(value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84">minute</a>) );</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>( toBCD(value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4">hour</a>) ); <span class="comment">// Changes mode to 24-hour clock.</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">endWrite</a>();</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; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e">RTC::writeTime</a>(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;}</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"><a class="line" href="classDS3231RTC.html#a450a143514a5aa228f8ef7a23d83d036"> 266</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a450a143514a5aa228f8ef7a23d83d036">DS3231RTC::writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html">RTCDate</a>* value) {</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span> ( _isRealTime ) {</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(DS3231_I2C_ADDRESS);</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(DS3231_DATE);</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>( toBCD(value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c">day</a>) );</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>( toBCD(value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202">month</a>) );</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>( toBCD(value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f">year</a> % 100) );</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">endWrite</a>();</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7">RTC::writeDate</a>(value);</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="l00279"></a><span class="lineno"> 279</span>&#160;</div>
<div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#aab56929e759a49a90785729cceb72f2e"> 280</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#aab56929e759a49a90785729cceb72f2e">DS3231RTC::readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* value) {</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">if</span> ( _isRealTime ) {</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; uint8_t reg_value = readRegister(DS3231_CONTROL);</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(DS3231_I2C_ADDRESS);</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">if</span> ( 0 == alarmNum ) {</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(DS3231_ALARM_0);</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">if</span> ( _bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde">startRead</a>(DS3231_I2C_ADDRESS, 4) ) {</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; alarmSecondValues(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>(), value);</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; alarmMinuteValues(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>(), value);</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; alarmHourValues(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>(), value);</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; alarmDayValues(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>(), value);</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">flags</a> &amp;= ~0x80;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">flags</a> |= (reg_value &amp; 0x01) &lt;&lt; 6;</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; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="comment">// RTC chip is not responding.</span></div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a9cbc0c2bd8cee02917539af77e845fc4">day</a> = 0;</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692">hour</a> = 0;</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe">minute</a> = 0;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#ab749e3695ee5c5dd703aec71f72d46a1">second</a> = 0;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( 1 == alarmNum ) {</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(DS3231_ALARM_1);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">if</span> ( _bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde">startRead</a>(DS3231_I2C_ADDRESS, 3) ) {</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#ab749e3695ee5c5dd703aec71f72d46a1">second</a> = 0;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; alarmMinuteValues(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>(), value);</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; alarmHourValues(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>(), value);</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; alarmDayValues(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>(), value);</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">flags</a> |= 0x80;</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">flags</a> |= (reg_value &amp; 0x02) &lt;&lt; 5;</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; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment">// RTC chip is not responding.</span></div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a9cbc0c2bd8cee02917539af77e845fc4">day</a> = 0;</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692">hour</a> = 0;</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe">minute</a> = 0;</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#ab749e3695ee5c5dd703aec71f72d46a1">second</a> = 0;</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; }</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66">RTC::readAlarm</a>(alarmNum, value);</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</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="keywordtype">void</span> DS3231RTC::alarmSecondValues(uint8_t read_value, <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* value) {</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; uint8_t mask_bit = (read_value &amp; 0x80) ? 0x01 : 0x00;</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; value-&gt;<a class="code" href="structRTCAlarm.html#ab749e3695ee5c5dd703aec71f72d46a1">second</a> = fromBCD(read_value &amp; 0x7F);</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">flags</a> |= mask_bit;</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="keywordtype">void</span> DS3231RTC::alarmMinuteValues(uint8_t read_value, <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* value) {</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; uint8_t mask_bit = (read_value &amp; 0x80) ? 0x02 : 0x00;</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; value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe">minute</a> = fromBCD(read_value &amp; 0x7F);</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">flags</a> |= mask_bit;</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"> 340</span>&#160;<span class="keywordtype">void</span> DS3231RTC::alarmHourValues(uint8_t read_value, <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* value) {</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; uint8_t mask_bit = (read_value &amp; 0x80) ? 0x04 : 0x00;</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; uint8_t is_ampm = read_value &amp; 0x40;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span> ( is_ampm ) {</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; uint8_t hour = fromBCD(read_value &amp; ~0xE0);</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span> ( read_value &amp; 0x20 ) {</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; hour += 12;</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; value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692">hour</a> = hour;</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692">hour</a> = fromBCD(read_value &amp; ~0xC0);</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">flags</a> |= mask_bit;</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"> 356</span>&#160;</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="keywordtype">void</span> DS3231RTC::alarmDayValues(uint8_t read_value, <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* value) {</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; uint8_t mask_bit = (read_value &amp; 0x80) ? 0x08 : 0x00;</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; uint8_t is_dow = read_value &amp; 0x40;</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span> ( is_dow ) {</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a9cbc0c2bd8cee02917539af77e845fc4">day</a> = 0;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a764061bcf84755b4b9db07dead0d46b9">dow</a> = fromBCD(read_value &amp; 0x0F);</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">flags</a> |= 0x20;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a764061bcf84755b4b9db07dead0d46b9">dow</a> = 0;</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a9cbc0c2bd8cee02917539af77e845fc4">day</a> = fromBCD(read_value &amp; 0x3F);</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">flags</a> &amp;= ~0x20;</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">flags</a> |= mask_bit;</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 class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#a1ed8945018024816600f709c6eb0c749"> 374</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a1ed8945018024816600f709c6eb0c749">DS3231RTC::writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* value) {</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="classDS3231RTC.html#adb8b36354f00ea0a862cce6b1805d4c0">setAlarm</a>(alarmNum, value);</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span>;</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;<span class="keywordtype">void</span> DS3231RTC::clearAlarm(uint8_t alarmNum) {</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">if</span> ( 0 == alarmNum ) {</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(DS3231_I2C_ADDRESS);</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(DS3231_ALARM_0);</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(0);</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(0);</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(0);</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(0x41);</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">endWrite</a>();</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( 1 == alarmNum ) {</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(DS3231_I2C_ADDRESS);</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(DS3231_ALARM_1);</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(0);</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(0);</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(0x41);</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">endWrite</a>();</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</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;</div>
<div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#adb8b36354f00ea0a862cce6b1805d4c0"> 408</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classDS3231RTC.html#adb8b36354f00ea0a862cce6b1805d4c0">DS3231RTC::setAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* value) {</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">if</span> ( _isRealTime ) {</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; uint8_t alarm_mask_bits = value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">flags</a>;</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; <span class="keywordflow">if</span> ( 0 == alarmNum ) {</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span> ( alarm_mask_bits &amp; 0x80 ) {</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(DS3231_I2C_ADDRESS);</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(DS3231_ALARM_0);</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>( toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ab749e3695ee5c5dd703aec71f72d46a1">second</a>) | ( ( alarm_mask_bits &amp; 0x01 ) &lt;&lt; 7 ) );</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>( toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe">minute</a>) | ( ( alarm_mask_bits &amp; 0x02 ) &lt;&lt; 6 ) );</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="comment">// only support writing 24h</span></div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>( toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692">hour</a>) | ( ( alarm_mask_bits &amp; 0x04 ) &lt;&lt; 5 ) );</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>( getAlarmDayValue(value) );</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">endWrite</a>();</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">if</span> ( value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">flags</a> &amp; 0x40 ) {</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="classDS3231RTC.html#ad0a0614c48d4f809fee6017cd7350372">enableAlarm</a>(alarmNum);</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="keywordflow">else</span> <span class="keywordflow">if</span> ( 1 == alarmNum ) {</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">if</span> ( !(alarm_mask_bits &amp; 0x80) ) {</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(DS3231_I2C_ADDRESS);</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(DS3231_ALARM_1);</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>( toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe">minute</a>) | ( ( alarm_mask_bits &amp; 0x02 ) &lt;&lt; 6 ) );</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="comment">// only support writing 24h</span></div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>( toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692">hour</a>) | ( ( alarm_mask_bits &amp; 0x04 ) &lt;&lt; 5 ) );</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>( getAlarmDayValue(value) );</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">endWrite</a>();</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">if</span> ( value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">flags</a> &amp; 0x40 ) {</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <a class="code" href="classDS3231RTC.html#ad0a0614c48d4f809fee6017cd7350372">enableAlarm</a>(alarmNum);</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</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">else</span> {</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e">RTC::writeAlarm</a>(alarmNum, value);</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</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; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;}</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;uint8_t DS3231RTC::getAlarmDayValue(<span class="keyword">const</span> <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* value) {</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; uint8_t alarm_mask_bits = value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">flags</a>;</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; uint8_t day_value_mask = ( alarm_mask_bits &amp; 0x08 ) &lt;&lt; 4;</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">if</span> ( alarm_mask_bits &amp; 0x20 ) {</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="comment">// day of week</span></div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; day_value_mask |= 0x40;</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> (toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a764061bcf84755b4b9db07dead0d46b9">dow</a>) | day_value_mask);</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="comment">// date</span></div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; day_value_mask &amp;= ~0x40;</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">return</span> (toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a9cbc0c2bd8cee02917539af77e845fc4">day</a>) | day_value_mask);</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; }</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;</div>
<div class="line"><a name="l00470"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#ad1dcb7897fd14ae745720a19fbe71e37"> 470</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classDS3231RTC.html#ad1dcb7897fd14ae745720a19fbe71e37">DS3231RTC::readTemperature</a>() {</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span> ( _isRealTime ) {</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span> ( ( (<span class="keywordtype">int</span>)(<span class="keywordtype">signed</span> <span class="keywordtype">char</span>)readRegister(DS3231_TEMP_MSB) ) &lt;&lt; 2 ) |</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; (readRegister(DS3231_TEMP_LSB) &gt;&gt; 6);</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8">NO_TEMPERATURE</a>;</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;}</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div>
<div class="line"><a name="l00494"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#a0e9509219b2c7259accd68a55aaa5faf"> 494</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a0e9509219b2c7259accd68a55aaa5faf">DS3231RTC::enableAlarmInterrupts</a>() {</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">if</span> ( ( _oneHzPin == 255) &amp;&amp; _isRealTime ) {</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; uint8_t value = readRegister(DS3231_CONTROL);</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; value |= DS3231_INTCN;</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; writeRegister(DS3231_CONTROL, value);</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; alarmInterrupts = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</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;</div>
<div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#a245a56a9396ef49a4e089d743c759cdb"> 508</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a245a56a9396ef49a4e089d743c759cdb">DS3231RTC::disableAlarmInterrupts</a>() {</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span> ( alarmInterrupts ) {</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; uint8_t value = readRegister(DS3231_CONTROL);</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; value &amp;= ~(DS3231_INTCN | DS3231_A2IE | DS3231_A1IE);</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; writeRegister(DS3231_CONTROL, value);</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; alarmInterrupts = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;}</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;</div>
<div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#a6a5b3717ff65528de566c021eb821b94"> 530</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classDS3231RTC.html#a6a5b3717ff65528de566c021eb821b94">DS3231RTC::firedAlarm</a>() {</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">if</span> ( !_isRealTime ) {</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; }</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; uint8_t value = readRegister(DS3231_STATUS);</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordtype">int</span> alarm;</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">if</span> ( value &amp; DS3231_A1F ) {</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">if</span> ( value &amp; DS3231_A2F ) {</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; alarm = 2;</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; alarm = 0;</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; }</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( value &amp; DS3231_A2F ) {</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; alarm = 1;</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; alarm = -1;</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">if</span> ( alarm != -1 ) {</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; value &amp;= ~(DS3231_A1F | DS3231_A2F);</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; writeRegister(DS3231_STATUS, value);</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; }</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">return</span> alarm;</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;}</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;</div>
<div class="line"><a name="l00562"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#a032cf784eb82ccf6ff0a9745b47ac86b"> 562</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a032cf784eb82ccf6ff0a9745b47ac86b">DS3231RTC::enable32kHzOutput</a>() {</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">if</span> ( _isRealTime ) {</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; uint8_t value = readRegister(DS3231_STATUS);</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; value |= DS3231_BB32KHZ | DS3231_EN32KHZ;</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; writeRegister(DS3231_STATUS, value);</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;}</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div>
<div class="line"><a name="l00575"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#a7c9c197c6f27c26e0cb9c5ddc95633c8"> 575</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a7c9c197c6f27c26e0cb9c5ddc95633c8">DS3231RTC::disable32kHzOutput</a>() {</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">if</span> ( _isRealTime ) {</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; uint8_t value = readRegister(DS3231_STATUS);</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; value &amp;= ~(DS3231_BB32KHZ | DS3231_EN32KHZ);</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; writeRegister(DS3231_STATUS, value);</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; }</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;}</div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;uint8_t DS3231RTC::readRegister(uint8_t reg) {</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(DS3231_I2C_ADDRESS);</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(reg);</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">if</span> ( !_bus-&gt;<a class="code" href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde">startRead</a>(DS3231_I2C_ADDRESS, 1) ) {</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">return</span> 0; <span class="comment">// RTC chip is not responding.</span></div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; }</div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">return</span> _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">read</a>();</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;}</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;<span class="keywordtype">bool</span> DS3231RTC::writeRegister(uint8_t reg, uint8_t value) {</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">startWrite</a>(DS3231_I2C_ADDRESS);</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(reg);</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; _bus-&gt;<a class="code" href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">write</a>(value);</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">return</span> _bus-&gt;<a class="code" href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">endWrite</a>();</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;}</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div>
<div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#ad0a0614c48d4f809fee6017cd7350372"> 606</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#ad0a0614c48d4f809fee6017cd7350372">DS3231RTC::enableAlarm</a>(uint8_t alarmNum) {</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; uint8_t value = readRegister(DS3231_CONTROL);</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">if</span> ( 0 == alarmNum ) {</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; value |= DS3231_A1IE;</div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( 1 == alarmNum ) {</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; value |= DS3231_A2IE;</div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; writeRegister(DS3231_CONTROL, value);</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;}</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div>
<div class="line"><a name="l00625"></a><span class="lineno"><a class="line" href="classDS3231RTC.html#a21e2667c53d30aa425043ec08a117c47"> 625</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a21e2667c53d30aa425043ec08a117c47">DS3231RTC::disableAlarm</a>(uint8_t alarmNum) {</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; uint8_t value = readRegister(DS3231_CONTROL);</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; clearAlarm(alarmNum);</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> ( 0 == alarmNum ) {</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; value &amp;= ~DS3231_A1IE;</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; }</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( 1 == alarmNum ) {</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; value &amp;= ~DS3231_A2IE;</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; }</div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; writeRegister(DS3231_CONTROL, value);</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;}</div>
<div class="ttc" id="structRTCDate_html_a6e6196059b36186041a5312400ea9202"><div class="ttname"><a href="structRTCDate.html#a6e6196059b36186041a5312400ea9202">RTCDate::month</a></div><div class="ttdeci">uint8_t month</div><div class="ttdoc">Month of the year (1-12) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00038">RTC.h:38</a></div></div>
<div class="ttc" id="classRTC_html_a102e2ec15bf0273d8f7e9ce4b6dcc96e"><div class="ttname"><a href="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e">RTC::writeTime</a></div><div class="ttdeci">virtual void writeTime(const RTCTime *value)</div><div class="ttdoc">Updates the time in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00179">RTC.cpp:179</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a032cf784eb82ccf6ff0a9745b47ac86b"><div class="ttname"><a href="classDS3231RTC.html#a032cf784eb82ccf6ff0a9745b47ac86b">DS3231RTC::enable32kHzOutput</a></div><div class="ttdeci">void enable32kHzOutput()</div><div class="ttdoc">Enables the 32 kHz output on the DS3231 chip. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00562">DS3231RTC.cpp:562</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a245a56a9396ef49a4e089d743c759cdb"><div class="ttname"><a href="classDS3231RTC.html#a245a56a9396ef49a4e089d743c759cdb">DS3231RTC::disableAlarmInterrupts</a></div><div class="ttdeci">void disableAlarmInterrupts()</div><div class="ttdoc">Disables the generation of interrupts for alarms 0 and 1. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00508">DS3231RTC.cpp:508</a></div></div>
<div class="ttc" id="structRTCTime_html_acf2161ca037080dc4b767e636ad8db84"><div class="ttname"><a href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84">RTCTime::minute</a></div><div class="ttdeci">uint8_t minute</div><div class="ttdoc">Minute within the hour (0-59) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00031">RTC.h:31</a></div></div>
<div class="ttc" id="classRTC_html_ade282d7a60147c3f0269f1fcd59c8d66"><div class="ttname"><a href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66">RTC::readAlarm</a></div><div class="ttdeci">virtual void readAlarm(uint8_t alarmNum, RTCAlarm *value)</div><div class="ttdoc">Reads the details of the alarm with index alarmNum into value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00209">RTC.cpp:209</a></div></div>
<div class="ttc" id="classRTC_html_aa1e21bf42ebd4456919744ae0f4f631e"><div class="ttname"><a href="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e">RTC::readDate</a></div><div class="ttdeci">virtual void readDate(RTCDate *value)</div><div class="ttdoc">Reads the current date from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00169">RTC.cpp:169</a></div></div>
<div class="ttc" id="structRTCAlarm_html_a9cbc0c2bd8cee02917539af77e845fc4"><div class="ttname"><a href="structRTCAlarm.html#a9cbc0c2bd8cee02917539af77e845fc4">RTCAlarm::day</a></div><div class="ttdeci">uint8_t day</div><div class="ttdoc">Day of the month for the alarm if not zero. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00044">RTC.h:44</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a498a1a37b78993ab52780198c5b4a9df"><div class="ttname"><a href="classDS3231RTC.html#a498a1a37b78993ab52780198c5b4a9df">DS3231RTC::readDate</a></div><div class="ttdeci">void readDate(RTCDate *value)</div><div class="ttdoc">Reads the current date from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00228">DS3231RTC.cpp:228</a></div></div>
<div class="ttc" id="classDS3231RTC_html_ad1dcb7897fd14ae745720a19fbe71e37"><div class="ttname"><a href="classDS3231RTC.html#ad1dcb7897fd14ae745720a19fbe71e37">DS3231RTC::readTemperature</a></div><div class="ttdeci">int readTemperature()</div><div class="ttdoc">Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius...</div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00470">DS3231RTC.cpp:470</a></div></div>
<div class="ttc" id="classI2CMaster_html_a0bf6b84cb1e2b3a37a4a0260d0b6f960"><div class="ttname"><a href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">I2CMaster::write</a></div><div class="ttdeci">virtual void write(uint8_t value)=0</div><div class="ttdoc">Writes a single byte value on the I2C bus. </div></div>
<div class="ttc" id="classRTC_html_a0e96c91efd9e7a6340effdae3eadf17e"><div class="ttname"><a href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e">RTC::writeAlarm</a></div><div class="ttdeci">virtual void writeAlarm(uint8_t alarmNum, const RTCAlarm *value)</div><div class="ttdoc">Updates the details of the alarm with index alarmNum from value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00224">RTC.cpp:224</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a0e9509219b2c7259accd68a55aaa5faf"><div class="ttname"><a href="classDS3231RTC.html#a0e9509219b2c7259accd68a55aaa5faf">DS3231RTC::enableAlarmInterrupts</a></div><div class="ttdeci">void enableAlarmInterrupts()</div><div class="ttdoc">Enables the generation of interrupts for alarms 0 and 1. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00494">DS3231RTC.cpp:494</a></div></div>
<div class="ttc" id="classRTC_html_ae667600d05c8e7b06a93574dd068a4d7"><div class="ttname"><a href="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7">RTC::writeDate</a></div><div class="ttdeci">virtual void writeDate(const RTCDate *value)</div><div class="ttdoc">Updates the date in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00194">RTC.cpp:194</a></div></div>
<div class="ttc" id="classI2CMaster_html_a4e5f1a1a4c2242699be5a35fc4872fde"><div class="ttname"><a href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde">I2CMaster::startRead</a></div><div class="ttdeci">virtual bool startRead(unsigned int address, unsigned int count)=0</div><div class="ttdoc">Starts a read operation for count bytes by sending the start condition and the I2C control byte...</div></div>
<div class="ttc" id="structRTCAlarm_html_a75bdc42acd3ab3ad495680c6b6a34692"><div class="ttname"><a href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692">RTCAlarm::hour</a></div><div class="ttdeci">uint8_t hour</div><div class="ttdoc">Hour of the day for the alarm (0-23). </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00046">RTC.h:46</a></div></div>
<div class="ttc" id="classRTC_html_a9ed5480b362a83f1f45c4d3bcf7c3bf8"><div class="ttname"><a href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8">RTC::NO_TEMPERATURE</a></div><div class="ttdeci">static const int NO_TEMPERATURE</div><div class="ttdoc">Value that is returned from readTemperature() if the realtime clock chip cannot determine the tempera...</div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00086">RTC.h:86</a></div></div>
<div class="ttc" id="structRTCAlarm_html_a0f2ef7363cb60a26642d5295b77ca19e"><div class="ttname"><a href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">RTCAlarm::flags</a></div><div class="ttdeci">uint8_t flags</div><div class="ttdoc">Additional flags for the alarm. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00049">RTC.h:49</a></div></div>
<div class="ttc" id="classDS3231RTC_html_ad0a0614c48d4f809fee6017cd7350372"><div class="ttname"><a href="classDS3231RTC.html#ad0a0614c48d4f809fee6017cd7350372">DS3231RTC::enableAlarm</a></div><div class="ttdeci">void enableAlarm(uint8_t alarmNum)</div><div class="ttdoc">Enables a specific alarm. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00606">DS3231RTC.cpp:606</a></div></div>
<div class="ttc" id="structRTCAlarm_html_a764061bcf84755b4b9db07dead0d46b9"><div class="ttname"><a href="structRTCAlarm.html#a764061bcf84755b4b9db07dead0d46b9">RTCAlarm::dow</a></div><div class="ttdeci">uint8_t dow</div><div class="ttdoc">Day of the week for the alarm if not zero. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00045">RTC.h:45</a></div></div>
<div class="ttc" id="structRTCDate_html"><div class="ttname"><a href="structRTCDate.html">RTCDate</a></div><div class="ttdoc">Stores date information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00035">RTC.h:35</a></div></div>
<div class="ttc" id="classDS3231RTC_html_aab56929e759a49a90785729cceb72f2e"><div class="ttname"><a href="classDS3231RTC.html#aab56929e759a49a90785729cceb72f2e">DS3231RTC::readAlarm</a></div><div class="ttdeci">void readAlarm(uint8_t alarmNum, RTCAlarm *value)</div><div class="ttdoc">Reads the details of the alarm with index alarmNum into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00280">DS3231RTC.cpp:280</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a45df320cabed4ea2d5c34b437eda7e9f"><div class="ttname"><a href="classDS3231RTC.html#a45df320cabed4ea2d5c34b437eda7e9f">DS3231RTC::DS3231RTC</a></div><div class="ttdeci">DS3231RTC(I2CMaster &amp;bus, uint8_t oneHzPin=255)</div><div class="ttdoc">Attaches to a realtime clock slave device on bus. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00125">DS3231RTC.cpp:125</a></div></div>
<div class="ttc" id="classI2CMaster_html_a01960fc821cb25e4c88c26d2c6107e35"><div class="ttname"><a href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">I2CMaster::startWrite</a></div><div class="ttdeci">virtual void startWrite(unsigned int address)</div><div class="ttdoc">Starts a write operation by sending a start condition and the I2C control byte. </div></div>
<div class="ttc" id="classDS3231RTC_html_a21e2667c53d30aa425043ec08a117c47"><div class="ttname"><a href="classDS3231RTC.html#a21e2667c53d30aa425043ec08a117c47">DS3231RTC::disableAlarm</a></div><div class="ttdeci">void disableAlarm(uint8_t alarmNum)</div><div class="ttdoc">Disables a specific alarm. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00625">DS3231RTC.cpp:625</a></div></div>
<div class="ttc" id="classDS3231RTC_html_adb8b36354f00ea0a862cce6b1805d4c0"><div class="ttname"><a href="classDS3231RTC.html#adb8b36354f00ea0a862cce6b1805d4c0">DS3231RTC::setAlarm</a></div><div class="ttdeci">bool setAlarm(uint8_t alarmNum, const RTCAlarm *value)</div><div class="ttdoc">Sets the alarm with index alarmNum from value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00408">DS3231RTC.cpp:408</a></div></div>
<div class="ttc" id="classI2CMaster_html_ab29f63551ddeb032a91505d1c0b8ac41"><div class="ttname"><a href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">I2CMaster::endWrite</a></div><div class="ttdeci">virtual bool endWrite()=0</div><div class="ttdoc">Ends the current write operation. </div></div>
<div class="ttc" id="structRTCDate_html_a7d31822daff3c3fc947386abd897732f"><div class="ttname"><a href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f">RTCDate::year</a></div><div class="ttdeci">unsigned int year</div><div class="ttdoc">Year (4-digit) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00037">RTC.h:37</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a450a143514a5aa228f8ef7a23d83d036"><div class="ttname"><a href="classDS3231RTC.html#a450a143514a5aa228f8ef7a23d83d036">DS3231RTC::writeDate</a></div><div class="ttdeci">void writeDate(const RTCDate *value)</div><div class="ttdoc">Updates the date in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00266">DS3231RTC.cpp:266</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a1ed8945018024816600f709c6eb0c749"><div class="ttname"><a href="classDS3231RTC.html#a1ed8945018024816600f709c6eb0c749">DS3231RTC::writeAlarm</a></div><div class="ttdeci">void writeAlarm(uint8_t alarmNum, const RTCAlarm *value)</div><div class="ttdoc">Updates the details of the alarm with index alarmNum from value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00374">DS3231RTC.cpp:374</a></div></div>
<div class="ttc" id="structRTCAlarm_html_ad9a75ceb4b4b3474baa66dd5466e62fe"><div class="ttname"><a href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe">RTCAlarm::minute</a></div><div class="ttdeci">uint8_t minute</div><div class="ttdoc">Minute of the hour for the alarm (0-59). </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00047">RTC.h:47</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a7c9c197c6f27c26e0cb9c5ddc95633c8"><div class="ttname"><a href="classDS3231RTC.html#a7c9c197c6f27c26e0cb9c5ddc95633c8">DS3231RTC::disable32kHzOutput</a></div><div class="ttdeci">void disable32kHzOutput()</div><div class="ttdoc">Disables the 32 kHz output on the DS3231 chip. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00575">DS3231RTC.cpp:575</a></div></div>
<div class="ttc" id="structRTCAlarm_html_ab749e3695ee5c5dd703aec71f72d46a1"><div class="ttname"><a href="structRTCAlarm.html#ab749e3695ee5c5dd703aec71f72d46a1">RTCAlarm::second</a></div><div class="ttdeci">uint8_t second</div><div class="ttdoc">Second of the minute for the alarm (0-59). </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00048">RTC.h:48</a></div></div>
<div class="ttc" id="structRTCTime_html"><div class="ttname"><a href="structRTCTime.html">RTCTime</a></div><div class="ttdoc">Stores time information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00028">RTC.h:28</a></div></div>
<div class="ttc" id="classDS3231RTC_html_ae9bee8f68f9e124562230175ca9d15c3"><div class="ttname"><a href="classDS3231RTC.html#ae9bee8f68f9e124562230175ca9d15c3">DS3231RTC::writeTime</a></div><div class="ttdeci">void writeTime(const RTCTime *value)</div><div class="ttdoc">Updates the time in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00252">DS3231RTC.cpp:252</a></div></div>
<div class="ttc" id="classI2CMaster_html"><div class="ttname"><a href="classI2CMaster.html">I2CMaster</a></div><div class="ttdoc">Abstract base class for I2C master implementations. </div><div class="ttdef"><b>Definition:</b> <a href="I2CMaster_8h_source.html#l00028">I2CMaster.h:28</a></div></div>
<div class="ttc" id="structRTCAlarm_html"><div class="ttname"><a href="structRTCAlarm.html">RTCAlarm</a></div><div class="ttdoc">Stores alarm information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00042">RTC.h:42</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a180bea03bd68df8f696e529cd1582095"><div class="ttname"><a href="classDS3231RTC.html#a180bea03bd68df8f696e529cd1582095">DS3231RTC::hasUpdates</a></div><div class="ttdeci">bool hasUpdates()</div><div class="ttdoc">Returns true if there are updates. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00166">DS3231RTC.cpp:166</a></div></div>
<div class="ttc" id="classI2CMaster_html_a49eeebb57f6bc06de39973fe836369cd"><div class="ttname"><a href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">I2CMaster::read</a></div><div class="ttdeci">virtual uint8_t read()=0</div><div class="ttdoc">Reads a single byte from the I2C bus. </div></div>
<div class="ttc" id="structRTCTime_html_a98ba717092ef856dd2b773ba02fcb1a4"><div class="ttname"><a href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4">RTCTime::hour</a></div><div class="ttdeci">uint8_t hour</div><div class="ttdoc">Hour of the day (0-23) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00030">RTC.h:30</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a3a2c448b152c401fb598c487ef0ed288"><div class="ttname"><a href="classDS3231RTC.html#a3a2c448b152c401fb598c487ef0ed288">DS3231RTC::readTime</a></div><div class="ttdeci">void readTime(RTCTime *value)</div><div class="ttdoc">Reads the current time from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00207">DS3231RTC.cpp:207</a></div></div>
<div class="ttc" id="structRTCDate_html_a2d68ff3fb90240df522b41222362704c"><div class="ttname"><a href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c">RTCDate::day</a></div><div class="ttdeci">uint8_t day</div><div class="ttdoc">Day of the month (1-31) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00039">RTC.h:39</a></div></div>
<div class="ttc" id="structRTCTime_html_a87b7c02e535d808dcba04c77e34abb91"><div class="ttname"><a href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91">RTCTime::second</a></div><div class="ttdeci">uint8_t second</div><div class="ttdoc">Second within the minute (0-59) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00032">RTC.h:32</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a6a5b3717ff65528de566c021eb821b94"><div class="ttname"><a href="classDS3231RTC.html#a6a5b3717ff65528de566c021eb821b94">DS3231RTC::firedAlarm</a></div><div class="ttdeci">int firedAlarm()</div><div class="ttdoc">Determines which of alarms 0 or 1 have fired since the last call. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00530">DS3231RTC.cpp:530</a></div></div>
<div class="ttc" id="classRTC_html_aaf0a5c1f32f210a49718d148620b5bec"><div class="ttname"><a href="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec">RTC::readTime</a></div><div class="ttdeci">virtual void readTime(RTCTime *value)</div><div class="ttdoc">Reads the current time from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00144">RTC.cpp:144</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,210 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: DS3231RTC.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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">DS3231RTC.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="comment">/*</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * Adapted from DS3232RTC library for DS3231 RTC chip by Thijs Oppermann</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * 2014-12-07</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> */</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">#ifndef DS3231RTC_h</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DS3231RTC_h</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">#include &quot;RTC.h&quot;</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="keyword">class </span><a class="code" href="classI2CMaster.html">I2CMaster</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="line" href="classDS3231RTC.html"> 35</a></span>&#160;<span class="keyword">class </span><a class="code" href="classDS3231RTC.html">DS3231RTC</a> : <span class="keyword">public</span> <a class="code" href="classRTC.html">RTC</a> {</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="classDS3231RTC.html#a45df320cabed4ea2d5c34b437eda7e9f">DS3231RTC</a>(<a class="code" href="classI2CMaster.html">I2CMaster</a> &amp;bus, uint8_t oneHzPin = 255);</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="line" href="classDS3231RTC.html#a2fa6fdd1f9e2b2b99be077c73639dce0"> 39</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classDS3231RTC.html#a2fa6fdd1f9e2b2b99be077c73639dce0">isRealTime</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> _isRealTime;</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;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classDS3231RTC.html#a180bea03bd68df8f696e529cd1582095">hasUpdates</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="classDS3231RTC.html#a3a2c448b152c401fb598c487ef0ed288">readTime</a>(<a class="code" href="structRTCTime.html">RTCTime</a>* value);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a498a1a37b78993ab52780198c5b4a9df">readDate</a>(<a class="code" href="structRTCDate.html">RTCDate</a>* value);</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="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#ae9bee8f68f9e124562230175ca9d15c3">writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html">RTCTime</a>* value);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a450a143514a5aa228f8ef7a23d83d036">writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html">RTCDate</a>* 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">void</span> <a class="code" href="classDS3231RTC.html#aab56929e759a49a90785729cceb72f2e">readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* value);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a1ed8945018024816600f709c6eb0c749">writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* value);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classDS3231RTC.html#adb8b36354f00ea0a862cce6b1805d4c0">setAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* value);</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">int</span> <a class="code" href="classDS3231RTC.html#ad1dcb7897fd14ae745720a19fbe71e37">readTemperature</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="classDS3231RTC.html#a0e9509219b2c7259accd68a55aaa5faf">enableAlarmInterrupts</a>();</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a245a56a9396ef49a4e089d743c759cdb">disableAlarmInterrupts</a>();</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classDS3231RTC.html#a6a5b3717ff65528de566c021eb821b94">firedAlarm</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"> 61</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a032cf784eb82ccf6ff0a9745b47ac86b">enable32kHzOutput</a>();</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a7c9c197c6f27c26e0cb9c5ddc95633c8">disable32kHzOutput</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; <span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#ad0a0614c48d4f809fee6017cd7350372">enableAlarm</a>(uint8_t alarmNum);</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classDS3231RTC.html#a21e2667c53d30aa425043ec08a117c47">disableAlarm</a>(uint8_t alarmNum);</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="keyword">private</span>:</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classI2CMaster.html">I2CMaster</a>* _bus;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; uint8_t _oneHzPin;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">bool</span> prevOneHz;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">bool</span> _isRealTime;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordtype">bool</span> alarmInterrupts;</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; <span class="keywordtype">void</span> alarmSecondValues(uint8_t read_value, <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* value);</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">void</span> alarmMinuteValues(uint8_t read_value, <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* value);</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">void</span> alarmHourValues(uint8_t read_value, <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* value);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordtype">void</span> alarmDayValues(uint8_t read_value, <a class="code" href="structRTCAlarm.html">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; uint8_t getAlarmDayValue(<span class="keyword">const</span> <a class="code" href="structRTCAlarm.html">RTCAlarm</a>* 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; <span class="keywordtype">void</span> clearAlarm(uint8_t alarmNum);</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; uint8_t readRegister(uint8_t reg);</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">bool</span> writeRegister(uint8_t reg, uint8_t value);</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 class="ttc" id="classDS3231RTC_html_a032cf784eb82ccf6ff0a9745b47ac86b"><div class="ttname"><a href="classDS3231RTC.html#a032cf784eb82ccf6ff0a9745b47ac86b">DS3231RTC::enable32kHzOutput</a></div><div class="ttdeci">void enable32kHzOutput()</div><div class="ttdoc">Enables the 32 kHz output on the DS3231 chip. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00562">DS3231RTC.cpp:562</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a245a56a9396ef49a4e089d743c759cdb"><div class="ttname"><a href="classDS3231RTC.html#a245a56a9396ef49a4e089d743c759cdb">DS3231RTC::disableAlarmInterrupts</a></div><div class="ttdeci">void disableAlarmInterrupts()</div><div class="ttdoc">Disables the generation of interrupts for alarms 0 and 1. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00508">DS3231RTC.cpp:508</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a498a1a37b78993ab52780198c5b4a9df"><div class="ttname"><a href="classDS3231RTC.html#a498a1a37b78993ab52780198c5b4a9df">DS3231RTC::readDate</a></div><div class="ttdeci">void readDate(RTCDate *value)</div><div class="ttdoc">Reads the current date from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00228">DS3231RTC.cpp:228</a></div></div>
<div class="ttc" id="classDS3231RTC_html_ad1dcb7897fd14ae745720a19fbe71e37"><div class="ttname"><a href="classDS3231RTC.html#ad1dcb7897fd14ae745720a19fbe71e37">DS3231RTC::readTemperature</a></div><div class="ttdeci">int readTemperature()</div><div class="ttdoc">Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius...</div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00470">DS3231RTC.cpp:470</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a0e9509219b2c7259accd68a55aaa5faf"><div class="ttname"><a href="classDS3231RTC.html#a0e9509219b2c7259accd68a55aaa5faf">DS3231RTC::enableAlarmInterrupts</a></div><div class="ttdeci">void enableAlarmInterrupts()</div><div class="ttdoc">Enables the generation of interrupts for alarms 0 and 1. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00494">DS3231RTC.cpp:494</a></div></div>
<div class="ttc" id="classDS3231RTC_html"><div class="ttname"><a href="classDS3231RTC.html">DS3231RTC</a></div><div class="ttdoc">Communicates with a DS3231 realtime clock chip via I2C. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8h_source.html#l00035">DS3231RTC.h:35</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a2fa6fdd1f9e2b2b99be077c73639dce0"><div class="ttname"><a href="classDS3231RTC.html#a2fa6fdd1f9e2b2b99be077c73639dce0">DS3231RTC::isRealTime</a></div><div class="ttdeci">bool isRealTime() const </div><div class="ttdoc">Returns true if the realtime clock is on the I2C bus; false if the time and date are simulated...</div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8h_source.html#l00039">DS3231RTC.h:39</a></div></div>
<div class="ttc" id="classDS3231RTC_html_ad0a0614c48d4f809fee6017cd7350372"><div class="ttname"><a href="classDS3231RTC.html#ad0a0614c48d4f809fee6017cd7350372">DS3231RTC::enableAlarm</a></div><div class="ttdeci">void enableAlarm(uint8_t alarmNum)</div><div class="ttdoc">Enables a specific alarm. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00606">DS3231RTC.cpp:606</a></div></div>
<div class="ttc" id="structRTCDate_html"><div class="ttname"><a href="structRTCDate.html">RTCDate</a></div><div class="ttdoc">Stores date information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00035">RTC.h:35</a></div></div>
<div class="ttc" id="classDS3231RTC_html_aab56929e759a49a90785729cceb72f2e"><div class="ttname"><a href="classDS3231RTC.html#aab56929e759a49a90785729cceb72f2e">DS3231RTC::readAlarm</a></div><div class="ttdeci">void readAlarm(uint8_t alarmNum, RTCAlarm *value)</div><div class="ttdoc">Reads the details of the alarm with index alarmNum into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00280">DS3231RTC.cpp:280</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a45df320cabed4ea2d5c34b437eda7e9f"><div class="ttname"><a href="classDS3231RTC.html#a45df320cabed4ea2d5c34b437eda7e9f">DS3231RTC::DS3231RTC</a></div><div class="ttdeci">DS3231RTC(I2CMaster &amp;bus, uint8_t oneHzPin=255)</div><div class="ttdoc">Attaches to a realtime clock slave device on bus. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00125">DS3231RTC.cpp:125</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a21e2667c53d30aa425043ec08a117c47"><div class="ttname"><a href="classDS3231RTC.html#a21e2667c53d30aa425043ec08a117c47">DS3231RTC::disableAlarm</a></div><div class="ttdeci">void disableAlarm(uint8_t alarmNum)</div><div class="ttdoc">Disables a specific alarm. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00625">DS3231RTC.cpp:625</a></div></div>
<div class="ttc" id="classDS3231RTC_html_adb8b36354f00ea0a862cce6b1805d4c0"><div class="ttname"><a href="classDS3231RTC.html#adb8b36354f00ea0a862cce6b1805d4c0">DS3231RTC::setAlarm</a></div><div class="ttdeci">bool setAlarm(uint8_t alarmNum, const RTCAlarm *value)</div><div class="ttdoc">Sets the alarm with index alarmNum from value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00408">DS3231RTC.cpp:408</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a450a143514a5aa228f8ef7a23d83d036"><div class="ttname"><a href="classDS3231RTC.html#a450a143514a5aa228f8ef7a23d83d036">DS3231RTC::writeDate</a></div><div class="ttdeci">void writeDate(const RTCDate *value)</div><div class="ttdoc">Updates the date in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00266">DS3231RTC.cpp:266</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a1ed8945018024816600f709c6eb0c749"><div class="ttname"><a href="classDS3231RTC.html#a1ed8945018024816600f709c6eb0c749">DS3231RTC::writeAlarm</a></div><div class="ttdeci">void writeAlarm(uint8_t alarmNum, const RTCAlarm *value)</div><div class="ttdoc">Updates the details of the alarm with index alarmNum from value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00374">DS3231RTC.cpp:374</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a7c9c197c6f27c26e0cb9c5ddc95633c8"><div class="ttname"><a href="classDS3231RTC.html#a7c9c197c6f27c26e0cb9c5ddc95633c8">DS3231RTC::disable32kHzOutput</a></div><div class="ttdeci">void disable32kHzOutput()</div><div class="ttdoc">Disables the 32 kHz output on the DS3231 chip. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00575">DS3231RTC.cpp:575</a></div></div>
<div class="ttc" id="structRTCTime_html"><div class="ttname"><a href="structRTCTime.html">RTCTime</a></div><div class="ttdoc">Stores time information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00028">RTC.h:28</a></div></div>
<div class="ttc" id="classDS3231RTC_html_ae9bee8f68f9e124562230175ca9d15c3"><div class="ttname"><a href="classDS3231RTC.html#ae9bee8f68f9e124562230175ca9d15c3">DS3231RTC::writeTime</a></div><div class="ttdeci">void writeTime(const RTCTime *value)</div><div class="ttdoc">Updates the time in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00252">DS3231RTC.cpp:252</a></div></div>
<div class="ttc" id="classI2CMaster_html"><div class="ttname"><a href="classI2CMaster.html">I2CMaster</a></div><div class="ttdoc">Abstract base class for I2C master implementations. </div><div class="ttdef"><b>Definition:</b> <a href="I2CMaster_8h_source.html#l00028">I2CMaster.h:28</a></div></div>
<div class="ttc" id="structRTCAlarm_html"><div class="ttname"><a href="structRTCAlarm.html">RTCAlarm</a></div><div class="ttdoc">Stores alarm information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00042">RTC.h:42</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a180bea03bd68df8f696e529cd1582095"><div class="ttname"><a href="classDS3231RTC.html#a180bea03bd68df8f696e529cd1582095">DS3231RTC::hasUpdates</a></div><div class="ttdeci">bool hasUpdates()</div><div class="ttdoc">Returns true if there are updates. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00166">DS3231RTC.cpp:166</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a3a2c448b152c401fb598c487ef0ed288"><div class="ttname"><a href="classDS3231RTC.html#a3a2c448b152c401fb598c487ef0ed288">DS3231RTC::readTime</a></div><div class="ttdeci">void readTime(RTCTime *value)</div><div class="ttdoc">Reads the current time from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00207">DS3231RTC.cpp:207</a></div></div>
<div class="ttc" id="classDS3231RTC_html_a6a5b3717ff65528de566c021eb821b94"><div class="ttname"><a href="classDS3231RTC.html#a6a5b3717ff65528de566c021eb821b94">DS3231RTC::firedAlarm</a></div><div class="ttdeci">int firedAlarm()</div><div class="ttdoc">Determines which of alarms 0 or 1 have fired since the last call. </div><div class="ttdef"><b>Definition:</b> <a href="DS3231RTC_8cpp_source.html#l00530">DS3231RTC.cpp:530</a></div></div>
<div class="ttc" id="classRTC_html"><div class="ttname"><a href="classRTC.html">RTC</a></div><div class="ttdoc">Base class for realtime clock handlers. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00052">RTC.h:52</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,583 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: DS3232RTC.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classDS3232RTC.html#aa959454ae01b11c48d6ec7ec192b4ccb"> 126</a></span>&#160;<a class="code" href="classDS3232RTC.html#aa959454ae01b11c48d6ec7ec192b4ccb">DS3232RTC::DS3232RTC</a>(<a class="code" href="classI2CMaster.html">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">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">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">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">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">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">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">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">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">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="line" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc"> 166</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc">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="line" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747"> 205</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747">DS3232RTC::readTime</a>(<a class="code" href="structRTCTime.html">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">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">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">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">second</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">minute</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">hour</a> = fromHourBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">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">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">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="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec">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="line" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca"> 225</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca">DS3232RTC::readDate</a>(<a class="code" href="structRTCDate.html">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="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e">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">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">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">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">day</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">month</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">year</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">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">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">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="line" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78"> 250</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78">DS3232RTC::writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html">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">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">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4">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">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="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e">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="line" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed"> 264</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed">DS3232RTC::writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html">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">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">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a6e6196059b36186041a5312400ea9202">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f">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">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="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7">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="line" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873"> 278</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873">DS3232RTC::readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html">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">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">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">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">hour</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">minute</a> = fromBCD(_bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">flags</a> = _bus-&gt;<a class="code" href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">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">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">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">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="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66">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="line" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75"> 298</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75">DS3232RTC::writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html">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">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">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe">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">write</a>(value-&gt;<a class="code" href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">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">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">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">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">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692">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">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">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">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">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe">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">write</a>(toBCD(value-&gt;<a class="code" href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692">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">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">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="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e">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="line" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e"> 335</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e">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="line" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7"> 340</a></span>&#160;uint8_t <a class="code" href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7">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="classRTC.html#a0f47b10b436e3f9d36e04ec907579431">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="line" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a"> 348</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a">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="classRTC.html#a1cab6397ec04b1e2b3feea5b3cd1f749">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="line" href="classDS3232RTC.html#a0faf40c25ab019a326a60f301c2bb41b"> 356</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a0faf40c25ab019a326a60f301c2bb41b">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">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="line" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9"> 380</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9">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="line" href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9"> 393</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9">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="line" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3"> 416</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3">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="line" href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a"> 444</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a">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="line" href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb"> 458</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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 class="ttc" id="structRTCDate_html_a6e6196059b36186041a5312400ea9202"><div class="ttname"><a href="structRTCDate.html#a6e6196059b36186041a5312400ea9202">RTCDate::month</a></div><div class="ttdeci">uint8_t month</div><div class="ttdoc">Month of the year (1-12) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00038">RTC.h:38</a></div></div>
<div class="ttc" id="classRTC_html_a102e2ec15bf0273d8f7e9ce4b6dcc96e"><div class="ttname"><a href="classRTC.html#a102e2ec15bf0273d8f7e9ce4b6dcc96e">RTC::writeTime</a></div><div class="ttdeci">virtual void writeTime(const RTCTime *value)</div><div class="ttdoc">Updates the time in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00179">RTC.cpp:179</a></div></div>
<div class="ttc" id="classDS3232RTC_html_ab91e79271a1f8e75b07bddbb04445dc9"><div class="ttname"><a href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9">DS3232RTC::enableAlarmInterrupts</a></div><div class="ttdeci">void enableAlarmInterrupts()</div><div class="ttdoc">Enables the generation of interrupts for alarms 0 and 1. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00380">DS3232RTC.cpp:380</a></div></div>
<div class="ttc" id="classDS3232RTC_html_ada732bae42fc2833e59ae293aa27ddcb"><div class="ttname"><a href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb">DS3232RTC::disable32kHzOutput</a></div><div class="ttdeci">void disable32kHzOutput()</div><div class="ttdoc">Disables the 32 kHz output on the DS3232 chip. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00458">DS3232RTC.cpp:458</a></div></div>
<div class="ttc" id="classDS3232RTC_html_af89e68c68f1c4b7e94286f800b5b2747"><div class="ttname"><a href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747">DS3232RTC::readTime</a></div><div class="ttdeci">void readTime(RTCTime *value)</div><div class="ttdoc">Reads the current time from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00205">DS3232RTC.cpp:205</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a0faf40c25ab019a326a60f301c2bb41b"><div class="ttname"><a href="classDS3232RTC.html#a0faf40c25ab019a326a60f301c2bb41b">DS3232RTC::readTemperature</a></div><div class="ttdeci">int readTemperature()</div><div class="ttdoc">Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius...</div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00356">DS3232RTC.cpp:356</a></div></div>
<div class="ttc" id="structRTCTime_html_acf2161ca037080dc4b767e636ad8db84"><div class="ttname"><a href="structRTCTime.html#acf2161ca037080dc4b767e636ad8db84">RTCTime::minute</a></div><div class="ttdeci">uint8_t minute</div><div class="ttdoc">Minute within the hour (0-59) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00031">RTC.h:31</a></div></div>
<div class="ttc" id="classRTC_html_ade282d7a60147c3f0269f1fcd59c8d66"><div class="ttname"><a href="classRTC.html#ade282d7a60147c3f0269f1fcd59c8d66">RTC::readAlarm</a></div><div class="ttdeci">virtual void readAlarm(uint8_t alarmNum, RTCAlarm *value)</div><div class="ttdoc">Reads the details of the alarm with index alarmNum into value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00209">RTC.cpp:209</a></div></div>
<div class="ttc" id="classRTC_html_aa1e21bf42ebd4456919744ae0f4f631e"><div class="ttname"><a href="classRTC.html#aa1e21bf42ebd4456919744ae0f4f631e">RTC::readDate</a></div><div class="ttdeci">virtual void readDate(RTCDate *value)</div><div class="ttdoc">Reads the current date from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00169">RTC.cpp:169</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a1319fe936dcb7e9d6bdf200b77a94f8e"><div class="ttname"><a href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e">DS3232RTC::byteCount</a></div><div class="ttdeci">int byteCount() const </div><div class="ttdoc">Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...</div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00335">DS3232RTC.cpp:335</a></div></div>
<div class="ttc" id="classDS3232RTC_html_ab03358e3b5996e38d766e2f9f6ab62ca"><div class="ttname"><a href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca">DS3232RTC::readDate</a></div><div class="ttdeci">void readDate(RTCDate *value)</div><div class="ttdoc">Reads the current date from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00225">DS3232RTC.cpp:225</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a3966de6f4241d86f198a8b9dd5e7e59a"><div class="ttname"><a href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a">DS3232RTC::enable32kHzOutput</a></div><div class="ttdeci">void enable32kHzOutput()</div><div class="ttdoc">Enables the 32 kHz output on the DS3232 chip. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00444">DS3232RTC.cpp:444</a></div></div>
<div class="ttc" id="classI2CMaster_html_a0bf6b84cb1e2b3a37a4a0260d0b6f960"><div class="ttname"><a href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">I2CMaster::write</a></div><div class="ttdeci">virtual void write(uint8_t value)=0</div><div class="ttdoc">Writes a single byte value on the I2C bus. </div></div>
<div class="ttc" id="classDS3232RTC_html_a8b0a65e0ac479aec8fad6ca3147dbe75"><div class="ttname"><a href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75">DS3232RTC::writeAlarm</a></div><div class="ttdeci">void writeAlarm(uint8_t alarmNum, const RTCAlarm *value)</div><div class="ttdoc">Updates the details of the alarm with index alarmNum from value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00298">DS3232RTC.cpp:298</a></div></div>
<div class="ttc" id="classRTC_html_a0e96c91efd9e7a6340effdae3eadf17e"><div class="ttname"><a href="classRTC.html#a0e96c91efd9e7a6340effdae3eadf17e">RTC::writeAlarm</a></div><div class="ttdeci">virtual void writeAlarm(uint8_t alarmNum, const RTCAlarm *value)</div><div class="ttdoc">Updates the details of the alarm with index alarmNum from value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00224">RTC.cpp:224</a></div></div>
<div class="ttc" id="classRTC_html_aee5ae8f600ee5296e65635c0d836fca3"><div class="ttname"><a href="classRTC.html#aee5ae8f600ee5296e65635c0d836fca3">RTC::ALARM_COUNT</a></div><div class="ttdeci">static const uint8_t ALARM_COUNT</div><div class="ttdoc">Number of alarms that are supported by RTC::readAlarm() and RTC::writeAlarm(). </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00077">RTC.h:77</a></div></div>
<div class="ttc" id="classRTC_html_ae667600d05c8e7b06a93574dd068a4d7"><div class="ttname"><a href="classRTC.html#ae667600d05c8e7b06a93574dd068a4d7">RTC::writeDate</a></div><div class="ttdeci">virtual void writeDate(const RTCDate *value)</div><div class="ttdoc">Updates the date in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00194">RTC.cpp:194</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a225b8c62d617aa1b7be7d20e8a033be9"><div class="ttname"><a href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9">DS3232RTC::disableAlarmInterrupts</a></div><div class="ttdeci">void disableAlarmInterrupts()</div><div class="ttdoc">Disables the generation of interrupts for alarms 0 and 1. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00393">DS3232RTC.cpp:393</a></div></div>
<div class="ttc" id="classI2CMaster_html_a4e5f1a1a4c2242699be5a35fc4872fde"><div class="ttname"><a href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde">I2CMaster::startRead</a></div><div class="ttdeci">virtual bool startRead(unsigned int address, unsigned int count)=0</div><div class="ttdoc">Starts a read operation for count bytes by sending the start condition and the I2C control byte...</div></div>
<div class="ttc" id="structRTCAlarm_html_a75bdc42acd3ab3ad495680c6b6a34692"><div class="ttname"><a href="structRTCAlarm.html#a75bdc42acd3ab3ad495680c6b6a34692">RTCAlarm::hour</a></div><div class="ttdeci">uint8_t hour</div><div class="ttdoc">Hour of the day for the alarm (0-23). </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00046">RTC.h:46</a></div></div>
<div class="ttc" id="classRTC_html_a9ed5480b362a83f1f45c4d3bcf7c3bf8"><div class="ttname"><a href="classRTC.html#a9ed5480b362a83f1f45c4d3bcf7c3bf8">RTC::NO_TEMPERATURE</a></div><div class="ttdeci">static const int NO_TEMPERATURE</div><div class="ttdoc">Value that is returned from readTemperature() if the realtime clock chip cannot determine the tempera...</div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00086">RTC.h:86</a></div></div>
<div class="ttc" id="structRTCAlarm_html_a0f2ef7363cb60a26642d5295b77ca19e"><div class="ttname"><a href="structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e">RTCAlarm::flags</a></div><div class="ttdeci">uint8_t flags</div><div class="ttdoc">Additional flags for the alarm. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00049">RTC.h:49</a></div></div>
<div class="ttc" id="structRTCDate_html"><div class="ttname"><a href="structRTCDate.html">RTCDate</a></div><div class="ttdoc">Stores date information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00035">RTC.h:35</a></div></div>
<div class="ttc" id="classDS3232RTC_html_ab0ca13a8b80da856b37fc53b84e27c78"><div class="ttname"><a href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78">DS3232RTC::writeTime</a></div><div class="ttdeci">void writeTime(const RTCTime *value)</div><div class="ttdoc">Updates the time in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00250">DS3232RTC.cpp:250</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a5ba83a3ef7d65d45c2f3241afdd8fef7"><div class="ttname"><a href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7">DS3232RTC::readByte</a></div><div class="ttdeci">uint8_t readByte(uint8_t offset)</div><div class="ttdoc">Reads the byte at offset within the realtime clock&#39;s non-volatile memory. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00340">DS3232RTC.cpp:340</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a79649f100a4562b9c1ba7c69e85cbca3"><div class="ttname"><a href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3">DS3232RTC::firedAlarm</a></div><div class="ttdeci">int firedAlarm()</div><div class="ttdoc">Determines which of alarms 0 or 1 have fired since the last call. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00416">DS3232RTC.cpp:416</a></div></div>
<div class="ttc" id="classDS3232RTC_html_aa959454ae01b11c48d6ec7ec192b4ccb"><div class="ttname"><a href="classDS3232RTC.html#aa959454ae01b11c48d6ec7ec192b4ccb">DS3232RTC::DS3232RTC</a></div><div class="ttdeci">DS3232RTC(I2CMaster &amp;bus, uint8_t oneHzPin=255)</div><div class="ttdoc">Attaches to a realtime clock slave device on bus. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00126">DS3232RTC.cpp:126</a></div></div>
<div class="ttc" id="classI2CMaster_html_a01960fc821cb25e4c88c26d2c6107e35"><div class="ttname"><a href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">I2CMaster::startWrite</a></div><div class="ttdeci">virtual void startWrite(unsigned int address)</div><div class="ttdoc">Starts a write operation by sending a start condition and the I2C control byte. </div></div>
<div class="ttc" id="classI2CMaster_html_ab29f63551ddeb032a91505d1c0b8ac41"><div class="ttname"><a href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">I2CMaster::endWrite</a></div><div class="ttdeci">virtual bool endWrite()=0</div><div class="ttdoc">Ends the current write operation. </div></div>
<div class="ttc" id="structRTCDate_html_a7d31822daff3c3fc947386abd897732f"><div class="ttname"><a href="structRTCDate.html#a7d31822daff3c3fc947386abd897732f">RTCDate::year</a></div><div class="ttdeci">unsigned int year</div><div class="ttdoc">Year (4-digit) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00037">RTC.h:37</a></div></div>
<div class="ttc" id="classRTC_html_a1cab6397ec04b1e2b3feea5b3cd1f749"><div class="ttname"><a href="classRTC.html#a1cab6397ec04b1e2b3feea5b3cd1f749">RTC::writeByte</a></div><div class="ttdeci">virtual void writeByte(uint8_t offset, uint8_t value)</div><div class="ttdoc">Writes value to offset within the realtime clock&#39;s non-volatile memory. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00262">RTC.cpp:262</a></div></div>
<div class="ttc" id="structRTCAlarm_html_ad9a75ceb4b4b3474baa66dd5466e62fe"><div class="ttname"><a href="structRTCAlarm.html#ad9a75ceb4b4b3474baa66dd5466e62fe">RTCAlarm::minute</a></div><div class="ttdeci">uint8_t minute</div><div class="ttdoc">Minute of the hour for the alarm (0-59). </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00047">RTC.h:47</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a619ffee1bc013c9ddf4ae415115798bc"><div class="ttname"><a href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc">DS3232RTC::hasUpdates</a></div><div class="ttdeci">bool hasUpdates()</div><div class="ttdoc">Returns true if the realtime clock has updated since the last call to this function. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00166">DS3232RTC.cpp:166</a></div></div>
<div class="ttc" id="classRTC_html_a0f47b10b436e3f9d36e04ec907579431"><div class="ttname"><a href="classRTC.html#a0f47b10b436e3f9d36e04ec907579431">RTC::readByte</a></div><div class="ttdeci">virtual uint8_t readByte(uint8_t offset)</div><div class="ttdoc">Reads the byte at offset within the realtime clock&#39;s non-volatile memory. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00247">RTC.cpp:247</a></div></div>
<div class="ttc" id="structRTCTime_html"><div class="ttname"><a href="structRTCTime.html">RTCTime</a></div><div class="ttdoc">Stores time information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00028">RTC.h:28</a></div></div>
<div class="ttc" id="classI2CMaster_html"><div class="ttname"><a href="classI2CMaster.html">I2CMaster</a></div><div class="ttdoc">Abstract base class for I2C master implementations. </div><div class="ttdef"><b>Definition:</b> <a href="I2CMaster_8h_source.html#l00028">I2CMaster.h:28</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a31c004a90c724979d8267c31f2dbf5ed"><div class="ttname"><a href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed">DS3232RTC::writeDate</a></div><div class="ttdeci">void writeDate(const RTCDate *value)</div><div class="ttdoc">Updates the date in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00264">DS3232RTC.cpp:264</a></div></div>
<div class="ttc" id="structRTCAlarm_html"><div class="ttname"><a href="structRTCAlarm.html">RTCAlarm</a></div><div class="ttdoc">Stores alarm information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00042">RTC.h:42</a></div></div>
<div class="ttc" id="classI2CMaster_html_a49eeebb57f6bc06de39973fe836369cd"><div class="ttname"><a href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">I2CMaster::read</a></div><div class="ttdeci">virtual uint8_t read()=0</div><div class="ttdoc">Reads a single byte from the I2C bus. </div></div>
<div class="ttc" id="structRTCTime_html_a98ba717092ef856dd2b773ba02fcb1a4"><div class="ttname"><a href="structRTCTime.html#a98ba717092ef856dd2b773ba02fcb1a4">RTCTime::hour</a></div><div class="ttdeci">uint8_t hour</div><div class="ttdoc">Hour of the day (0-23) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00030">RTC.h:30</a></div></div>
<div class="ttc" id="structRTCDate_html_a2d68ff3fb90240df522b41222362704c"><div class="ttname"><a href="structRTCDate.html#a2d68ff3fb90240df522b41222362704c">RTCDate::day</a></div><div class="ttdeci">uint8_t day</div><div class="ttdoc">Day of the month (1-31) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00039">RTC.h:39</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a09c7073c687dcbbc423baf48074c7873"><div class="ttname"><a href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873">DS3232RTC::readAlarm</a></div><div class="ttdeci">void readAlarm(uint8_t alarmNum, RTCAlarm *value)</div><div class="ttdoc">Reads the details of the alarm with index alarmNum into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00278">DS3232RTC.cpp:278</a></div></div>
<div class="ttc" id="structRTCTime_html_a87b7c02e535d808dcba04c77e34abb91"><div class="ttname"><a href="structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91">RTCTime::second</a></div><div class="ttdeci">uint8_t second</div><div class="ttdoc">Second within the minute (0-59) </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00032">RTC.h:32</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a9acebf12c5cecdd6d84e0ff9ed41765a"><div class="ttname"><a href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a">DS3232RTC::writeByte</a></div><div class="ttdeci">void writeByte(uint8_t offset, uint8_t value)</div><div class="ttdoc">Writes value to offset within the realtime clock&#39;s non-volatile memory. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00348">DS3232RTC.cpp:348</a></div></div>
<div class="ttc" id="classRTC_html_aaf0a5c1f32f210a49718d148620b5bec"><div class="ttname"><a href="classRTC.html#aaf0a5c1f32f210a49718d148620b5bec">RTC::readTime</a></div><div class="ttdeci">virtual void readTime(RTCTime *value)</div><div class="ttdoc">Reads the current time from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8cpp_source.html#l00144">RTC.cpp:144</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,198 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: DS3232RTC.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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">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="line" href="classDS3232RTC.html"> 30</a></span>&#160;<span class="keyword">class </span><a class="code" href="classDS3232RTC.html">DS3232RTC</a> : <span class="keyword">public</span> <a class="code" href="classRTC.html">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">DS3232RTC</a>(<a class="code" href="classI2CMaster.html">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="line" href="classDS3232RTC.html#acc5908a3743afb4c26bd75e22cad87a4"> 34</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classDS3232RTC.html#acc5908a3743afb4c26bd75e22cad87a4">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">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">readTime</a>(<a class="code" href="structRTCTime.html">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">readDate</a>(<a class="code" href="structRTCDate.html">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">writeTime</a>(<span class="keyword">const</span> <a class="code" href="structRTCTime.html">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">writeDate</a>(<span class="keyword">const</span> <a class="code" href="structRTCDate.html">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">readAlarm</a>(uint8_t alarmNum, <a class="code" href="structRTCAlarm.html">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">writeAlarm</a>(uint8_t alarmNum, <span class="keyword">const</span> <a class="code" href="structRTCAlarm.html">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">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">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">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">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">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">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">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">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">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">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 class="ttc" id="classDS3232RTC_html_ab91e79271a1f8e75b07bddbb04445dc9"><div class="ttname"><a href="classDS3232RTC.html#ab91e79271a1f8e75b07bddbb04445dc9">DS3232RTC::enableAlarmInterrupts</a></div><div class="ttdeci">void enableAlarmInterrupts()</div><div class="ttdoc">Enables the generation of interrupts for alarms 0 and 1. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00380">DS3232RTC.cpp:380</a></div></div>
<div class="ttc" id="classDS3232RTC_html_ada732bae42fc2833e59ae293aa27ddcb"><div class="ttname"><a href="classDS3232RTC.html#ada732bae42fc2833e59ae293aa27ddcb">DS3232RTC::disable32kHzOutput</a></div><div class="ttdeci">void disable32kHzOutput()</div><div class="ttdoc">Disables the 32 kHz output on the DS3232 chip. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00458">DS3232RTC.cpp:458</a></div></div>
<div class="ttc" id="classDS3232RTC_html_af89e68c68f1c4b7e94286f800b5b2747"><div class="ttname"><a href="classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747">DS3232RTC::readTime</a></div><div class="ttdeci">void readTime(RTCTime *value)</div><div class="ttdoc">Reads the current time from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00205">DS3232RTC.cpp:205</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a0faf40c25ab019a326a60f301c2bb41b"><div class="ttname"><a href="classDS3232RTC.html#a0faf40c25ab019a326a60f301c2bb41b">DS3232RTC::readTemperature</a></div><div class="ttdeci">int readTemperature()</div><div class="ttdoc">Reads the value of the temperature sensor and returns the temperature in quarters of a degree celcius...</div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00356">DS3232RTC.cpp:356</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a1319fe936dcb7e9d6bdf200b77a94f8e"><div class="ttname"><a href="classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e">DS3232RTC::byteCount</a></div><div class="ttdeci">int byteCount() const </div><div class="ttdoc">Returns the number of bytes of non-volatile memory that can be used for storage of arbitrary settings...</div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00335">DS3232RTC.cpp:335</a></div></div>
<div class="ttc" id="classDS3232RTC_html_ab03358e3b5996e38d766e2f9f6ab62ca"><div class="ttname"><a href="classDS3232RTC.html#ab03358e3b5996e38d766e2f9f6ab62ca">DS3232RTC::readDate</a></div><div class="ttdeci">void readDate(RTCDate *value)</div><div class="ttdoc">Reads the current date from the realtime clock into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00225">DS3232RTC.cpp:225</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a3966de6f4241d86f198a8b9dd5e7e59a"><div class="ttname"><a href="classDS3232RTC.html#a3966de6f4241d86f198a8b9dd5e7e59a">DS3232RTC::enable32kHzOutput</a></div><div class="ttdeci">void enable32kHzOutput()</div><div class="ttdoc">Enables the 32 kHz output on the DS3232 chip. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00444">DS3232RTC.cpp:444</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a8b0a65e0ac479aec8fad6ca3147dbe75"><div class="ttname"><a href="classDS3232RTC.html#a8b0a65e0ac479aec8fad6ca3147dbe75">DS3232RTC::writeAlarm</a></div><div class="ttdeci">void writeAlarm(uint8_t alarmNum, const RTCAlarm *value)</div><div class="ttdoc">Updates the details of the alarm with index alarmNum from value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00298">DS3232RTC.cpp:298</a></div></div>
<div class="ttc" id="classDS3232RTC_html"><div class="ttname"><a href="classDS3232RTC.html">DS3232RTC</a></div><div class="ttdoc">Communicates with a DS3232 realtime clock chip via I2C. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8h_source.html#l00030">DS3232RTC.h:30</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a225b8c62d617aa1b7be7d20e8a033be9"><div class="ttname"><a href="classDS3232RTC.html#a225b8c62d617aa1b7be7d20e8a033be9">DS3232RTC::disableAlarmInterrupts</a></div><div class="ttdeci">void disableAlarmInterrupts()</div><div class="ttdoc">Disables the generation of interrupts for alarms 0 and 1. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00393">DS3232RTC.cpp:393</a></div></div>
<div class="ttc" id="structRTCDate_html"><div class="ttname"><a href="structRTCDate.html">RTCDate</a></div><div class="ttdoc">Stores date information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00035">RTC.h:35</a></div></div>
<div class="ttc" id="classDS3232RTC_html_ab0ca13a8b80da856b37fc53b84e27c78"><div class="ttname"><a href="classDS3232RTC.html#ab0ca13a8b80da856b37fc53b84e27c78">DS3232RTC::writeTime</a></div><div class="ttdeci">void writeTime(const RTCTime *value)</div><div class="ttdoc">Updates the time in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00250">DS3232RTC.cpp:250</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a5ba83a3ef7d65d45c2f3241afdd8fef7"><div class="ttname"><a href="classDS3232RTC.html#a5ba83a3ef7d65d45c2f3241afdd8fef7">DS3232RTC::readByte</a></div><div class="ttdeci">uint8_t readByte(uint8_t offset)</div><div class="ttdoc">Reads the byte at offset within the realtime clock&#39;s non-volatile memory. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00340">DS3232RTC.cpp:340</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a79649f100a4562b9c1ba7c69e85cbca3"><div class="ttname"><a href="classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3">DS3232RTC::firedAlarm</a></div><div class="ttdeci">int firedAlarm()</div><div class="ttdoc">Determines which of alarms 0 or 1 have fired since the last call. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00416">DS3232RTC.cpp:416</a></div></div>
<div class="ttc" id="classDS3232RTC_html_aa959454ae01b11c48d6ec7ec192b4ccb"><div class="ttname"><a href="classDS3232RTC.html#aa959454ae01b11c48d6ec7ec192b4ccb">DS3232RTC::DS3232RTC</a></div><div class="ttdeci">DS3232RTC(I2CMaster &amp;bus, uint8_t oneHzPin=255)</div><div class="ttdoc">Attaches to a realtime clock slave device on bus. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00126">DS3232RTC.cpp:126</a></div></div>
<div class="ttc" id="classDS3232RTC_html_acc5908a3743afb4c26bd75e22cad87a4"><div class="ttname"><a href="classDS3232RTC.html#acc5908a3743afb4c26bd75e22cad87a4">DS3232RTC::isRealTime</a></div><div class="ttdeci">bool isRealTime() const </div><div class="ttdoc">Returns true if the realtime clock is on the I2C bus; false if the time and date are simulated...</div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8h_source.html#l00034">DS3232RTC.h:34</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a619ffee1bc013c9ddf4ae415115798bc"><div class="ttname"><a href="classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc">DS3232RTC::hasUpdates</a></div><div class="ttdeci">bool hasUpdates()</div><div class="ttdoc">Returns true if the realtime clock has updated since the last call to this function. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00166">DS3232RTC.cpp:166</a></div></div>
<div class="ttc" id="structRTCTime_html"><div class="ttname"><a href="structRTCTime.html">RTCTime</a></div><div class="ttdoc">Stores time information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00028">RTC.h:28</a></div></div>
<div class="ttc" id="classI2CMaster_html"><div class="ttname"><a href="classI2CMaster.html">I2CMaster</a></div><div class="ttdoc">Abstract base class for I2C master implementations. </div><div class="ttdef"><b>Definition:</b> <a href="I2CMaster_8h_source.html#l00028">I2CMaster.h:28</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a31c004a90c724979d8267c31f2dbf5ed"><div class="ttname"><a href="classDS3232RTC.html#a31c004a90c724979d8267c31f2dbf5ed">DS3232RTC::writeDate</a></div><div class="ttdeci">void writeDate(const RTCDate *value)</div><div class="ttdoc">Updates the date in the realtime clock to match value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00264">DS3232RTC.cpp:264</a></div></div>
<div class="ttc" id="structRTCAlarm_html"><div class="ttname"><a href="structRTCAlarm.html">RTCAlarm</a></div><div class="ttdoc">Stores alarm information from a realtime clock chip. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00042">RTC.h:42</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a09c7073c687dcbbc423baf48074c7873"><div class="ttname"><a href="classDS3232RTC.html#a09c7073c687dcbbc423baf48074c7873">DS3232RTC::readAlarm</a></div><div class="ttdeci">void readAlarm(uint8_t alarmNum, RTCAlarm *value)</div><div class="ttdoc">Reads the details of the alarm with index alarmNum into value. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00278">DS3232RTC.cpp:278</a></div></div>
<div class="ttc" id="classDS3232RTC_html_a9acebf12c5cecdd6d84e0ff9ed41765a"><div class="ttname"><a href="classDS3232RTC.html#a9acebf12c5cecdd6d84e0ff9ed41765a">DS3232RTC::writeByte</a></div><div class="ttdeci">void writeByte(uint8_t offset, uint8_t value)</div><div class="ttdoc">Writes value to offset within the realtime clock&#39;s non-volatile memory. </div><div class="ttdef"><b>Definition:</b> <a href="DS3232RTC_8cpp_source.html#l00348">DS3232RTC.cpp:348</a></div></div>
<div class="ttc" id="classRTC_html"><div class="ttname"><a href="classRTC.html">RTC</a></div><div class="ttdoc">Base class for realtime clock handlers. </div><div class="ttdef"><b>Definition:</b> <a href="RTC_8h_source.html#l00052">RTC.h:52</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,265 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: DejaVuSans9.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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 Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,265 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: DejaVuSansBold9.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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 Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,265 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: DejaVuSansItalic9.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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 Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: EAX.cpp Source File</title>
<title>Arduino Cryptography Library: EAX.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -301,7 +300,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: EAX.h Source File</title>
<title>Arduino Cryptography Library: EAX.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -196,7 +195,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -1,290 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: EEPROM24.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classEEPROM24.html#ae8547f6ff7711496e1959ee24a142995"> 95</a></span>&#160;<a class="code" href="classEEPROM24.html#ae8547f6ff7711496e1959ee24a142995">EEPROM24::EEPROM24</a>(<a class="code" href="classI2CMaster.html">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">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="line" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf"> 152</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf">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">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">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="line" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586"> 167</a></span>&#160;uint8_t <a class="code" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586">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">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">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="line" href="classEEPROM24.html#a63e23dc014415f947975359ac09f627e"> 187</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classEEPROM24.html#a960971377d4decb122ff38d12603e586">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">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">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">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="line" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8"> 213</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8">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">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="line" href="classEEPROM24.html#a3d918ed34da7ca6d21a776c0614eebf3"> 235</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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 class="ttc" id="classEEPROM24_html_aa544875cef9bd05bf71d6c19be06cf7c"><div class="ttname"><a href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c">EEPROM24::size</a></div><div class="ttdeci">unsigned long size() const </div><div class="ttdoc">Returns the size of the EEPROM in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="EEPROM24_8h_source.html#l00065">EEPROM24.h:65</a></div></div>
<div class="ttc" id="classEEPROM24_html_a960971377d4decb122ff38d12603e586"><div class="ttname"><a href="classEEPROM24.html#a960971377d4decb122ff38d12603e586">EEPROM24::read</a></div><div class="ttdeci">uint8_t read(unsigned long address)</div><div class="ttdoc">Reads a single byte from the EEPROM at address. </div><div class="ttdef"><b>Definition:</b> <a href="EEPROM24_8cpp_source.html#l00167">EEPROM24.cpp:167</a></div></div>
<div class="ttc" id="classI2CMaster_html_a0bf6b84cb1e2b3a37a4a0260d0b6f960"><div class="ttname"><a href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">I2CMaster::write</a></div><div class="ttdeci">virtual void write(uint8_t value)=0</div><div class="ttdoc">Writes a single byte value on the I2C bus. </div></div>
<div class="ttc" id="classI2CMaster_html_a4e5f1a1a4c2242699be5a35fc4872fde"><div class="ttname"><a href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde">I2CMaster::startRead</a></div><div class="ttdeci">virtual bool startRead(unsigned int address, unsigned int count)=0</div><div class="ttdoc">Starts a read operation for count bytes by sending the start condition and the I2C control byte...</div></div>
<div class="ttc" id="classEEPROM24_html_ae8547f6ff7711496e1959ee24a142995"><div class="ttname"><a href="classEEPROM24.html#ae8547f6ff7711496e1959ee24a142995">EEPROM24::EEPROM24</a></div><div class="ttdeci">EEPROM24(I2CMaster &amp;bus, unsigned long type, uint8_t bank=0)</div><div class="ttdoc">Constructs a new EEPROM access object on bus for an EEPROM of the specified type. ...</div><div class="ttdef"><b>Definition:</b> <a href="EEPROM24_8cpp_source.html#l00095">EEPROM24.cpp:95</a></div></div>
<div class="ttc" id="classEEPROM24_html_a9e017772e3459ee4ab987e27d78937f8"><div class="ttname"><a href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8">EEPROM24::write</a></div><div class="ttdeci">bool write(unsigned long address, uint8_t value)</div><div class="ttdoc">Writes a byte value to address in the EEPROM. </div><div class="ttdef"><b>Definition:</b> <a href="EEPROM24_8cpp_source.html#l00213">EEPROM24.cpp:213</a></div></div>
<div class="ttc" id="classI2CMaster_html_a6458fa99cfd9e6270ae6dff993955833"><div class="ttname"><a href="classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833">I2CMaster::available</a></div><div class="ttdeci">virtual unsigned int available()=0</div><div class="ttdoc">Returns the number of bytes that are still available for reading. </div></div>
<div class="ttc" id="classI2CMaster_html_a01960fc821cb25e4c88c26d2c6107e35"><div class="ttname"><a href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">I2CMaster::startWrite</a></div><div class="ttdeci">virtual void startWrite(unsigned int address)</div><div class="ttdoc">Starts a write operation by sending a start condition and the I2C control byte. </div></div>
<div class="ttc" id="classI2CMaster_html_ab29f63551ddeb032a91505d1c0b8ac41"><div class="ttname"><a href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">I2CMaster::endWrite</a></div><div class="ttdeci">virtual bool endWrite()=0</div><div class="ttdoc">Ends the current write operation. </div></div>
<div class="ttc" id="classI2CMaster_html"><div class="ttname"><a href="classI2CMaster.html">I2CMaster</a></div><div class="ttdoc">Abstract base class for I2C master implementations. </div><div class="ttdef"><b>Definition:</b> <a href="I2CMaster_8h_source.html#l00028">I2CMaster.h:28</a></div></div>
<div class="ttc" id="classEEPROM24_html_af8b70971d882b06de3fc6644a8ece3cf"><div class="ttname"><a href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf">EEPROM24::available</a></div><div class="ttdeci">bool available()</div><div class="ttdoc">Returns true if the EEPROM is available on the I2C bus; false otherwise. </div><div class="ttdef"><b>Definition:</b> <a href="EEPROM24_8cpp_source.html#l00152">EEPROM24.cpp:152</a></div></div>
<div class="ttc" id="classI2CMaster_html_a49eeebb57f6bc06de39973fe836369cd"><div class="ttname"><a href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">I2CMaster::read</a></div><div class="ttdeci">virtual uint8_t read()=0</div><div class="ttdoc">Reads a single byte from the I2C bus. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,194 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: EEPROM24.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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">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="line" href="classEEPROM24.html"> 60</a></span>&#160;<span class="keyword">class </span><a class="code" href="classEEPROM24.html">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">EEPROM24</a>(<a class="code" href="classI2CMaster.html">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="line" 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">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="line" 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">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">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">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">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">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">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">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 class="ttc" id="classEEPROM24_html_aa544875cef9bd05bf71d6c19be06cf7c"><div class="ttname"><a href="classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c">EEPROM24::size</a></div><div class="ttdeci">unsigned long size() const </div><div class="ttdoc">Returns the size of the EEPROM in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="EEPROM24_8h_source.html#l00065">EEPROM24.h:65</a></div></div>
<div class="ttc" id="classEEPROM24_html_a960971377d4decb122ff38d12603e586"><div class="ttname"><a href="classEEPROM24.html#a960971377d4decb122ff38d12603e586">EEPROM24::read</a></div><div class="ttdeci">uint8_t read(unsigned long address)</div><div class="ttdoc">Reads a single byte from the EEPROM at address. </div><div class="ttdef"><b>Definition:</b> <a href="EEPROM24_8cpp_source.html#l00167">EEPROM24.cpp:167</a></div></div>
<div class="ttc" id="classEEPROM24_html"><div class="ttname"><a href="classEEPROM24.html">EEPROM24</a></div><div class="ttdoc">Reading and writing EEPROM&#39;s from the 24LCXX family. </div><div class="ttdef"><b>Definition:</b> <a href="EEPROM24_8h_source.html#l00060">EEPROM24.h:60</a></div></div>
<div class="ttc" id="classEEPROM24_html_ae8547f6ff7711496e1959ee24a142995"><div class="ttname"><a href="classEEPROM24.html#ae8547f6ff7711496e1959ee24a142995">EEPROM24::EEPROM24</a></div><div class="ttdeci">EEPROM24(I2CMaster &amp;bus, unsigned long type, uint8_t bank=0)</div><div class="ttdoc">Constructs a new EEPROM access object on bus for an EEPROM of the specified type. ...</div><div class="ttdef"><b>Definition:</b> <a href="EEPROM24_8cpp_source.html#l00095">EEPROM24.cpp:95</a></div></div>
<div class="ttc" id="classEEPROM24_html_a9e017772e3459ee4ab987e27d78937f8"><div class="ttname"><a href="classEEPROM24.html#a9e017772e3459ee4ab987e27d78937f8">EEPROM24::write</a></div><div class="ttdeci">bool write(unsigned long address, uint8_t value)</div><div class="ttdoc">Writes a byte value to address in the EEPROM. </div><div class="ttdef"><b>Definition:</b> <a href="EEPROM24_8cpp_source.html#l00213">EEPROM24.cpp:213</a></div></div>
<div class="ttc" id="classEEPROM24_html_af33b23e2614f3966bbaf2554890c032a"><div class="ttname"><a href="classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a">EEPROM24::pageSize</a></div><div class="ttdeci">unsigned long pageSize() const </div><div class="ttdoc">Returns the size of a single EEPROM page in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="EEPROM24_8h_source.html#l00066">EEPROM24.h:66</a></div></div>
<div class="ttc" id="classI2CMaster_html"><div class="ttname"><a href="classI2CMaster.html">I2CMaster</a></div><div class="ttdoc">Abstract base class for I2C master implementations. </div><div class="ttdef"><b>Definition:</b> <a href="I2CMaster_8h_source.html#l00028">I2CMaster.h:28</a></div></div>
<div class="ttc" id="classEEPROM24_html_af8b70971d882b06de3fc6644a8ece3cf"><div class="ttname"><a href="classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf">EEPROM24::available</a></div><div class="ttdeci">bool available()</div><div class="ttdoc">Returns true if the EEPROM is available on the I2C bus; false otherwise. </div><div class="ttdef"><b>Definition:</b> <a href="EEPROM24_8cpp_source.html#l00152">EEPROM24.cpp:152</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Ed25519.cpp Source File</title>
<title>Arduino Cryptography Library: Ed25519.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -571,7 +570,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Ed25519.h Source File</title>
<title>Arduino Cryptography Library: Ed25519.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -168,7 +167,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -1,204 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Field.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e"> 40</a></span>&#160;<a class="code" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">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="line" href="classField.html#a7e2bdb203ddfd9219696f263c1731fe7"> 52</a></span>&#160;<a class="code" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">Field::Field</a>(<a class="code" href="classForm.html">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">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="line" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60"> 66</a></span>&#160;<a class="code" href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60">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">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="line" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3"> 96</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classField.html#a061bd1ed4d8b079df86465df8facd3b3">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="line" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5"> 116</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">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">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="line" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07"> 129</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">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="line" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b"> 146</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classField.html#ad4ea63599d780c35b296cf2840b69f7b">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">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">label</a>;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">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">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">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">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">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="line" href="classField.html#a25d86a67b321e8c642edf75a10a35f72"> 169</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classField.html#a25d86a67b321e8c642edf75a10a35f72">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">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">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="line" href="classField.html#afc612378167be0e7f8a6f8395b3537bd"> 191</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classField.html#afc612378167be0e7f8a6f8395b3537bd">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 class="ttc" id="classForm_html_a3101f288e3e5aa8307c57f35861ad587"><div class="ttname"><a href="classForm.html#a3101f288e3e5aa8307c57f35861ad587">Form::isVisible</a></div><div class="ttdeci">bool isVisible() const </div><div class="ttdoc">Returns true if the form is shown; false if the form is hidden. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8h_source.html#l00053">Form.h:53</a></div></div>
<div class="ttc" id="classForm_html"><div class="ttname"><a href="classForm.html">Form</a></div><div class="ttdoc">Manager for a form containing data input/output fields. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8h_source.html#l00032">Form.h:32</a></div></div>
<div class="ttc" id="classField_html_aa032bbeacb405c56546cb56fbbee94f5"><div class="ttname"><a href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">Field::enterField</a></div><div class="ttdeci">virtual void enterField(bool reverse)</div><div class="ttdoc">Enters the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00116">Field.cpp:116</a></div></div>
<div class="ttc" id="classField_html_a061bd1ed4d8b079df86465df8facd3b3"><div class="ttname"><a href="classField.html#a061bd1ed4d8b079df86465df8facd3b3">Field::dispatch</a></div><div class="ttdeci">virtual int dispatch(int event)</div><div class="ttdoc">Dispatches event via this field. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00096">Field.cpp:96</a></div></div>
<div class="ttc" id="classForm_html_a5cb056ace428e75e321610555bfecac7"><div class="ttname"><a href="classForm.html#a5cb056ace428e75e321610555bfecac7">Form::addField</a></div><div class="ttdeci">void addField(Field *field)</div><div class="ttdoc">Adds field to this form. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00165">Form.cpp:165</a></div></div>
<div class="ttc" id="classField_html_aaa861ef917130c989a955bc75c683afe"><div class="ttname"><a href="classField.html#aaa861ef917130c989a955bc75c683afe">Field::label</a></div><div class="ttdeci">const String &amp; label() const </div><div class="ttdoc">Returns the label to display in the first line of this field. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00041">Field.h:41</a></div></div>
<div class="ttc" id="classField_html_a5cf21bf958a71e51feac9e1bf9f599d1"><div class="ttname"><a href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">Field::lcd</a></div><div class="ttdeci">LiquidCrystal * lcd() const </div><div class="ttdoc">Returns the LCD that this field is being drawn on. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00047">Field.h:47</a></div></div>
<div class="ttc" id="classField_html_ac4ea0d104376233c3f0bfc080ec8564e"><div class="ttname"><a href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">Field::Field</a></div><div class="ttdeci">Field(const String &amp;label)</div><div class="ttdoc">Constructs a new field with a specific label. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00040">Field.cpp:40</a></div></div>
<div class="ttc" id="classField_html_ad6805c75ee1e62f8cd8bd550c4530c07"><div class="ttname"><a href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">Field::exitField</a></div><div class="ttdeci">virtual void exitField()</div><div class="ttdoc">Exits the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00129">Field.cpp:129</a></div></div>
<div class="ttc" id="classField_html_afc612378167be0e7f8a6f8395b3537bd"><div class="ttname"><a href="classField.html#afc612378167be0e7f8a6f8395b3537bd">Field::updateCursor</a></div><div class="ttdeci">virtual void updateCursor()</div><div class="ttdoc">Updates the cursor position after the label has been drawn by setLabel(). </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00191">Field.cpp:191</a></div></div>
<div class="ttc" id="classForm_html_a7abd717029f9b19ee7318470072cd697"><div class="ttname"><a href="classForm.html#a7abd717029f9b19ee7318470072cd697">Form::removeField</a></div><div class="ttdeci">void removeField(Field *field)</div><div class="ttdoc">Removes field from this form. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00187">Form.cpp:187</a></div></div>
<div class="ttc" id="classField_html_ad4ea63599d780c35b296cf2840b69f7b"><div class="ttname"><a href="classField.html#ad4ea63599d780c35b296cf2840b69f7b">Field::setLabel</a></div><div class="ttdeci">void setLabel(const String &amp;label)</div><div class="ttdoc">Sets the label to display in the first line of this field. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00146">Field.cpp:146</a></div></div>
<div class="ttc" id="classField_html_a45d6e6d09b8f8e46de62b40119d62c60"><div class="ttname"><a href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60">Field::~Field</a></div><div class="ttdeci">~Field()</div><div class="ttdoc">Destroys this field and removes it from its owning Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00066">Field.cpp:66</a></div></div>
<div class="ttc" id="classField_html_a25d86a67b321e8c642edf75a10a35f72"><div class="ttname"><a href="classField.html#a25d86a67b321e8c642edf75a10a35f72">Field::isCurrent</a></div><div class="ttdeci">bool isCurrent() const </div><div class="ttdoc">Returns true if this field is the currently-displayed field in its owning form; false otherwise...</div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00169">Field.cpp:169</a></div></div>
<div class="ttc" id="classForm_html_a85a219a73294cef1f89a2182b5c25bf8"><div class="ttname"><a href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8">Form::currentField</a></div><div class="ttdeci">Field * currentField() const </div><div class="ttdoc">Returns the current field that is displayed on-screen. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8h_source.html#l00046">Form.h:46</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,172 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Field.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classField.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classField.html">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">Field</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">Field</a>(<a class="code" href="classForm.html">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5">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">~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="line" href="classField.html#a27427319be1cc92db3128637d8884ee5"> 34</a></span>&#160; <a class="code" href="classForm.html">Form</a> *<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5">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">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">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">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="line" href="classField.html#aaa861ef917130c989a955bc75c683afe"> 41</a></span>&#160; <span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe">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">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">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="line" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1"> 47</a></span>&#160; LiquidCrystal *<a class="code" href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">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">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">Form</a> *_form;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classField.html">Field</a> *next;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classField.html">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">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 class="ttc" id="classField_html"><div class="ttname"><a href="classField.html">Field</a></div><div class="ttdoc">Manages a single data input/output field within a Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00028">Field.h:28</a></div></div>
<div class="ttc" id="classForm_html"><div class="ttname"><a href="classForm.html">Form</a></div><div class="ttdoc">Manager for a form containing data input/output fields. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8h_source.html#l00032">Form.h:32</a></div></div>
<div class="ttc" id="classField_html_aa032bbeacb405c56546cb56fbbee94f5"><div class="ttname"><a href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">Field::enterField</a></div><div class="ttdeci">virtual void enterField(bool reverse)</div><div class="ttdoc">Enters the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00116">Field.cpp:116</a></div></div>
<div class="ttc" id="classField_html_a27427319be1cc92db3128637d8884ee5"><div class="ttname"><a href="classField.html#a27427319be1cc92db3128637d8884ee5">Field::form</a></div><div class="ttdeci">Form * form() const </div><div class="ttdoc">Returns the Form that owns this field; null if not associated with a Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00034">Field.h:34</a></div></div>
<div class="ttc" id="classField_html_a061bd1ed4d8b079df86465df8facd3b3"><div class="ttname"><a href="classField.html#a061bd1ed4d8b079df86465df8facd3b3">Field::dispatch</a></div><div class="ttdeci">virtual int dispatch(int event)</div><div class="ttdoc">Dispatches event via this field. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00096">Field.cpp:96</a></div></div>
<div class="ttc" id="classField_html_aaa861ef917130c989a955bc75c683afe"><div class="ttname"><a href="classField.html#aaa861ef917130c989a955bc75c683afe">Field::label</a></div><div class="ttdeci">const String &amp; label() const </div><div class="ttdoc">Returns the label to display in the first line of this field. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00041">Field.h:41</a></div></div>
<div class="ttc" id="classField_html_a5cf21bf958a71e51feac9e1bf9f599d1"><div class="ttname"><a href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">Field::lcd</a></div><div class="ttdeci">LiquidCrystal * lcd() const </div><div class="ttdoc">Returns the LCD that this field is being drawn on. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00047">Field.h:47</a></div></div>
<div class="ttc" id="classField_html_ac4ea0d104376233c3f0bfc080ec8564e"><div class="ttname"><a href="classField.html#ac4ea0d104376233c3f0bfc080ec8564e">Field::Field</a></div><div class="ttdeci">Field(const String &amp;label)</div><div class="ttdoc">Constructs a new field with a specific label. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00040">Field.cpp:40</a></div></div>
<div class="ttc" id="classField_html_ad6805c75ee1e62f8cd8bd550c4530c07"><div class="ttname"><a href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">Field::exitField</a></div><div class="ttdeci">virtual void exitField()</div><div class="ttdoc">Exits the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00129">Field.cpp:129</a></div></div>
<div class="ttc" id="classField_html_afc612378167be0e7f8a6f8395b3537bd"><div class="ttname"><a href="classField.html#afc612378167be0e7f8a6f8395b3537bd">Field::updateCursor</a></div><div class="ttdeci">virtual void updateCursor()</div><div class="ttdoc">Updates the cursor position after the label has been drawn by setLabel(). </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00191">Field.cpp:191</a></div></div>
<div class="ttc" id="classField_html_ad4ea63599d780c35b296cf2840b69f7b"><div class="ttname"><a href="classField.html#ad4ea63599d780c35b296cf2840b69f7b">Field::setLabel</a></div><div class="ttdeci">void setLabel(const String &amp;label)</div><div class="ttdoc">Sets the label to display in the first line of this field. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00146">Field.cpp:146</a></div></div>
<div class="ttc" id="classField_html_a45d6e6d09b8f8e46de62b40119d62c60"><div class="ttname"><a href="classField.html#a45d6e6d09b8f8e46de62b40119d62c60">Field::~Field</a></div><div class="ttdeci">~Field()</div><div class="ttdoc">Destroys this field and removes it from its owning Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00066">Field.cpp:66</a></div></div>
<div class="ttc" id="classField_html_a25d86a67b321e8c642edf75a10a35f72"><div class="ttname"><a href="classField.html#a25d86a67b321e8c642edf75a10a35f72">Field::isCurrent</a></div><div class="ttdeci">bool isCurrent() const </div><div class="ttdoc">Returns true if this field is the currently-displayed field in its owning form; false otherwise...</div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00169">Field.cpp:169</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 502 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 400 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 475 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 485 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 453 KiB

View File

@ -1,286 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Form.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classForm.html#ad30836b22edde707a52d94090b716996"> 47</a></span>&#160;<a class="code" href="classForm.html#ad30836b22edde707a52d94090b716996">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="line" href="classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f"> 58</a></span>&#160;<a class="code" href="classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f">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">Field</a> *field = first;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="classField.html">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="line" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee"> 99</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee">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">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">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">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="line" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1"> 118</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1">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">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">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="line" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90"> 135</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90">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">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">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="line" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b"> 152</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b">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">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="line" href="classForm.html#a5cb056ace428e75e321610555bfecac7"> 165</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#a5cb056ace428e75e321610555bfecac7">Form::addField</a>(<a class="code" href="classField.html">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="line" href="classForm.html#a7abd717029f9b19ee7318470072cd697"> 187</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#a7abd717029f9b19ee7318470072cd697">Form::removeField</a>(<a class="code" href="classField.html">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">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">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">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="line" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5"> 230</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5">Form::setCurrentField</a>(<a class="code" href="classField.html">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">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">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="line" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65"> 274</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65">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">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="line" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9"> 293</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classForm.html#a88b9146a3f68e837c5e831203096f9e9">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">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 class="ttc" id="classForm_html_ad30836b22edde707a52d94090b716996"><div class="ttname"><a href="classForm.html#ad30836b22edde707a52d94090b716996">Form::Form</a></div><div class="ttdeci">Form(LiquidCrystal &amp;lcd)</div><div class="ttdoc">Constructs a new form and associates it with lcd. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00047">Form.cpp:47</a></div></div>
<div class="ttc" id="classField_html"><div class="ttname"><a href="classField.html">Field</a></div><div class="ttdoc">Manages a single data input/output field within a Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00028">Field.h:28</a></div></div>
<div class="ttc" id="classForm_html_a89bd3850e87caa2ca7b2e946f923d0ee"><div class="ttname"><a href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee">Form::dispatch</a></div><div class="ttdeci">int dispatch(int event)</div><div class="ttdoc">Dispatches event to the currently active field using Field::dispatch(). </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00099">Form.cpp:99</a></div></div>
<div class="ttc" id="classForm_html_a788a186ea4a7ebd75283a948ca45f4d1"><div class="ttname"><a href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1">Form::nextField</a></div><div class="ttdeci">void nextField()</div><div class="ttdoc">Changes to the next field in the &quot;tab order&quot;. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00118">Form.cpp:118</a></div></div>
<div class="ttc" id="classField_html_aa032bbeacb405c56546cb56fbbee94f5"><div class="ttname"><a href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">Field::enterField</a></div><div class="ttdeci">virtual void enterField(bool reverse)</div><div class="ttdoc">Enters the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00116">Field.cpp:116</a></div></div>
<div class="ttc" id="classField_html_a061bd1ed4d8b079df86465df8facd3b3"><div class="ttname"><a href="classField.html#a061bd1ed4d8b079df86465df8facd3b3">Field::dispatch</a></div><div class="ttdeci">virtual int dispatch(int event)</div><div class="ttdoc">Dispatches event via this field. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00096">Field.cpp:96</a></div></div>
<div class="ttc" id="classForm_html_a5cb056ace428e75e321610555bfecac7"><div class="ttname"><a href="classForm.html#a5cb056ace428e75e321610555bfecac7">Form::addField</a></div><div class="ttdeci">void addField(Field *field)</div><div class="ttdoc">Adds field to this form. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00165">Form.cpp:165</a></div></div>
<div class="ttc" id="classForm_html_a88b9146a3f68e837c5e831203096f9e9"><div class="ttname"><a href="classForm.html#a88b9146a3f68e837c5e831203096f9e9">Form::hide</a></div><div class="ttdeci">void hide()</div><div class="ttdoc">Hides the form, or does nothing if the form is not on-screen. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00293">Form.cpp:293</a></div></div>
<div class="ttc" id="classField_html_ad6805c75ee1e62f8cd8bd550c4530c07"><div class="ttname"><a href="classField.html#ad6805c75ee1e62f8cd8bd550c4530c07">Field::exitField</a></div><div class="ttdeci">virtual void exitField()</div><div class="ttdoc">Exits the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00129">Field.cpp:129</a></div></div>
<div class="ttc" id="classForm_html_a7abd717029f9b19ee7318470072cd697"><div class="ttname"><a href="classForm.html#a7abd717029f9b19ee7318470072cd697">Form::removeField</a></div><div class="ttdeci">void removeField(Field *field)</div><div class="ttdoc">Removes field from this form. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00187">Form.cpp:187</a></div></div>
<div class="ttc" id="classForm_html_ae6004fedfa07191ffd47d7b12370b4e5"><div class="ttname"><a href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5">Form::setCurrentField</a></div><div class="ttdeci">void setCurrentField(Field *field)</div><div class="ttdoc">Sets the current field that is displayed on-screen. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00230">Form.cpp:230</a></div></div>
<div class="ttc" id="classForm_html_a9cda7cce41e81bfaca51e922d4f9b98f"><div class="ttname"><a href="classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f">Form::~Form</a></div><div class="ttdeci">~Form()</div><div class="ttdoc">Detaches all remaining fields and destroys this form. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00058">Form.cpp:58</a></div></div>
<div class="ttc" id="classForm_html_a9e8d718ab55a8034c22c606ccfa90d65"><div class="ttname"><a href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65">Form::show</a></div><div class="ttdeci">void show()</div><div class="ttdoc">Shows the form, or does nothing if the form is already on-screen. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00274">Form.cpp:274</a></div></div>
<div class="ttc" id="classForm_html_aba75b59f68b31dd77dbbac9ab5c3124b"><div class="ttname"><a href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b">Form::defaultField</a></div><div class="ttdeci">void defaultField()</div><div class="ttdoc">Changes to default field (i.e., the first field). </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00152">Form.cpp:152</a></div></div>
<div class="ttc" id="classForm_html_acb080fe4f4631e9060e6efab8eaa0a90"><div class="ttname"><a href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90">Form::prevField</a></div><div class="ttdeci">void prevField()</div><div class="ttdoc">Changes to the previous field in the &quot;tab order&quot;. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00135">Form.cpp:135</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,180 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Form.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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">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="line" href="classForm.html"> 32</a></span>&#160;<span class="keyword">class </span><a class="code" href="classForm.html">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">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">~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">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">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">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">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">addField</a>(<a class="code" href="classField.html">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">removeField</a>(<a class="code" href="classField.html">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="line" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8"> 46</a></span>&#160; <a class="code" href="classField.html">Field</a> *<a class="code" href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8">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">setCurrentField</a>(<a class="code" href="classField.html">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="line" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789"> 49</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789">isCurrent</a>(<a class="code" href="classField.html">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">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">hide</a>();</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587"> 53</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classForm.html#a3101f288e3e5aa8307c57f35861ad587">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">Field</a> *first;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="classField.html">Field</a> *last;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classField.html">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">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 class="ttc" id="classForm_html_a3101f288e3e5aa8307c57f35861ad587"><div class="ttname"><a href="classForm.html#a3101f288e3e5aa8307c57f35861ad587">Form::isVisible</a></div><div class="ttdeci">bool isVisible() const </div><div class="ttdoc">Returns true if the form is shown; false if the form is hidden. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8h_source.html#l00053">Form.h:53</a></div></div>
<div class="ttc" id="classForm_html_ad30836b22edde707a52d94090b716996"><div class="ttname"><a href="classForm.html#ad30836b22edde707a52d94090b716996">Form::Form</a></div><div class="ttdeci">Form(LiquidCrystal &amp;lcd)</div><div class="ttdoc">Constructs a new form and associates it with lcd. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00047">Form.cpp:47</a></div></div>
<div class="ttc" id="classField_html"><div class="ttname"><a href="classField.html">Field</a></div><div class="ttdoc">Manages a single data input/output field within a Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00028">Field.h:28</a></div></div>
<div class="ttc" id="classForm_html_a89bd3850e87caa2ca7b2e946f923d0ee"><div class="ttname"><a href="classForm.html#a89bd3850e87caa2ca7b2e946f923d0ee">Form::dispatch</a></div><div class="ttdeci">int dispatch(int event)</div><div class="ttdoc">Dispatches event to the currently active field using Field::dispatch(). </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00099">Form.cpp:99</a></div></div>
<div class="ttc" id="classForm_html"><div class="ttname"><a href="classForm.html">Form</a></div><div class="ttdoc">Manager for a form containing data input/output fields. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8h_source.html#l00032">Form.h:32</a></div></div>
<div class="ttc" id="classForm_html_a788a186ea4a7ebd75283a948ca45f4d1"><div class="ttname"><a href="classForm.html#a788a186ea4a7ebd75283a948ca45f4d1">Form::nextField</a></div><div class="ttdeci">void nextField()</div><div class="ttdoc">Changes to the next field in the &quot;tab order&quot;. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00118">Form.cpp:118</a></div></div>
<div class="ttc" id="classForm_html_a5cb056ace428e75e321610555bfecac7"><div class="ttname"><a href="classForm.html#a5cb056ace428e75e321610555bfecac7">Form::addField</a></div><div class="ttdeci">void addField(Field *field)</div><div class="ttdoc">Adds field to this form. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00165">Form.cpp:165</a></div></div>
<div class="ttc" id="classForm_html_a88b9146a3f68e837c5e831203096f9e9"><div class="ttname"><a href="classForm.html#a88b9146a3f68e837c5e831203096f9e9">Form::hide</a></div><div class="ttdeci">void hide()</div><div class="ttdoc">Hides the form, or does nothing if the form is not on-screen. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00293">Form.cpp:293</a></div></div>
<div class="ttc" id="classForm_html_a7abd717029f9b19ee7318470072cd697"><div class="ttname"><a href="classForm.html#a7abd717029f9b19ee7318470072cd697">Form::removeField</a></div><div class="ttdeci">void removeField(Field *field)</div><div class="ttdoc">Removes field from this form. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00187">Form.cpp:187</a></div></div>
<div class="ttc" id="classForm_html_ae6004fedfa07191ffd47d7b12370b4e5"><div class="ttname"><a href="classForm.html#ae6004fedfa07191ffd47d7b12370b4e5">Form::setCurrentField</a></div><div class="ttdeci">void setCurrentField(Field *field)</div><div class="ttdoc">Sets the current field that is displayed on-screen. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00230">Form.cpp:230</a></div></div>
<div class="ttc" id="classForm_html_a9cda7cce41e81bfaca51e922d4f9b98f"><div class="ttname"><a href="classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f">Form::~Form</a></div><div class="ttdeci">~Form()</div><div class="ttdoc">Detaches all remaining fields and destroys this form. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00058">Form.cpp:58</a></div></div>
<div class="ttc" id="classForm_html_a9e8d718ab55a8034c22c606ccfa90d65"><div class="ttname"><a href="classForm.html#a9e8d718ab55a8034c22c606ccfa90d65">Form::show</a></div><div class="ttdeci">void show()</div><div class="ttdoc">Shows the form, or does nothing if the form is already on-screen. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00274">Form.cpp:274</a></div></div>
<div class="ttc" id="classForm_html_aba75b59f68b31dd77dbbac9ab5c3124b"><div class="ttname"><a href="classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b">Form::defaultField</a></div><div class="ttdeci">void defaultField()</div><div class="ttdoc">Changes to default field (i.e., the first field). </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00152">Form.cpp:152</a></div></div>
<div class="ttc" id="classForm_html_a48fb77f93e77b28b0397b59e1e9bf789"><div class="ttname"><a href="classForm.html#a48fb77f93e77b28b0397b59e1e9bf789">Form::isCurrent</a></div><div class="ttdeci">bool isCurrent(Field &amp;field) const </div><div class="ttdoc">Returns true if field is currently displayed on-screen, false otherwise. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8h_source.html#l00049">Form.h:49</a></div></div>
<div class="ttc" id="classForm_html_acb080fe4f4631e9060e6efab8eaa0a90"><div class="ttname"><a href="classForm.html#acb080fe4f4631e9060e6efab8eaa0a90">Form::prevField</a></div><div class="ttdeci">void prevField()</div><div class="ttdoc">Changes to the previous field in the &quot;tab order&quot;. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8cpp_source.html#l00135">Form.cpp:135</a></div></div>
<div class="ttc" id="classForm_html_a85a219a73294cef1f89a2182b5c25bf8"><div class="ttname"><a href="classForm.html#a85a219a73294cef1f89a2182b5c25bf8">Form::currentField</a></div><div class="ttdeci">Field * currentField() const </div><div class="ttdoc">Returns the current field that is displayed on-screen. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8h_source.html#l00046">Form.h:46</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: GCM.cpp Source File</title>
<title>Arduino Cryptography Library: GCM.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -353,7 +352,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: GCM.h Source File</title>
<title>Arduino Cryptography Library: GCM.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -191,7 +190,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: GF128.cpp Source File</title>
<title>Arduino Cryptography Library: GF128.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -578,7 +577,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: GF128.h Source File</title>
<title>Arduino Cryptography Library: GF128.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -139,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: GHASH.cpp Source File</title>
<title>Arduino Cryptography Library: GHASH.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -190,7 +189,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: GHASH.h Source File</title>
<title>Arduino Cryptography Library: GHASH.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -150,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Hash.cpp Source File</title>
<title>Arduino Cryptography Library: Hash.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -151,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Hash.h Source File</title>
<title>Arduino Cryptography Library: Hash.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -154,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 518 KiB

View File

@ -1,123 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: I2CMaster.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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 Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,148 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: I2CMaster.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classI2CMaster.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classI2CMaster.html">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">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">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">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">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">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">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">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 class="ttc" id="classI2CMaster_html_a0bf6b84cb1e2b3a37a4a0260d0b6f960"><div class="ttname"><a href="classI2CMaster.html#a0bf6b84cb1e2b3a37a4a0260d0b6f960">I2CMaster::write</a></div><div class="ttdeci">virtual void write(uint8_t value)=0</div><div class="ttdoc">Writes a single byte value on the I2C bus. </div></div>
<div class="ttc" id="classI2CMaster_html_a4e5f1a1a4c2242699be5a35fc4872fde"><div class="ttname"><a href="classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde">I2CMaster::startRead</a></div><div class="ttdeci">virtual bool startRead(unsigned int address, unsigned int count)=0</div><div class="ttdoc">Starts a read operation for count bytes by sending the start condition and the I2C control byte...</div></div>
<div class="ttc" id="classI2CMaster_html_a3cd0cea8169ac4e6dd6f39fd6cfb1926"><div class="ttname"><a href="classI2CMaster.html#a3cd0cea8169ac4e6dd6f39fd6cfb1926">I2CMaster::maxTransferSize</a></div><div class="ttdeci">virtual unsigned int maxTransferSize() const =0</div><div class="ttdoc">Returns the maximum number of bytes that can be read or written in a single request by this bus maste...</div></div>
<div class="ttc" id="classI2CMaster_html_a6458fa99cfd9e6270ae6dff993955833"><div class="ttname"><a href="classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833">I2CMaster::available</a></div><div class="ttdeci">virtual unsigned int available()=0</div><div class="ttdoc">Returns the number of bytes that are still available for reading. </div></div>
<div class="ttc" id="classI2CMaster_html_a01960fc821cb25e4c88c26d2c6107e35"><div class="ttname"><a href="classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35">I2CMaster::startWrite</a></div><div class="ttdeci">virtual void startWrite(unsigned int address)</div><div class="ttdoc">Starts a write operation by sending a start condition and the I2C control byte. </div></div>
<div class="ttc" id="classI2CMaster_html_ab29f63551ddeb032a91505d1c0b8ac41"><div class="ttname"><a href="classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41">I2CMaster::endWrite</a></div><div class="ttdeci">virtual bool endWrite()=0</div><div class="ttdoc">Ends the current write operation. </div></div>
<div class="ttc" id="classI2CMaster_html"><div class="ttname"><a href="classI2CMaster.html">I2CMaster</a></div><div class="ttdoc">Abstract base class for I2C master implementations. </div><div class="ttdef"><b>Definition:</b> <a href="I2CMaster_8h_source.html#l00028">I2CMaster.h:28</a></div></div>
<div class="ttc" id="classI2CMaster_html_a49eeebb57f6bc06de39973fe836369cd"><div class="ttname"><a href="classI2CMaster.html#a49eeebb57f6bc06de39973fe836369cd">I2CMaster::read</a></div><div class="ttdeci">virtual uint8_t read()=0</div><div class="ttdoc">Reads a single byte from the I2C bus. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,269 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: IRreceiver.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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">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="line" href="classIRreceiver.html#a06eccb8b8311eac395e4b20c4e0163e3"> 176</a></span>&#160;<a class="code" href="classIRreceiver.html#a06eccb8b8311eac395e4b20c4e0163e3">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="line" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda"> 220</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda">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">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 class="ttc" id="classIRreceiver_html_a06eccb8b8311eac395e4b20c4e0163e3"><div class="ttname"><a href="classIRreceiver.html#a06eccb8b8311eac395e4b20c4e0163e3">IRreceiver::IRreceiver</a></div><div class="ttdeci">IRreceiver(int interruptNumber=0)</div><div class="ttdoc">Constructs a new infrared remote control receiver that is attached to interruptNumber. </div><div class="ttdef"><b>Definition:</b> <a href="IRreceiver_8cpp_source.html#l00176">IRreceiver.cpp:176</a></div></div>
<div class="ttc" id="classIRreceiver_html"><div class="ttname"><a href="classIRreceiver.html">IRreceiver</a></div><div class="ttdoc">Manages the reception of RC-5 commands from an infrared remote control. </div><div class="ttdef"><b>Definition:</b> <a href="IRreceiver_8h_source.html#l00029">IRreceiver.h:29</a></div></div>
<div class="ttc" id="classIRreceiver_html_a4b021592a2b089dc2f1e138a38506fda"><div class="ttname"><a href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda">IRreceiver::command</a></div><div class="ttdeci">int command()</div><div class="ttdoc">Returns the next command from the remote control. </div><div class="ttdef"><b>Definition:</b> <a href="IRreceiver_8cpp_source.html#l00220">IRreceiver.cpp:220</a></div></div>
<div class="ttc" id="classIRreceiver_html_a9c37631cc1291dc47cabcfef2f631cf9"><div class="ttname"><a href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9">IRreceiver::AUTO_REPEAT</a></div><div class="ttdeci">static const int AUTO_REPEAT</div><div class="ttdoc">Flag that is added to the output of command() when the command is an auto-repeated button press rathe...</div><div class="ttdef"><b>Definition:</b> <a href="IRreceiver_8h_source.html#l00034">IRreceiver.h:34</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,165 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: IRreceiver.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classIRreceiver.html"> 29</a></span>&#160;<span class="keyword">class </span><a class="code" href="classIRreceiver.html">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">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="line" 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">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">command</a>();</div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f"> 37</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f">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="line" href="classIRreceiver.html#a2c6adc404f71f263ba535ec1ed9cff1a"> 39</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a2c6adc404f71f263ba535ec1ed9cff1a">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="line" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08"> 40</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08">setSystemFilter</a>(<span class="keywordtype">int</span> <a class="code" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f">system</a>) { _systemFilter = <a class="code" href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f">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 class="ttc" id="classIRreceiver_html_a19e9334ae97812fa85078507d105478f"><div class="ttname"><a href="classIRreceiver.html#a19e9334ae97812fa85078507d105478f">IRreceiver::system</a></div><div class="ttdeci">int system() const </div><div class="ttdoc">Returns the system number of the previous command(), indicating whether the command was for a TV...</div><div class="ttdef"><b>Definition:</b> <a href="IRreceiver_8h_source.html#l00037">IRreceiver.h:37</a></div></div>
<div class="ttc" id="classIRreceiver_html_a06eccb8b8311eac395e4b20c4e0163e3"><div class="ttname"><a href="classIRreceiver.html#a06eccb8b8311eac395e4b20c4e0163e3">IRreceiver::IRreceiver</a></div><div class="ttdeci">IRreceiver(int interruptNumber=0)</div><div class="ttdoc">Constructs a new infrared remote control receiver that is attached to interruptNumber. </div><div class="ttdef"><b>Definition:</b> <a href="IRreceiver_8cpp_source.html#l00176">IRreceiver.cpp:176</a></div></div>
<div class="ttc" id="classIRreceiver_html"><div class="ttname"><a href="classIRreceiver.html">IRreceiver</a></div><div class="ttdoc">Manages the reception of RC-5 commands from an infrared remote control. </div><div class="ttdef"><b>Definition:</b> <a href="IRreceiver_8h_source.html#l00029">IRreceiver.h:29</a></div></div>
<div class="ttc" id="classIRreceiver_html_a4b021592a2b089dc2f1e138a38506fda"><div class="ttname"><a href="classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda">IRreceiver::command</a></div><div class="ttdeci">int command()</div><div class="ttdoc">Returns the next command from the remote control. </div><div class="ttdef"><b>Definition:</b> <a href="IRreceiver_8cpp_source.html#l00220">IRreceiver.cpp:220</a></div></div>
<div class="ttc" id="classIRreceiver_html_a920828f1411fa12d1856cd933066bd08"><div class="ttname"><a href="classIRreceiver.html#a920828f1411fa12d1856cd933066bd08">IRreceiver::setSystemFilter</a></div><div class="ttdeci">void setSystemFilter(int system)</div><div class="ttdoc">Sets the system to filter commands against, or -1 to turn off the system filter. </div><div class="ttdef"><b>Definition:</b> <a href="IRreceiver_8h_source.html#l00040">IRreceiver.h:40</a></div></div>
<div class="ttc" id="classIRreceiver_html_a9c37631cc1291dc47cabcfef2f631cf9"><div class="ttname"><a href="classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9">IRreceiver::AUTO_REPEAT</a></div><div class="ttdeci">static const int AUTO_REPEAT</div><div class="ttdoc">Flag that is added to the output of command() when the command is an auto-repeated button press rathe...</div><div class="ttdef"><b>Definition:</b> <a href="IRreceiver_8h_source.html#l00034">IRreceiver.h:34</a></div></div>
<div class="ttc" id="classIRreceiver_html_a2c6adc404f71f263ba535ec1ed9cff1a"><div class="ttname"><a href="classIRreceiver.html#a2c6adc404f71f263ba535ec1ed9cff1a">IRreceiver::systemFilter</a></div><div class="ttdeci">int systemFilter() const </div><div class="ttdoc">Returns the system to filter commands against, or -1 if no filter is set. </div><div class="ttdef"><b>Definition:</b> <a href="IRreceiver_8h_source.html#l00039">IRreceiver.h:39</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,216 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: IntField.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6"> 71</a></span>&#160;<a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6">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">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="line" href="classIntField.html#a10c9c958bcde276698f1f1f9bff949dd"> 88</a></span>&#160;<a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6">IntField::IntField</a>(<a class="code" href="classForm.html">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">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="line" href="classIntField.html#a2b99fa19be6a0ed01ddc4939352b372e"> 103</a></span>&#160;<a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6">IntField::IntField</a>(<a class="code" href="classForm.html">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">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="line" href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f"> 114</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f">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">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">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="line" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a"> 126</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classIntField.html#a51d9127b660e8dd7f87718acd230202a">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="classField.html#aa032bbeacb405c56546cb56fbbee94f5">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="line" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7"> 198</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7">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">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">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="line" href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd"> 231</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd">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">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">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">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">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">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 class="ttc" id="classField_html"><div class="ttname"><a href="classField.html">Field</a></div><div class="ttdoc">Manages a single data input/output field within a Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00028">Field.h:28</a></div></div>
<div class="ttc" id="classForm_html"><div class="ttname"><a href="classForm.html">Form</a></div><div class="ttdoc">Manager for a form containing data input/output fields. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8h_source.html#l00032">Form.h:32</a></div></div>
<div class="ttc" id="classField_html_aa032bbeacb405c56546cb56fbbee94f5"><div class="ttname"><a href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">Field::enterField</a></div><div class="ttdeci">virtual void enterField(bool reverse)</div><div class="ttdoc">Enters the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00116">Field.cpp:116</a></div></div>
<div class="ttc" id="classIntField_html_aed421e2c52946f2c7643534b4f6f13f7"><div class="ttname"><a href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7">IntField::setValue</a></div><div class="ttdeci">void setValue(int value)</div><div class="ttdoc">Sets the current value of this field. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8cpp_source.html#l00198">IntField.cpp:198</a></div></div>
<div class="ttc" id="classIntField_html_a01a17d5a89c76c42c4f0516984ce653f"><div class="ttname"><a href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f">IntField::dispatch</a></div><div class="ttdeci">int dispatch(int event)</div><div class="ttdoc">Dispatches event via this field. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8cpp_source.html#l00114">IntField.cpp:114</a></div></div>
<div class="ttc" id="classField_html_a5cf21bf958a71e51feac9e1bf9f599d1"><div class="ttname"><a href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">Field::lcd</a></div><div class="ttdeci">LiquidCrystal * lcd() const </div><div class="ttdoc">Returns the LCD that this field is being drawn on. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00047">Field.h:47</a></div></div>
<div class="ttc" id="classIntField_html_a1a1de6a1836dfdb820c92b7f188a1b05"><div class="ttname"><a href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05">IntField::suffix</a></div><div class="ttdeci">const String &amp; suffix() const </div><div class="ttdoc">Returns the suffix string to be displayed after the field&#39;s value. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8h_source.html#l00050">IntField.h:50</a></div></div>
<div class="ttc" id="classIntField_html_a2fb650827ce8cb4662253bb6c32acb52"><div class="ttname"><a href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">IntField::value</a></div><div class="ttdeci">int value() const </div><div class="ttdoc">Returns the current value of this field. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8h_source.html#l00047">IntField.h:47</a></div></div>
<div class="ttc" id="classIntField_html_a9df274c4100ed37d2d78738f09fc53b6"><div class="ttname"><a href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6">IntField::IntField</a></div><div class="ttdeci">IntField(const String &amp;label)</div><div class="ttdoc">Constructs a new integer field with a specific label. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8cpp_source.html#l00071">IntField.cpp:71</a></div></div>
<div class="ttc" id="classIntField_html_a9324bba994389f3a4563d9c18bd2f1cd"><div class="ttname"><a href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd">IntField::setSuffix</a></div><div class="ttdeci">void setSuffix(const String &amp;suffix)</div><div class="ttdoc">Sets the suffix string to be displayed after the field&#39;s value. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8cpp_source.html#l00231">IntField.cpp:231</a></div></div>
<div class="ttc" id="classField_html_a25d86a67b321e8c642edf75a10a35f72"><div class="ttname"><a href="classField.html#a25d86a67b321e8c642edf75a10a35f72">Field::isCurrent</a></div><div class="ttdeci">bool isCurrent() const </div><div class="ttdoc">Returns true if this field is the currently-displayed field in its owning form; false otherwise...</div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00169">Field.cpp:169</a></div></div>
<div class="ttc" id="classIntField_html_a51d9127b660e8dd7f87718acd230202a"><div class="ttname"><a href="classIntField.html#a51d9127b660e8dd7f87718acd230202a">IntField::enterField</a></div><div class="ttdeci">void enterField(bool reverse)</div><div class="ttdoc">Enters the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8cpp_source.html#l00126">IntField.cpp:126</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,181 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: IntField.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classIntField.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classIntField.html">IntField</a> : <span class="keyword">public</span> <a class="code" href="classField.html">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">IntField</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6">IntField</a>(<a class="code" href="classForm.html">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>, <span class="keyword">const</span> String &amp;label, <span class="keywordtype">int</span> <a class="code" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb">minValue</a>, <span class="keywordtype">int</span> <a class="code" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad">maxValue</a>, <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd">stepValue</a>, <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">value</a>);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6">IntField</a>(<a class="code" href="classForm.html">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">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">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">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="line" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb"> 38</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb">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="line" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada"> 39</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada">setMinValue</a>(<span class="keywordtype">int</span> value) { _minValue = <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">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="line" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad"> 41</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad">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="line" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1"> 42</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1">setMaxValue</a>(<span class="keywordtype">int</span> value) { _maxValue = <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">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="line" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd"> 44</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd">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="line" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb"> 45</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb">setStepValue</a>(<span class="keywordtype">int</span> value) { _stepValue = <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">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="line" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52"> 47</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">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">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="line" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05"> 50</a></span>&#160; <span class="keyword">const</span> String &amp;<a class="code" href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05">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">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 class="ttc" id="classIntField_html"><div class="ttname"><a href="classIntField.html">IntField</a></div><div class="ttdoc">Field that manages the input of an integer value. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8h_source.html#l00028">IntField.h:28</a></div></div>
<div class="ttc" id="classField_html"><div class="ttname"><a href="classField.html">Field</a></div><div class="ttdoc">Manages a single data input/output field within a Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00028">Field.h:28</a></div></div>
<div class="ttc" id="classForm_html"><div class="ttname"><a href="classForm.html">Form</a></div><div class="ttdoc">Manager for a form containing data input/output fields. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8h_source.html#l00032">Form.h:32</a></div></div>
<div class="ttc" id="classField_html_a27427319be1cc92db3128637d8884ee5"><div class="ttname"><a href="classField.html#a27427319be1cc92db3128637d8884ee5">Field::form</a></div><div class="ttdeci">Form * form() const </div><div class="ttdoc">Returns the Form that owns this field; null if not associated with a Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00034">Field.h:34</a></div></div>
<div class="ttc" id="classIntField_html_aed421e2c52946f2c7643534b4f6f13f7"><div class="ttname"><a href="classIntField.html#aed421e2c52946f2c7643534b4f6f13f7">IntField::setValue</a></div><div class="ttdeci">void setValue(int value)</div><div class="ttdoc">Sets the current value of this field. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8cpp_source.html#l00198">IntField.cpp:198</a></div></div>
<div class="ttc" id="classIntField_html_af3dab3f2b46d29136d7a93ce46b0b8fb"><div class="ttname"><a href="classIntField.html#af3dab3f2b46d29136d7a93ce46b0b8fb">IntField::minValue</a></div><div class="ttdeci">int minValue() const </div><div class="ttdoc">Returns the minimum value for the input field. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8h_source.html#l00038">IntField.h:38</a></div></div>
<div class="ttc" id="classField_html_aaa861ef917130c989a955bc75c683afe"><div class="ttname"><a href="classField.html#aaa861ef917130c989a955bc75c683afe">Field::label</a></div><div class="ttdeci">const String &amp; label() const </div><div class="ttdoc">Returns the label to display in the first line of this field. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00041">Field.h:41</a></div></div>
<div class="ttc" id="classIntField_html_a01a17d5a89c76c42c4f0516984ce653f"><div class="ttname"><a href="classIntField.html#a01a17d5a89c76c42c4f0516984ce653f">IntField::dispatch</a></div><div class="ttdeci">int dispatch(int event)</div><div class="ttdoc">Dispatches event via this field. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8cpp_source.html#l00114">IntField.cpp:114</a></div></div>
<div class="ttc" id="classIntField_html_afffe7be6721a043cec7a5a85c19e0ada"><div class="ttname"><a href="classIntField.html#afffe7be6721a043cec7a5a85c19e0ada">IntField::setMinValue</a></div><div class="ttdeci">void setMinValue(int value)</div><div class="ttdoc">Sets the minimum value for the input field. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8h_source.html#l00039">IntField.h:39</a></div></div>
<div class="ttc" id="classIntField_html_a1a1de6a1836dfdb820c92b7f188a1b05"><div class="ttname"><a href="classIntField.html#a1a1de6a1836dfdb820c92b7f188a1b05">IntField::suffix</a></div><div class="ttdeci">const String &amp; suffix() const </div><div class="ttdoc">Returns the suffix string to be displayed after the field&#39;s value. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8h_source.html#l00050">IntField.h:50</a></div></div>
<div class="ttc" id="classIntField_html_a49025ee3473fe066a6a6c546af98bfbd"><div class="ttname"><a href="classIntField.html#a49025ee3473fe066a6a6c546af98bfbd">IntField::stepValue</a></div><div class="ttdeci">int stepValue() const </div><div class="ttdoc">Returns the step value to use when increasing or decreasing the value() due to Up and Down button pre...</div><div class="ttdef"><b>Definition:</b> <a href="IntField_8h_source.html#l00044">IntField.h:44</a></div></div>
<div class="ttc" id="classIntField_html_a2fb650827ce8cb4662253bb6c32acb52"><div class="ttname"><a href="classIntField.html#a2fb650827ce8cb4662253bb6c32acb52">IntField::value</a></div><div class="ttdeci">int value() const </div><div class="ttdoc">Returns the current value of this field. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8h_source.html#l00047">IntField.h:47</a></div></div>
<div class="ttc" id="classIntField_html_a36cbd7c24480cc3fcf0c7634d5e22bf1"><div class="ttname"><a href="classIntField.html#a36cbd7c24480cc3fcf0c7634d5e22bf1">IntField::setMaxValue</a></div><div class="ttdeci">void setMaxValue(int value)</div><div class="ttdoc">Sets the maximum value for the input field. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8h_source.html#l00042">IntField.h:42</a></div></div>
<div class="ttc" id="classIntField_html_a9df274c4100ed37d2d78738f09fc53b6"><div class="ttname"><a href="classIntField.html#a9df274c4100ed37d2d78738f09fc53b6">IntField::IntField</a></div><div class="ttdeci">IntField(const String &amp;label)</div><div class="ttdoc">Constructs a new integer field with a specific label. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8cpp_source.html#l00071">IntField.cpp:71</a></div></div>
<div class="ttc" id="classIntField_html_aaa0adcb0d16e822e5f176be5cb9ca8ad"><div class="ttname"><a href="classIntField.html#aaa0adcb0d16e822e5f176be5cb9ca8ad">IntField::maxValue</a></div><div class="ttdeci">int maxValue() const </div><div class="ttdoc">Returns the maximum value for the input field. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8h_source.html#l00041">IntField.h:41</a></div></div>
<div class="ttc" id="classIntField_html_a8fb6e207bd906062bb788e19dbe58bcb"><div class="ttname"><a href="classIntField.html#a8fb6e207bd906062bb788e19dbe58bcb">IntField::setStepValue</a></div><div class="ttdeci">void setStepValue(int value)</div><div class="ttdoc">Sets the step value value to use when increasing or decreasing the value() due to Up and Down button ...</div><div class="ttdef"><b>Definition:</b> <a href="IntField_8h_source.html#l00045">IntField.h:45</a></div></div>
<div class="ttc" id="classIntField_html_a9324bba994389f3a4563d9c18bd2f1cd"><div class="ttname"><a href="classIntField.html#a9324bba994389f3a4563d9c18bd2f1cd">IntField::setSuffix</a></div><div class="ttdeci">void setSuffix(const String &amp;suffix)</div><div class="ttdoc">Sets the suffix string to be displayed after the field&#39;s value. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8cpp_source.html#l00231">IntField.cpp:231</a></div></div>
<div class="ttc" id="classIntField_html_a51d9127b660e8dd7f87718acd230202a"><div class="ttname"><a href="classIntField.html#a51d9127b660e8dd7f87718acd230202a">IntField::enterField</a></div><div class="ttdeci">void enterField(bool reverse)</div><div class="ttdoc">Enters the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="IntField_8cpp_source.html#l00126">IntField.cpp:126</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: KeccakCore.cpp Source File</title>
<title>Arduino Cryptography Library: KeccakCore.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -1991,7 +1990,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: KeccakCore.h Source File</title>
<title>Arduino Cryptography Library: KeccakCore.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -167,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -1,298 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: LCD.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="l00145"></a><span class="lineno"> 145</span>&#160;<span class="keywordtype">void</span> LCD::init()</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="comment">// The Freetronics display is 16x2.</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; begin(16, 2);</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 backlight pin, but don&#39;t activate it yet in</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// case the application sets it to something else during setup().</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="comment">// Initialization will be forced in the first call to getButton().</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; _backlightPin = LCD_BACK_LIGHT;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; backlightInit = <span class="keyword">false</span>;</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">// Initialise button input.</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; pinMode(LCD_BUTTON_PIN, INPUT);</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; digitalWrite(LCD_BUTTON_PIN, LOW);</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; prevButton = LCD_BUTTON_NONE;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; debounceButton = LCD_BUTTON_NONE;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; lastDebounce = 0;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; eatRelease = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="comment">// Initialize screen saver.</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; timeout = 0;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; lastRestore = millis();</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; screenSaved = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; mode = <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f">DisplayOff</a>;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div>
<div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8"> 197</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8">LCD::setBacklightPin</a>(uint8_t pin)</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> (_backlightPin != pin) {</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">if</span> (backlightInit) {</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="comment">// Restore the previous backlight pin to input, floating.</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; pinMode(_backlightPin, INPUT);</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; digitalWrite(_backlightPin, LOW);</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="comment">// Need to re-initialize the backlight at the earliest opportunity.</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; backlightInit = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; _backlightPin = pin;</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="l00211"></a><span class="lineno"> 211</span>&#160;</div>
<div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89"> 221</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">LCD::display</a>()</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;{</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; LiquidCrystal::display();</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; pinMode(_backlightPin, OUTPUT);</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; digitalWrite(_backlightPin, HIGH);</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; screenSaved = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; backlightInit = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; lastRestore = millis();</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;</div>
<div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="classLCD.html#af3974da6d988ba2d21c25135ada12108"> 238</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108">LCD::noDisplay</a>()</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; <span class="keywordflow">if</span> (mode == <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f">DisplayOff</a>)</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; LiquidCrystal::noDisplay();</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; pinMode(_backlightPin, OUTPUT);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; digitalWrite(_backlightPin, LOW);</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; screenSaved = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; backlightInit = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;}</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div>
<div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801"> 283</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classLCD.html#a56d1f68532c779c65fbbd071fb444801">LCD::setScreenSaverMode</a>(<a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</a> mode)</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;{</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span> (this-&gt;mode != mode) {</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; this-&gt;mode = mode;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">if</span> (screenSaved)</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>();</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</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="l00293"></a><span class="lineno"> 293</span>&#160;</div>
<div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="classLCD.html#af9a2326d034fa159d384ec16223c924f"> 309</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classLCD.html#af9a2326d034fa159d384ec16223c924f">LCD::enableScreenSaver</a>(<span class="keywordtype">int</span> timeoutSecs)</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;{</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span> (timeoutSecs &lt; 0)</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; timeout = 0;</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; timeout = ((<span class="keywordtype">unsigned</span> long)timeoutSecs) * 1000;</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</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="l00323"></a><span class="lineno"><a class="line" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e"> 323</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e">LCD::disableScreenSaver</a>()</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; timeout = 0;</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>();</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;}</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment">// Button mapping table generated by genlookup.c</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</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="l00338"></a><span class="lineno"> 338</span>&#160; 2, 0, 0, 0, 3, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 1,</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; 1, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;};</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="preprocessor">#define mapButton(value) (pgm_read_byte(&amp;(buttonMappings[(value) &gt;&gt; 5])))</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292"> 368</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292">LCD::getButton</a>()</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">// Initialize the backlight for the first time if necessary.</span></div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">if</span> (!backlightInit)</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>();</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="comment">// Read the currently pressed button.</span></div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordtype">int</span> button = mapButton(analogRead(LCD_BUTTON_PIN));</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="comment">// Debounce the button state.</span></div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> currentTime = millis();</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span> (button != debounceButton)</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; lastDebounce = currentTime;</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; debounceButton = button;</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">if</span> ((currentTime - lastDebounce) &lt; DEBOUNCE_DELAY)</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; button = prevButton;</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; <span class="comment">// Process the button event if the state has changed.</span></div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (prevButton == LCD_BUTTON_NONE &amp;&amp; button != LCD_BUTTON_NONE) {</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; prevButton = button;</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (screenSaved) {</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="comment">// Button pressed when screen saver active.</span></div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">if</span> (mode == <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35">BacklightOnSelect</a>) {</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="comment">// Turn on the back light only if Select was pressed.</span></div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> (button == LCD_BUTTON_SELECT) {</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; pinMode(_backlightPin, OUTPUT);</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; digitalWrite(_backlightPin, HIGH);</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; screenSaved = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; backlightInit = <span class="keyword">true</span>;</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; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (mode == <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f">DisplayOff</a>) {</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>();</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; eatRelease = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">return</span> LCD_BUTTON_NONE;</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>();</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">else</span> <span class="keywordflow">if</span> (mode == <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35">BacklightOnSelect</a> &amp;&amp; button != LCD_BUTTON_SELECT) {</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; eatRelease = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">return</span> button;</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; eatRelease = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; lastRestore = currentTime;</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">return</span> button;</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</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="l00413"></a><span class="lineno"> 413</span>&#160; button = -prevButton;</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; prevButton = LCD_BUTTON_NONE;</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; lastRestore = currentTime;</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">if</span> (eatRelease) {</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; eatRelease = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> LCD_BUTTON_NONE;</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">return</span> button;</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (!screenSaved &amp;&amp; prevButton == LCD_BUTTON_NONE &amp;&amp;</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; timeout != 0 &amp;&amp; (currentTime - lastRestore) &gt;= timeout)</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>(); <span class="comment">// Activate screen saver.</span></div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">return</span> LCD_BUTTON_NONE;</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="ttc" id="classLCD_html_a56d1f68532c779c65fbbd071fb444801"><div class="ttname"><a href="classLCD.html#a56d1f68532c779c65fbbd071fb444801">LCD::setScreenSaverMode</a></div><div class="ttdeci">void setScreenSaverMode(ScreenSaverMode mode)</div><div class="ttdoc">Sets the current screen saver mode. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8cpp_source.html#l00283">LCD.cpp:283</a></div></div>
<div class="ttc" id="classLCD_html_ac1e80e2603bd1cf0276c36092c416292"><div class="ttname"><a href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292">LCD::getButton</a></div><div class="ttdeci">int getButton()</div><div class="ttdoc">Gets the next button press, release, or idle event. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8cpp_source.html#l00368">LCD.cpp:368</a></div></div>
<div class="ttc" id="classLCD_html_a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35"><div class="ttname"><a href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35">LCD::BacklightOnSelect</a></div><div class="ttdoc">Same as BacklightOff but the screen saver is only deactivated when Select is pressed; other buttons h...</div><div class="ttdef"><b>Definition:</b> <a href="LCD_8h_source.html#l00066">LCD.h:66</a></div></div>
<div class="ttc" id="classLCD_html_a264bf94308c95d8598426e13dc8cdb28"><div class="ttname"><a href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">LCD::ScreenSaverMode</a></div><div class="ttdeci">ScreenSaverMode</div><div class="ttdoc">Screen saver mode that controls the display and back light. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8h_source.html#l00062">LCD.h:62</a></div></div>
<div class="ttc" id="classLCD_html_a0b9b3b954290e7a3d94cdc829582b0a8"><div class="ttname"><a href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8">LCD::setBacklightPin</a></div><div class="ttdeci">void setBacklightPin(uint8_t pin)</div><div class="ttdoc">Sets the back light pin for the LCD shield. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8cpp_source.html#l00197">LCD.cpp:197</a></div></div>
<div class="ttc" id="classLCD_html_af9a2326d034fa159d384ec16223c924f"><div class="ttname"><a href="classLCD.html#af9a2326d034fa159d384ec16223c924f">LCD::enableScreenSaver</a></div><div class="ttdeci">void enableScreenSaver(int timeoutSecs=10)</div><div class="ttdoc">Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...</div><div class="ttdef"><b>Definition:</b> <a href="LCD_8cpp_source.html#l00309">LCD.cpp:309</a></div></div>
<div class="ttc" id="classLCD_html_af3974da6d988ba2d21c25135ada12108"><div class="ttname"><a href="classLCD.html#af3974da6d988ba2d21c25135ada12108">LCD::noDisplay</a></div><div class="ttdeci">void noDisplay()</div><div class="ttdoc">Turns off the display of text on the LCD and the back light. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8cpp_source.html#l00238">LCD.cpp:238</a></div></div>
<div class="ttc" id="classLCD_html_a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f"><div class="ttname"><a href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f">LCD::DisplayOff</a></div><div class="ttdoc">Turn off both the display and the backlight when the screen saver is activated. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8h_source.html#l00064">LCD.h:64</a></div></div>
<div class="ttc" id="classLCD_html_a85c3a4694b105731404df36e35e5b26e"><div class="ttname"><a href="classLCD.html#a85c3a4694b105731404df36e35e5b26e">LCD::disableScreenSaver</a></div><div class="ttdeci">void disableScreenSaver()</div><div class="ttdoc">Disables the screen saver. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8cpp_source.html#l00323">LCD.cpp:323</a></div></div>
<div class="ttc" id="classLCD_html_a5b07cf05e8e5e7c53654f5ca0cf58b89"><div class="ttname"><a href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">LCD::display</a></div><div class="ttdeci">void display()</div><div class="ttdoc">Turns on the display of text on the LCD and the back light. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8cpp_source.html#l00221">LCD.cpp:221</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,210 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: LCD.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classLCD.html"> 48</a></span>&#160;<span class="keyword">class </span><a class="code" href="classLCD.html">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="line" href="classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8"> 50</a></span>&#160; <a class="code" href="classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a>() : LiquidCrystal(8, 9, 4, 5, 6, 7) { init(); }</div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classLCD.html#a067bc741cf27f143aba5d9f147908401"> 51</a></span>&#160; <a class="code" href="classLCD.html#a067bc741cf27f143aba5d9f147908401">LCD</a>(uint8_t pin9) : LiquidCrystal(8, pin9, 4, 5, 6, 7) { init(); }</div>
<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classLCD.html#a203d268bef6c61fa293562dbb0e9f51e"> 52</a></span>&#160; <a class="code" href="classLCD.html#a203d268bef6c61fa293562dbb0e9f51e">LCD</a>(uint8_t rs, uint8_t enable,</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; : LiquidCrystal(rs, enable, d0, d1, d2, d3) { init(); }</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"><a class="line" href="classLCD.html#a171f59ba80e7775ebd3a399f56482a9c"> 56</a></span>&#160; uint8_t <a class="code" href="classLCD.html#a171f59ba80e7775ebd3a399f56482a9c">backlightPin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _backlightPin; }</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#a0b9b3b954290e7a3d94cdc829582b0a8">setBacklightPin</a>(uint8_t pin);</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="keywordtype">void</span> <a class="code" href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>();</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classLCD.html#af3974da6d988ba2d21c25135ada12108">noDisplay</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"><a class="line" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28"> 62</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</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"><a class="line" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f"> 64</a></span>&#160; <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f">DisplayOff</a>,</div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c"> 65</a></span>&#160; <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c">BacklightOff</a>,</div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35"> 66</a></span>&#160; <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35">BacklightOnSelect</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;</div>
<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8"> 69</a></span>&#160; <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</a> <a class="code" href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8">screenSaverMode</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mode; }</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#a56d1f68532c779c65fbbd071fb444801">setScreenSaverMode</a>(<a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</a> mode);</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> <a class="code" href="classLCD.html#af9a2326d034fa159d384ec16223c924f">enableScreenSaver</a>(<span class="keywordtype">int</span> timeoutSecs = 10);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classLCD.html#a85c3a4694b105731404df36e35e5b26e">disableScreenSaver</a>();</div>
<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e"> 74</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e">isScreenSaved</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> screenSaved; }</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="keywordtype">int</span> <a class="code" href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292">getButton</a>();</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="keyword">private</span>:</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; uint8_t _backlightPin;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">bool</span> backlightInit;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">int</span> prevButton;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">int</span> debounceButton;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> timeout;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> lastRestore;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> lastDebounce;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordtype">bool</span> screenSaved;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordtype">bool</span> eatRelease;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">ScreenSaverMode</a> mode;</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="keywordtype">void</span> init();</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;};</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classLCD_html_a56d1f68532c779c65fbbd071fb444801"><div class="ttname"><a href="classLCD.html#a56d1f68532c779c65fbbd071fb444801">LCD::setScreenSaverMode</a></div><div class="ttdeci">void setScreenSaverMode(ScreenSaverMode mode)</div><div class="ttdoc">Sets the current screen saver mode. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8cpp_source.html#l00283">LCD.cpp:283</a></div></div>
<div class="ttc" id="classLCD_html_ac1e80e2603bd1cf0276c36092c416292"><div class="ttname"><a href="classLCD.html#ac1e80e2603bd1cf0276c36092c416292">LCD::getButton</a></div><div class="ttdeci">int getButton()</div><div class="ttdoc">Gets the next button press, release, or idle event. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8cpp_source.html#l00368">LCD.cpp:368</a></div></div>
<div class="ttc" id="classLCD_html_a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35"><div class="ttname"><a href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a781f3c5e42506bf4f86ba06d69b23d35">LCD::BacklightOnSelect</a></div><div class="ttdoc">Same as BacklightOff but the screen saver is only deactivated when Select is pressed; other buttons h...</div><div class="ttdef"><b>Definition:</b> <a href="LCD_8h_source.html#l00066">LCD.h:66</a></div></div>
<div class="ttc" id="classLCD_html_a264bf94308c95d8598426e13dc8cdb28"><div class="ttname"><a href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28">LCD::ScreenSaverMode</a></div><div class="ttdeci">ScreenSaverMode</div><div class="ttdoc">Screen saver mode that controls the display and back light. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8h_source.html#l00062">LCD.h:62</a></div></div>
<div class="ttc" id="classLCD_html_a203d268bef6c61fa293562dbb0e9f51e"><div class="ttname"><a href="classLCD.html#a203d268bef6c61fa293562dbb0e9f51e">LCD::LCD</a></div><div class="ttdeci">LCD(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)</div><div class="ttdoc">Initialize the Freetronics LCD display with custom pins. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8h_source.html#l00052">LCD.h:52</a></div></div>
<div class="ttc" id="classLCD_html_a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c"><div class="ttname"><a href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a9931c078cfd1023c69f1da431f9a656c">LCD::BacklightOff</a></div><div class="ttdoc">Turn off the back light but leave the display on when the screen saver is activated. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8h_source.html#l00065">LCD.h:65</a></div></div>
<div class="ttc" id="classLCD_html_a0b9b3b954290e7a3d94cdc829582b0a8"><div class="ttname"><a href="classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8">LCD::setBacklightPin</a></div><div class="ttdeci">void setBacklightPin(uint8_t pin)</div><div class="ttdoc">Sets the back light pin for the LCD shield. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8cpp_source.html#l00197">LCD.cpp:197</a></div></div>
<div class="ttc" id="classLCD_html_a00bb2db1390721abc7b24ac4b8c276c8"><div class="ttname"><a href="classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD::LCD</a></div><div class="ttdeci">LCD()</div><div class="ttdoc">Initialize the Freetronics LCD display with the default pin assignment. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8h_source.html#l00050">LCD.h:50</a></div></div>
<div class="ttc" id="classLCD_html_af9a2326d034fa159d384ec16223c924f"><div class="ttname"><a href="classLCD.html#af9a2326d034fa159d384ec16223c924f">LCD::enableScreenSaver</a></div><div class="ttdeci">void enableScreenSaver(int timeoutSecs=10)</div><div class="ttdoc">Enables the screen saver and causes it to activate after timeoutSecs of inactivity on the buttons...</div><div class="ttdef"><b>Definition:</b> <a href="LCD_8cpp_source.html#l00309">LCD.cpp:309</a></div></div>
<div class="ttc" id="classLCD_html_a067bc741cf27f143aba5d9f147908401"><div class="ttname"><a href="classLCD.html#a067bc741cf27f143aba5d9f147908401">LCD::LCD</a></div><div class="ttdeci">LCD(uint8_t pin9)</div><div class="ttdoc">Initialize the Freetronics LCD display for USBDroid. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8h_source.html#l00051">LCD.h:51</a></div></div>
<div class="ttc" id="classLCD_html_af3974da6d988ba2d21c25135ada12108"><div class="ttname"><a href="classLCD.html#af3974da6d988ba2d21c25135ada12108">LCD::noDisplay</a></div><div class="ttdeci">void noDisplay()</div><div class="ttdoc">Turns off the display of text on the LCD and the back light. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8cpp_source.html#l00238">LCD.cpp:238</a></div></div>
<div class="ttc" id="classLCD_html_a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f"><div class="ttname"><a href="classLCD.html#a264bf94308c95d8598426e13dc8cdb28a3f1e62d5fcd314d6ff067d3e74c4bf5f">LCD::DisplayOff</a></div><div class="ttdoc">Turn off both the display and the backlight when the screen saver is activated. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8h_source.html#l00064">LCD.h:64</a></div></div>
<div class="ttc" id="classLCD_html_a85c3a4694b105731404df36e35e5b26e"><div class="ttname"><a href="classLCD.html#a85c3a4694b105731404df36e35e5b26e">LCD::disableScreenSaver</a></div><div class="ttdeci">void disableScreenSaver()</div><div class="ttdoc">Disables the screen saver. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8cpp_source.html#l00323">LCD.cpp:323</a></div></div>
<div class="ttc" id="classLCD_html_a5b07cf05e8e5e7c53654f5ca0cf58b89"><div class="ttname"><a href="classLCD.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">LCD::display</a></div><div class="ttdeci">void display()</div><div class="ttdoc">Turns on the display of text on the LCD and the back light. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8cpp_source.html#l00221">LCD.cpp:221</a></div></div>
<div class="ttc" id="classLCD_html_a171f59ba80e7775ebd3a399f56482a9c"><div class="ttname"><a href="classLCD.html#a171f59ba80e7775ebd3a399f56482a9c">LCD::backlightPin</a></div><div class="ttdeci">uint8_t backlightPin() const </div><div class="ttdoc">Returns the pin that is being used to control the back light. The default is 3. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8h_source.html#l00056">LCD.h:56</a></div></div>
<div class="ttc" id="classLCD_html"><div class="ttname"><a href="classLCD.html">LCD</a></div><div class="ttdoc">Enhanced library for Freetronics 16x2 LCD shields. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8h_source.html#l00048">LCD.h:48</a></div></div>
<div class="ttc" id="classLCD_html_af5d5ca618a3161aa352027b58fe09d0e"><div class="ttname"><a href="classLCD.html#af5d5ca618a3161aa352027b58fe09d0e">LCD::isScreenSaved</a></div><div class="ttdeci">bool isScreenSaved() const </div><div class="ttdoc">Returns true if the screen has been saved; false otherwise. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8h_source.html#l00074">LCD.h:74</a></div></div>
<div class="ttc" id="classLCD_html_a1917fa285f81f476b4c7cc20d15456b8"><div class="ttname"><a href="classLCD.html#a1917fa285f81f476b4c7cc20d15456b8">LCD::screenSaverMode</a></div><div class="ttdeci">ScreenSaverMode screenSaverMode() const </div><div class="ttdoc">Returns the current screen saver mode; default is DisplayOff. </div><div class="ttdef"><b>Definition:</b> <a href="LCD_8h_source.html#l00069">LCD.h:69</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,229 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: ListField.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classListField.html#a118501da7edb0b0bc6b493734975b4e9"> 64</a></span>&#160;<a class="code" href="classListField.html#a118501da7edb0b0bc6b493734975b4e9">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">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="line" href="classListField.html#aa303898a1f74b52c1c4982653de488b7"> 77</a></span>&#160;<a class="code" href="classListField.html#a118501da7edb0b0bc6b493734975b4e9">ListField::ListField</a>(<a class="code" href="classForm.html">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">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">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="line" href="classListField.html#a5d752bd561cde735b175bcdfda55832a"> 87</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classListField.html#a5d752bd561cde735b175bcdfda55832a">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">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">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">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">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="line" href="classListField.html#a191b79b460e45cf48e04b04eface2888"> 105</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classListField.html#a191b79b460e45cf48e04b04eface2888">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="classField.html#aa032bbeacb405c56546cb56fbbee94f5">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="line" href="classListField.html#ae6709bce9355451b651893691456704e"> 141</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classListField.html#ae6709bce9355451b651893691456704e">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">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">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">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="line" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24"> 178</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classListField.html#a266193631e897fb0b46e1270b1d0eb24">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">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">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">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">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">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 class="ttc" id="classListField_html_a118501da7edb0b0bc6b493734975b4e9"><div class="ttname"><a href="classListField.html#a118501da7edb0b0bc6b493734975b4e9">ListField::ListField</a></div><div class="ttdeci">ListField(const String &amp;label)</div><div class="ttdoc">Constructs a new list field with a specific label. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8cpp_source.html#l00064">ListField.cpp:64</a></div></div>
<div class="ttc" id="classField_html"><div class="ttname"><a href="classField.html">Field</a></div><div class="ttdoc">Manages a single data input/output field within a Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00028">Field.h:28</a></div></div>
<div class="ttc" id="classListField_html_aab8477757cd89bacd242c85bac2dccb1"><div class="ttname"><a href="classListField.html#aab8477757cd89bacd242c85bac2dccb1">ListField::value</a></div><div class="ttdeci">int value() const </div><div class="ttdoc">Returns the value of this list; i.e. the index within items() of the selected item. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8h_source.html#l00044">ListField.h:44</a></div></div>
<div class="ttc" id="classForm_html"><div class="ttname"><a href="classForm.html">Form</a></div><div class="ttdoc">Manager for a form containing data input/output fields. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8h_source.html#l00032">Form.h:32</a></div></div>
<div class="ttc" id="classField_html_aa032bbeacb405c56546cb56fbbee94f5"><div class="ttname"><a href="classField.html#aa032bbeacb405c56546cb56fbbee94f5">Field::enterField</a></div><div class="ttdeci">virtual void enterField(bool reverse)</div><div class="ttdoc">Enters the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00116">Field.cpp:116</a></div></div>
<div class="ttc" id="classListField_html_ae6709bce9355451b651893691456704e"><div class="ttname"><a href="classListField.html#ae6709bce9355451b651893691456704e">ListField::setItems</a></div><div class="ttdeci">void setItems(ListItems items)</div><div class="ttdoc">Sets the array of items for this list. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8cpp_source.html#l00141">ListField.cpp:141</a></div></div>
<div class="ttc" id="classField_html_a5cf21bf958a71e51feac9e1bf9f599d1"><div class="ttname"><a href="classField.html#a5cf21bf958a71e51feac9e1bf9f599d1">Field::lcd</a></div><div class="ttdeci">LiquidCrystal * lcd() const </div><div class="ttdoc">Returns the LCD that this field is being drawn on. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00047">Field.h:47</a></div></div>
<div class="ttc" id="classListField_html_a4dbbdeebd386551eb8f245b42b45ccf0"><div class="ttname"><a href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0">ListField::items</a></div><div class="ttdeci">ListItems items() const </div><div class="ttdoc">Returns the array of items in this list. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8h_source.html#l00041">ListField.h:41</a></div></div>
<div class="ttc" id="classListField_html_a191b79b460e45cf48e04b04eface2888"><div class="ttname"><a href="classListField.html#a191b79b460e45cf48e04b04eface2888">ListField::enterField</a></div><div class="ttdeci">void enterField(bool reverse)</div><div class="ttdoc">Enters the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8cpp_source.html#l00105">ListField.cpp:105</a></div></div>
<div class="ttc" id="classListField_html_a266193631e897fb0b46e1270b1d0eb24"><div class="ttname"><a href="classListField.html#a266193631e897fb0b46e1270b1d0eb24">ListField::setValue</a></div><div class="ttdeci">void setValue(int value)</div><div class="ttdoc">Sets the value of this list; i.e. the index within items() of the selected item. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8cpp_source.html#l00178">ListField.cpp:178</a></div></div>
<div class="ttc" id="classListField_html_a5d752bd561cde735b175bcdfda55832a"><div class="ttname"><a href="classListField.html#a5d752bd561cde735b175bcdfda55832a">ListField::dispatch</a></div><div class="ttdeci">int dispatch(int event)</div><div class="ttdoc">Dispatches event via this field. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8cpp_source.html#l00087">ListField.cpp:87</a></div></div>
<div class="ttc" id="classField_html_a25d86a67b321e8c642edf75a10a35f72"><div class="ttname"><a href="classField.html#a25d86a67b321e8c642edf75a10a35f72">Field::isCurrent</a></div><div class="ttdeci">bool isCurrent() const </div><div class="ttdoc">Returns true if this field is the currently-displayed field in its owning form; false otherwise...</div><div class="ttdef"><b>Definition:</b> <a href="Field_8cpp_source.html#l00169">Field.cpp:169</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,167 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: ListField.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classListField.html"> 32</a></span>&#160;<span class="keyword">class </span><a class="code" href="classListField.html">ListField</a> : <span class="keyword">public</span> <a class="code" href="classField.html">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">ListField</a>(<span class="keyword">const</span> String &amp;<a class="code" href="classField.html#aaa861ef917130c989a955bc75c683afe">label</a>);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="classListField.html#a118501da7edb0b0bc6b493734975b4e9">ListField</a>(<a class="code" href="classForm.html">Form</a> &amp;<a class="code" href="classField.html#a27427319be1cc92db3128637d8884ee5">form</a>, <span class="keyword">const</span> String &amp;label, ListItems <a class="code" href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0">items</a>, <span class="keywordtype">int</span> <a class="code" href="classListField.html#aab8477757cd89bacd242c85bac2dccb1">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">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">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="line" href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0"> 41</a></span>&#160; ListItems <a class="code" href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0">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">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="line" href="classListField.html#aab8477757cd89bacd242c85bac2dccb1"> 44</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classListField.html#aab8477757cd89bacd242c85bac2dccb1">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">setValue</a>(<span class="keywordtype">int</span> <a class="code" href="classListField.html#aab8477757cd89bacd242c85bac2dccb1">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 class="ttc" id="classListField_html_a118501da7edb0b0bc6b493734975b4e9"><div class="ttname"><a href="classListField.html#a118501da7edb0b0bc6b493734975b4e9">ListField::ListField</a></div><div class="ttdeci">ListField(const String &amp;label)</div><div class="ttdoc">Constructs a new list field with a specific label. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8cpp_source.html#l00064">ListField.cpp:64</a></div></div>
<div class="ttc" id="classField_html"><div class="ttname"><a href="classField.html">Field</a></div><div class="ttdoc">Manages a single data input/output field within a Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00028">Field.h:28</a></div></div>
<div class="ttc" id="classListField_html_aab8477757cd89bacd242c85bac2dccb1"><div class="ttname"><a href="classListField.html#aab8477757cd89bacd242c85bac2dccb1">ListField::value</a></div><div class="ttdeci">int value() const </div><div class="ttdoc">Returns the value of this list; i.e. the index within items() of the selected item. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8h_source.html#l00044">ListField.h:44</a></div></div>
<div class="ttc" id="classForm_html"><div class="ttname"><a href="classForm.html">Form</a></div><div class="ttdoc">Manager for a form containing data input/output fields. </div><div class="ttdef"><b>Definition:</b> <a href="Form_8h_source.html#l00032">Form.h:32</a></div></div>
<div class="ttc" id="classField_html_a27427319be1cc92db3128637d8884ee5"><div class="ttname"><a href="classField.html#a27427319be1cc92db3128637d8884ee5">Field::form</a></div><div class="ttdeci">Form * form() const </div><div class="ttdoc">Returns the Form that owns this field; null if not associated with a Form. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00034">Field.h:34</a></div></div>
<div class="ttc" id="classListField_html_ae6709bce9355451b651893691456704e"><div class="ttname"><a href="classListField.html#ae6709bce9355451b651893691456704e">ListField::setItems</a></div><div class="ttdeci">void setItems(ListItems items)</div><div class="ttdoc">Sets the array of items for this list. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8cpp_source.html#l00141">ListField.cpp:141</a></div></div>
<div class="ttc" id="classField_html_aaa861ef917130c989a955bc75c683afe"><div class="ttname"><a href="classField.html#aaa861ef917130c989a955bc75c683afe">Field::label</a></div><div class="ttdeci">const String &amp; label() const </div><div class="ttdoc">Returns the label to display in the first line of this field. </div><div class="ttdef"><b>Definition:</b> <a href="Field_8h_source.html#l00041">Field.h:41</a></div></div>
<div class="ttc" id="classListField_html_a4dbbdeebd386551eb8f245b42b45ccf0"><div class="ttname"><a href="classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0">ListField::items</a></div><div class="ttdeci">ListItems items() const </div><div class="ttdoc">Returns the array of items in this list. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8h_source.html#l00041">ListField.h:41</a></div></div>
<div class="ttc" id="classListField_html_a191b79b460e45cf48e04b04eface2888"><div class="ttname"><a href="classListField.html#a191b79b460e45cf48e04b04eface2888">ListField::enterField</a></div><div class="ttdeci">void enterField(bool reverse)</div><div class="ttdoc">Enters the field due to form navigation. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8cpp_source.html#l00105">ListField.cpp:105</a></div></div>
<div class="ttc" id="classListField_html_a266193631e897fb0b46e1270b1d0eb24"><div class="ttname"><a href="classListField.html#a266193631e897fb0b46e1270b1d0eb24">ListField::setValue</a></div><div class="ttdeci">void setValue(int value)</div><div class="ttdoc">Sets the value of this list; i.e. the index within items() of the selected item. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8cpp_source.html#l00178">ListField.cpp:178</a></div></div>
<div class="ttc" id="classListField_html"><div class="ttname"><a href="classListField.html">ListField</a></div><div class="ttdoc">Field that manages selection from a static list of items. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8h_source.html#l00032">ListField.h:32</a></div></div>
<div class="ttc" id="classListField_html_a5d752bd561cde735b175bcdfda55832a"><div class="ttname"><a href="classListField.html#a5d752bd561cde735b175bcdfda55832a">ListField::dispatch</a></div><div class="ttdeci">int dispatch(int event)</div><div class="ttdoc">Dispatches event via this field. </div><div class="ttdef"><b>Definition:</b> <a href="ListField_8cpp_source.html#l00087">ListField.cpp:87</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,134 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: LoginShell.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_1de32c476debcefedf4aa8bb43bea551.html">Shell</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">LoginShell.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) 2016 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;LoginShell.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classLoginShell.html#a8a6e6c259bc6415eb9cfbb13980e31d4"> 67</a></span>&#160;<a class="code" href="classLoginShell.html#a8a6e6c259bc6415eb9cfbb13980e31d4">LoginShell::LoginShell</a>()</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; : machName(0)</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; , checkFunc(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="l00076"></a><span class="lineno"><a class="line" href="classLoginShell.html#aaae466b141c9ea50870b66509402a2f9"> 76</a></span>&#160;<a class="code" href="classLoginShell.html#aaae466b141c9ea50870b66509402a2f9">LoginShell::~LoginShell</a>()</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;}</div>
<div class="ttc" id="classLoginShell_html_a8a6e6c259bc6415eb9cfbb13980e31d4"><div class="ttname"><a href="classLoginShell.html#a8a6e6c259bc6415eb9cfbb13980e31d4">LoginShell::LoginShell</a></div><div class="ttdeci">LoginShell()</div><div class="ttdoc">Constructs a new login shell. </div><div class="ttdef"><b>Definition:</b> <a href="LoginShell_8cpp_source.html#l00067">LoginShell.cpp:67</a></div></div>
<div class="ttc" id="classLoginShell_html_aaae466b141c9ea50870b66509402a2f9"><div class="ttname"><a href="classLoginShell.html#aaae466b141c9ea50870b66509402a2f9">LoginShell::~LoginShell</a></div><div class="ttdeci">virtual ~LoginShell()</div><div class="ttdoc">Destroys this login shell. </div><div class="ttdef"><b>Definition:</b> <a href="LoginShell_8cpp_source.html#l00076">LoginShell.cpp:76</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,163 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: LoginShell.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_1de32c476debcefedf4aa8bb43bea551.html">Shell</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">LoginShell.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) 2016 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 LOGIN_SHELL_h</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define LOGIN_SHELL_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;Shell.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">typedef</span> int (*<a class="code" href="classLoginShell.html#adad54b04ec54d3577df4cd11944fff1d">ShellPasswordCheckFunc</a>)(<span class="keyword">const</span> <span class="keywordtype">char</span> *username, <span class="keyword">const</span> <span class="keywordtype">char</span> *password);</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="line" href="classLoginShell.html"> 30</a></span>&#160;<span class="keyword">class </span><a class="code" href="classLoginShell.html">LoginShell</a> : <span class="keyword">public</span> <a class="code" href="classShell.html">Shell</a></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">public</span>:</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="classLoginShell.html#a8a6e6c259bc6415eb9cfbb13980e31d4">LoginShell</a>();</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classLoginShell.html#aaae466b141c9ea50870b66509402a2f9">~LoginShell</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"><a class="line" href="classLoginShell.html#a540bd00b4af88a896068d72a58cbf23a"> 36</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classLoginShell.html#a540bd00b4af88a896068d72a58cbf23a">machineName</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> machName; }</div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classLoginShell.html#a951838252942c56537dc877c48d3d63e"> 37</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classLoginShell.html#a951838252942c56537dc877c48d3d63e">setMachineName</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classLoginShell.html#a540bd00b4af88a896068d72a58cbf23a">machineName</a>) { machName = <a class="code" href="classLoginShell.html#a540bd00b4af88a896068d72a58cbf23a">machineName</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"><a class="line" href="classLoginShell.html#ae1cfc0c58be3fcba8b11392d57fd5183"> 39</a></span>&#160; <a class="code" href="classLoginShell.html#adad54b04ec54d3577df4cd11944fff1d">ShellPasswordCheckFunc</a> <a class="code" href="classLoginShell.html#ae1cfc0c58be3fcba8b11392d57fd5183">passwordCheckFunction</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> checkFunc; }</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classLoginShell.html#a68d34a52a12f36113286418c17351bd4"> 40</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classLoginShell.html#a68d34a52a12f36113286418c17351bd4">setPasswordCheckFunction</a>(<a class="code" href="classLoginShell.html#adad54b04ec54d3577df4cd11944fff1d">ShellPasswordCheckFunc</a> <span class="keyword">function</span>) { checkFunc = <span class="keyword">function</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="keyword">protected</span>:</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classLoginShell.html#a88a72760d4dc960c32e2fa4b691f9558">beginSession</a>();</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classLoginShell.html#a6574705053f780acb8f0d8594c210524">printPrompt</a>();</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classLoginShell.html#af54c5c14adac7955cf5e4f9460bd9ca5">execute</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; <span class="keyword">const</span> <span class="keywordtype">char</span> *machName;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="classLoginShell.html#adad54b04ec54d3577df4cd11944fff1d">ShellPasswordCheckFunc</a> checkFunc;</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="preprocessor">#endif</span></div>
<div class="ttc" id="classLoginShell_html_a951838252942c56537dc877c48d3d63e"><div class="ttname"><a href="classLoginShell.html#a951838252942c56537dc877c48d3d63e">LoginShell::setMachineName</a></div><div class="ttdeci">void setMachineName(const char *machineName)</div><div class="ttdoc">Sets the name of the machine to display in the login prompt. </div><div class="ttdef"><b>Definition:</b> <a href="LoginShell_8h_source.html#l00037">LoginShell.h:37</a></div></div>
<div class="ttc" id="classLoginShell_html_a540bd00b4af88a896068d72a58cbf23a"><div class="ttname"><a href="classLoginShell.html#a540bd00b4af88a896068d72a58cbf23a">LoginShell::machineName</a></div><div class="ttdeci">const char * machineName() const </div><div class="ttdoc">Gets the name of the machine to display in the login prompt. </div><div class="ttdef"><b>Definition:</b> <a href="LoginShell_8h_source.html#l00036">LoginShell.h:36</a></div></div>
<div class="ttc" id="classLoginShell_html_a68d34a52a12f36113286418c17351bd4"><div class="ttname"><a href="classLoginShell.html#a68d34a52a12f36113286418c17351bd4">LoginShell::setPasswordCheckFunction</a></div><div class="ttdeci">void setPasswordCheckFunction(ShellPasswordCheckFunc function)</div><div class="ttdoc">Sets the password checking function. </div><div class="ttdef"><b>Definition:</b> <a href="LoginShell_8h_source.html#l00040">LoginShell.h:40</a></div></div>
<div class="ttc" id="classLoginShell_html_a8a6e6c259bc6415eb9cfbb13980e31d4"><div class="ttname"><a href="classLoginShell.html#a8a6e6c259bc6415eb9cfbb13980e31d4">LoginShell::LoginShell</a></div><div class="ttdeci">LoginShell()</div><div class="ttdoc">Constructs a new login shell. </div><div class="ttdef"><b>Definition:</b> <a href="LoginShell_8cpp_source.html#l00067">LoginShell.cpp:67</a></div></div>
<div class="ttc" id="classLoginShell_html_a6574705053f780acb8f0d8594c210524"><div class="ttname"><a href="classLoginShell.html#a6574705053f780acb8f0d8594c210524">LoginShell::printPrompt</a></div><div class="ttdeci">virtual void printPrompt()</div><div class="ttdoc">Prints the current prompt string. </div><div class="ttdef"><b>Definition:</b> <a href="Shell_8cpp_source.html#l01007">Shell.cpp:1007</a></div></div>
<div class="ttc" id="classLoginShell_html_adad54b04ec54d3577df4cd11944fff1d"><div class="ttname"><a href="classLoginShell.html#adad54b04ec54d3577df4cd11944fff1d">LoginShell::ShellPasswordCheckFunc</a></div><div class="ttdeci">ShellPasswordCheckFunc</div><div class="ttdoc">Password checking function for login shells. </div></div>
<div class="ttc" id="classLoginShell_html_ae1cfc0c58be3fcba8b11392d57fd5183"><div class="ttname"><a href="classLoginShell.html#ae1cfc0c58be3fcba8b11392d57fd5183">LoginShell::passwordCheckFunction</a></div><div class="ttdeci">ShellPasswordCheckFunc passwordCheckFunction() const </div><div class="ttdoc">Gets the current password checking function, or NULL if the function has not been set yet...</div><div class="ttdef"><b>Definition:</b> <a href="LoginShell_8h_source.html#l00039">LoginShell.h:39</a></div></div>
<div class="ttc" id="classLoginShell_html_a88a72760d4dc960c32e2fa4b691f9558"><div class="ttname"><a href="classLoginShell.html#a88a72760d4dc960c32e2fa4b691f9558">LoginShell::beginSession</a></div><div class="ttdeci">virtual void beginSession()</div><div class="ttdoc">Begins a login session. </div><div class="ttdef"><b>Definition:</b> <a href="Shell_8cpp_source.html#l00958">Shell.cpp:958</a></div></div>
<div class="ttc" id="classLoginShell_html_af54c5c14adac7955cf5e4f9460bd9ca5"><div class="ttname"><a href="classLoginShell.html#af54c5c14adac7955cf5e4f9460bd9ca5">LoginShell::execute</a></div><div class="ttdeci">virtual void execute()</div><div class="ttdoc">Executes the command in the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="Shell_8cpp_source.html#l01057">Shell.cpp:1057</a></div></div>
<div class="ttc" id="classLoginShell_html"><div class="ttname"><a href="classLoginShell.html">LoginShell</a></div><div class="ttdoc">Command-line shell access via a login shell. </div><div class="ttdef"><b>Definition:</b> <a href="LoginShell_8h_source.html#l00030">LoginShell.h:30</a></div></div>
<div class="ttc" id="classLoginShell_html_aaae466b141c9ea50870b66509402a2f9"><div class="ttname"><a href="classLoginShell.html#aaae466b141c9ea50870b66509402a2f9">LoginShell::~LoginShell</a></div><div class="ttdeci">virtual ~LoginShell()</div><div class="ttdoc">Destroys this login shell. </div><div class="ttdef"><b>Definition:</b> <a href="LoginShell_8cpp_source.html#l00076">LoginShell.cpp:76</a></div></div>
<div class="ttc" id="classShell_html"><div class="ttname"><a href="classShell.html">Shell</a></div><div class="ttdoc">Command-line shell access. </div><div class="ttdef"><b>Definition:</b> <a href="Shell_8h_source.html#l00062">Shell.h:62</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,223 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Melody.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classMelody.html#a9edc4165a49368dd5d78eedf982c38b9"> 85</a></span>&#160;<a class="code" href="classMelody.html#a9edc4165a49368dd5d78eedf982c38b9">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="line" href="classMelody.html#ae88ad06c2acb728f56dd213d5dad6006"> 131</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classMelody.html#ae88ad06c2acb728f56dd213d5dad6006">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="line" href="classMelody.html#a9fd8e0d48833d8da3cd3b3b58408b0b5"> 146</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classMelody.html#a9fd8e0d48833d8da3cd3b3b58408b0b5">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">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="line" href="classMelody.html#aecc9185c9cb1246e8a55521b17d72932"> 162</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classMelody.html#aecc9185c9cb1246e8a55521b17d72932">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">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="line" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b"> 178</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b">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="line" href="classMelody.html#adb6ad8e8cfe8c9a137e470f4e85c7254"> 199</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classMelody.html#adb6ad8e8cfe8c9a137e470f4e85c7254">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">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="line" href="classMelody.html#ad1103b970be1f59058cc7d927be68955"> 214</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classMelody.html#ad1103b970be1f59058cc7d927be68955">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">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 class="ttc" id="classMelody_html_adb6ad8e8cfe8c9a137e470f4e85c7254"><div class="ttname"><a href="classMelody.html#adb6ad8e8cfe8c9a137e470f4e85c7254">Melody::setMelody</a></div><div class="ttdeci">void setMelody(const int *notes, const uint8_t *lengths, unsigned int size)</div><div class="ttdoc">Sets the melody to the size elements of notes and lengths. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8cpp_source.html#l00199">Melody.cpp:199</a></div></div>
<div class="ttc" id="classMelody_html_ac0c552233c41d85f2766d2e4df376b2b"><div class="ttname"><a href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b">Melody::stop</a></div><div class="ttdeci">void stop()</div><div class="ttdoc">Stops playing the melody. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8cpp_source.html#l00178">Melody.cpp:178</a></div></div>
<div class="ttc" id="classMelody_html_ad1103b970be1f59058cc7d927be68955"><div class="ttname"><a href="classMelody.html#ad1103b970be1f59058cc7d927be68955">Melody::run</a></div><div class="ttdeci">void run()</div><div class="ttdoc">Runs the melody control loop. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8cpp_source.html#l00214">Melody.cpp:214</a></div></div>
<div class="ttc" id="classMelody_html_aecc9185c9cb1246e8a55521b17d72932"><div class="ttname"><a href="classMelody.html#aecc9185c9cb1246e8a55521b17d72932">Melody::playOnce</a></div><div class="ttdeci">void playOnce()</div><div class="ttdoc">Plays the melody once and then stops. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8cpp_source.html#l00162">Melody.cpp:162</a></div></div>
<div class="ttc" id="classMelody_html_a9edc4165a49368dd5d78eedf982c38b9"><div class="ttname"><a href="classMelody.html#a9edc4165a49368dd5d78eedf982c38b9">Melody::Melody</a></div><div class="ttdeci">Melody(uint8_t pin)</div><div class="ttdoc">Constructs a new melody playing object for pin. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8cpp_source.html#l00085">Melody.cpp:85</a></div></div>
<div class="ttc" id="classMelody_html_ae88ad06c2acb728f56dd213d5dad6006"><div class="ttname"><a href="classMelody.html#ae88ad06c2acb728f56dd213d5dad6006">Melody::setLoopDuration</a></div><div class="ttdeci">void setLoopDuration(unsigned long ms)</div><div class="ttdoc">Sets the maximum number of loops to last no longer than ms milliseconds. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8cpp_source.html#l00131">Melody.cpp:131</a></div></div>
<div class="ttc" id="classMelody_html_a9fd8e0d48833d8da3cd3b3b58408b0b5"><div class="ttname"><a href="classMelody.html#a9fd8e0d48833d8da3cd3b3b58408b0b5">Melody::play</a></div><div class="ttdeci">void play()</div><div class="ttdoc">Starts playing the melody, or restarts it if already playing. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8cpp_source.html#l00146">Melody.cpp:146</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,266 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Melody.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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="line" href="classMelody.html"> 122</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMelody.html">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">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="line" href="classMelody.html#ad38db3338ed87d72238c0ea9440c633c"> 126</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classMelody.html#ad38db3338ed87d72238c0ea9440c633c">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="line" href="classMelody.html#ab78253ae9abc8478b05f415f5d878a60"> 128</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classMelody.html#ab78253ae9abc8478b05f415f5d878a60">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="line" href="classMelody.html#a507097a2e8ff51a5e9157e3a320ae35b"> 129</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classMelody.html#a507097a2e8ff51a5e9157e3a320ae35b">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">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">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">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">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">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">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 class="ttc" id="classMelody_html_adb6ad8e8cfe8c9a137e470f4e85c7254"><div class="ttname"><a href="classMelody.html#adb6ad8e8cfe8c9a137e470f4e85c7254">Melody::setMelody</a></div><div class="ttdeci">void setMelody(const int *notes, const uint8_t *lengths, unsigned int size)</div><div class="ttdoc">Sets the melody to the size elements of notes and lengths. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8cpp_source.html#l00199">Melody.cpp:199</a></div></div>
<div class="ttc" id="classMelody_html_ac0c552233c41d85f2766d2e4df376b2b"><div class="ttname"><a href="classMelody.html#ac0c552233c41d85f2766d2e4df376b2b">Melody::stop</a></div><div class="ttdeci">void stop()</div><div class="ttdoc">Stops playing the melody. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8cpp_source.html#l00178">Melody.cpp:178</a></div></div>
<div class="ttc" id="classMelody_html_ad1103b970be1f59058cc7d927be68955"><div class="ttname"><a href="classMelody.html#ad1103b970be1f59058cc7d927be68955">Melody::run</a></div><div class="ttdeci">void run()</div><div class="ttdoc">Runs the melody control loop. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8cpp_source.html#l00214">Melody.cpp:214</a></div></div>
<div class="ttc" id="classMelody_html_ad38db3338ed87d72238c0ea9440c633c"><div class="ttname"><a href="classMelody.html#ad38db3338ed87d72238c0ea9440c633c">Melody::isPlaying</a></div><div class="ttdeci">bool isPlaying() const </div><div class="ttdoc">Returns true if the melody is currently playing; false if not. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8h_source.html#l00126">Melody.h:126</a></div></div>
<div class="ttc" id="classMelody_html_aecc9185c9cb1246e8a55521b17d72932"><div class="ttname"><a href="classMelody.html#aecc9185c9cb1246e8a55521b17d72932">Melody::playOnce</a></div><div class="ttdeci">void playOnce()</div><div class="ttdoc">Plays the melody once and then stops. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8cpp_source.html#l00162">Melody.cpp:162</a></div></div>
<div class="ttc" id="classMelody_html_a9edc4165a49368dd5d78eedf982c38b9"><div class="ttname"><a href="classMelody.html#a9edc4165a49368dd5d78eedf982c38b9">Melody::Melody</a></div><div class="ttdeci">Melody(uint8_t pin)</div><div class="ttdoc">Constructs a new melody playing object for pin. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8cpp_source.html#l00085">Melody.cpp:85</a></div></div>
<div class="ttc" id="classMelody_html_ab78253ae9abc8478b05f415f5d878a60"><div class="ttname"><a href="classMelody.html#ab78253ae9abc8478b05f415f5d878a60">Melody::loopCount</a></div><div class="ttdeci">int loopCount() const </div><div class="ttdoc">Returns the number of times the melody should loop before stopping. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8h_source.html#l00128">Melody.h:128</a></div></div>
<div class="ttc" id="classMelody_html"><div class="ttname"><a href="classMelody.html">Melody</a></div><div class="ttdoc">Plays a melody on a digital output pin using tone(). </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8h_source.html#l00122">Melody.h:122</a></div></div>
<div class="ttc" id="classMelody_html_ae88ad06c2acb728f56dd213d5dad6006"><div class="ttname"><a href="classMelody.html#ae88ad06c2acb728f56dd213d5dad6006">Melody::setLoopDuration</a></div><div class="ttdeci">void setLoopDuration(unsigned long ms)</div><div class="ttdoc">Sets the maximum number of loops to last no longer than ms milliseconds. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8cpp_source.html#l00131">Melody.cpp:131</a></div></div>
<div class="ttc" id="classMelody_html_a9fd8e0d48833d8da3cd3b3b58408b0b5"><div class="ttname"><a href="classMelody.html#a9fd8e0d48833d8da3cd3b3b58408b0b5">Melody::play</a></div><div class="ttdeci">void play()</div><div class="ttdoc">Starts playing the melody, or restarts it if already playing. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8cpp_source.html#l00146">Melody.cpp:146</a></div></div>
<div class="ttc" id="classMelody_html_a507097a2e8ff51a5e9157e3a320ae35b"><div class="ttname"><a href="classMelody.html#a507097a2e8ff51a5e9157e3a320ae35b">Melody::setLoopCount</a></div><div class="ttdeci">void setLoopCount(int count)</div><div class="ttdoc">Sets the number of times the melody should loop to count. </div><div class="ttdef"><b>Definition:</b> <a href="Melody_8h_source.html#l00129">Melody.h:129</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -1,254 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: Mono5x7.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><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 id="nav-path" class="navpath">
<ul>
<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 Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: NewHope.cpp Source File</title>
<title>Arduino Cryptography Library: NewHope.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -1294,7 +1293,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: NewHope.h Source File</title>
<title>Arduino Cryptography Library: NewHope.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -171,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: NoiseSource.cpp Source File</title>
<title>Arduino Cryptography Library: NoiseSource.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -138,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ArduinoLibs: NoiseSource.h Source File</title>
<title>Arduino Cryptography Library: NoiseSource.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -22,7 +22,7 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ArduinoLibs
<div id="projectname">Arduino Cryptography Library
</div>
</td>
</tr>
@ -38,7 +38,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</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>
@ -69,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</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>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@ -142,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 7 2018 02:43:13 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sat Apr 7 2018 10:23:43 for Arduino Cryptography Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>

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