Tasmota/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRutils_8h.html

943 lines
67 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRutils.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</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_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">IRutils.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="IRutils_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceirutils"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html">irutils</a></td></tr>
<tr class="memdesc:namespaceirutils"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for covering common functions &amp; procedures for advancd protocol handlers. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a366219b6f1c46f41c6573b3e5e875e41"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a366219b6f1c46f41c6573b3e5e875e41">reverseBits</a> (uint64_t input, uint16_t nbits)</td></tr>
<tr class="memdesc:a366219b6f1c46f41c6573b3e5e875e41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reverse the order of the requested least significant nr. of bits. <a href="IRutils_8h.html#a366219b6f1c46f41c6573b3e5e875e41">More...</a><br /></td></tr>
<tr class="separator:a366219b6f1c46f41c6573b3e5e875e41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a781650451d38303e80da677539f574ee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a781650451d38303e80da677539f574ee">uint64ToString</a> (uint64_t input, uint8_t base=10)</td></tr>
<tr class="memdesc:a781650451d38303e80da677539f574ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values. <a href="IRutils_8h.html#a781650451d38303e80da677539f574ee">More...</a><br /></td></tr>
<tr class="separator:a781650451d38303e80da677539f574ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f49135f3d160700eb12ff6b7309341c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a7f49135f3d160700eb12ff6b7309341c">typeToString</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol, const bool isRepeat=false)</td></tr>
<tr class="memdesc:a7f49135f3d160700eb12ff6b7309341c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a protocol type (enum etc) to a human readable string. <a href="IRutils_8h.html#a7f49135f3d160700eb12ff6b7309341c">More...</a><br /></td></tr>
<tr class="separator:a7f49135f3d160700eb12ff6b7309341c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a315d5f05fb572564025bc9ce9b820243"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a315d5f05fb572564025bc9ce9b820243">serialPrintUint64</a> (uint64_t input, uint8_t base=10)</td></tr>
<tr class="memdesc:a315d5f05fb572564025bc9ce9b820243"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t) <a href="IRutils_8h.html#a315d5f05fb572564025bc9ce9b820243">More...</a><br /></td></tr>
<tr class="separator:a315d5f05fb572564025bc9ce9b820243"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10fc00c8b399dddb67a228325e6e2f79"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a10fc00c8b399dddb67a228325e6e2f79">resultToSourceCode</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:a10fc00c8b399dddb67a228325e6e2f79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a String containing the key values of a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure in a C/C++ code style format. <a href="IRutils_8h.html#a10fc00c8b399dddb67a228325e6e2f79">More...</a><br /></td></tr>
<tr class="separator:a10fc00c8b399dddb67a228325e6e2f79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbfdef125ff077431f3abc27a1eeb800"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#afbfdef125ff077431f3abc27a1eeb800">resultToTimingInfo</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:afbfdef125ff077431f3abc27a1eeb800"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. <a href="IRutils_8h.html#afbfdef125ff077431f3abc27a1eeb800">More...</a><br /></td></tr>
<tr class="separator:afbfdef125ff077431f3abc27a1eeb800"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8">resultToHumanReadableBasic</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure into a human readable format. <a href="IRutils_8h.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8">More...</a><br /></td></tr>
<tr class="separator:a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25a669d53f231de6152f8e60cedf39f7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a25a669d53f231de6152f8e60cedf39f7">resultToHexidecimal</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const result)</td></tr>
<tr class="memdesc:a25a669d53f231de6152f8e60cedf39f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure's value/state to simple hexadecimal. <a href="IRutils_8h.html#a25a669d53f231de6152f8e60cedf39f7">More...</a><br /></td></tr>
<tr class="separator:a25a669d53f231de6152f8e60cedf39f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6efd4986db60709d3501606ec7ab5382"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a6efd4986db60709d3501606ec7ab5382">hasACState</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol)</td></tr>
<tr class="memdesc:a6efd4986db60709d3501606ec7ab5382"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does the given protocol use a complex state as part of the decode? <a href="IRutils_8h.html#a6efd4986db60709d3501606ec7ab5382">More...</a><br /></td></tr>
<tr class="separator:a6efd4986db60709d3501606ec7ab5382"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad5f25cf6a2dded8b48f4a6dd16857be"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#aad5f25cf6a2dded8b48f4a6dd16857be">getCorrectedRawLength</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:aad5f25cf6a2dded8b48f4a6dd16857be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries. <a href="IRutils_8h.html#aad5f25cf6a2dded8b48f4a6dd16857be">More...</a><br /></td></tr>
<tr class="separator:aad5f25cf6a2dded8b48f4a6dd16857be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"><td class="memItemLeft" align="right" valign="top">uint16_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a">resultToRawArray</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const decode)</td></tr>
<tr class="memdesc:a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> into an array suitable for <code>sendRaw()</code>. <a href="IRutils_8h.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a">More...</a><br /></td></tr>
<tr class="separator:a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f33bdd680bea210b212d4e9925eb8eb"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a3f33bdd680bea210b212d4e9925eb8eb">sumBytes</a> (const uint8_t *const start, const uint16_t length, const uint8_t init=0)</td></tr>
<tr class="memdesc:a3f33bdd680bea210b212d4e9925eb8eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sum all the bytes of an array and return the least significant 8-bits of the result. <a href="IRutils_8h.html#a3f33bdd680bea210b212d4e9925eb8eb">More...</a><br /></td></tr>
<tr class="separator:a3f33bdd680bea210b212d4e9925eb8eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab030689a93499311ee8e6621ac8757aa"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#ab030689a93499311ee8e6621ac8757aa">xorBytes</a> (const uint8_t *const start, const uint16_t length, const uint8_t init=0)</td></tr>
<tr class="memdesc:ab030689a93499311ee8e6621ac8757aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate a rolling XOR of all the bytes of an array. <a href="IRutils_8h.html#ab030689a93499311ee8e6621ac8757aa">More...</a><br /></td></tr>
<tr class="separator:ab030689a93499311ee8e6621ac8757aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27816eac50afafa9e53ba4b53675da20"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a27816eac50afafa9e53ba4b53675da20">countBits</a> (const uint8_t *const start, const uint16_t length, const bool ones=true, const uint16_t init=0)</td></tr>
<tr class="memdesc:a27816eac50afafa9e53ba4b53675da20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Count the number of bits of a certain type in an array. <a href="IRutils_8h.html#a27816eac50afafa9e53ba4b53675da20">More...</a><br /></td></tr>
<tr class="separator:a27816eac50afafa9e53ba4b53675da20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a719829db11f5d5560b4367c0d2d365"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a5a719829db11f5d5560b4367c0d2d365">countBits</a> (const uint64_t data, const uint8_t length, const bool ones=true, const uint16_t init=0)</td></tr>
<tr class="memdesc:a5a719829db11f5d5560b4367c0d2d365"><td class="mdescLeft">&#160;</td><td class="mdescRight">Count the number of bits of a certain type in an Integer. <a href="IRutils_8h.html#a5a719829db11f5d5560b4367c0d2d365">More...</a><br /></td></tr>
<tr class="separator:a5a719829db11f5d5560b4367c0d2d365"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a85904f25c8ec77fb554d238c59cfdb"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a1a85904f25c8ec77fb554d238c59cfdb">invertBits</a> (const uint64_t data, const uint16_t nbits)</td></tr>
<tr class="memdesc:a1a85904f25c8ec77fb554d238c59cfdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invert/Flip the bits in an Integer. <a href="IRutils_8h.html#a1a85904f25c8ec77fb554d238c59cfdb">More...</a><br /></td></tr>
<tr class="separator:a1a85904f25c8ec77fb554d238c59cfdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10b9312e4ac9c96d895af83db01ed72e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a10b9312e4ac9c96d895af83db01ed72e">strToDecodeType</a> (const char *str)</td></tr>
<tr class="memdesc:a10b9312e4ac9c96d895af83db01ed72e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a C-style string to a decode_type_t. <a href="IRutils_8h.html#a10b9312e4ac9c96d895af83db01ed72e">More...</a><br /></td></tr>
<tr class="separator:a10b9312e4ac9c96d895af83db01ed72e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19b940e26a4f8ddcaf86cce1ec62d563"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a19b940e26a4f8ddcaf86cce1ec62d563">celsiusToFahrenheit</a> (const float deg)</td></tr>
<tr class="memdesc:a19b940e26a4f8ddcaf86cce1ec62d563"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert degrees Celsius to degrees Fahrenheit. <a href="IRutils_8h.html#a19b940e26a4f8ddcaf86cce1ec62d563">More...</a><br /></td></tr>
<tr class="separator:a19b940e26a4f8ddcaf86cce1ec62d563"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83538e86145850c24b1c824723089502"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a83538e86145850c24b1c824723089502">fahrenheitToCelsius</a> (const float deg)</td></tr>
<tr class="memdesc:a83538e86145850c24b1c824723089502"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert degrees Fahrenheit to degrees Celsius. <a href="IRutils_8h.html#a83538e86145850c24b1c824723089502">More...</a><br /></td></tr>
<tr class="separator:a83538e86145850c24b1c824723089502"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12ba9cf1830a886649a80c3cc5fdce2b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b">irutils::addBoolToString</a> (const bool value, const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label, const bool precomma)</td></tr>
<tr class="memdesc:a12ba9cf1830a886649a80c3cc5fdce2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String with a colon separated flag suitable for Humans. e.g. "Power: On". <a href="namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b">More...</a><br /></td></tr>
<tr class="separator:a12ba9cf1830a886649a80c3cc5fdce2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a772e623c4b60208200e02afbaec66651"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a772e623c4b60208200e02afbaec66651">irutils::addIntToString</a> (const uint16_t value, const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label, const bool precomma)</td></tr>
<tr class="memdesc:a772e623c4b60208200e02afbaec66651"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23". <a href="namespaceirutils.html#a772e623c4b60208200e02afbaec66651">More...</a><br /></td></tr>
<tr class="separator:a772e623c4b60208200e02afbaec66651"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae89b70ce66617a8707c1951eadbc6fbd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd">irutils::modelToStr</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol, const int16_t model)</td></tr>
<tr class="memdesc:ae89b70ce66617a8707c1951eadbc6fbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate the model string for a given Protocol/Model pair. <a href="namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd">More...</a><br /></td></tr>
<tr class="separator:ae89b70ce66617a8707c1951eadbc6fbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06e5a5c2b6f6649035dfa5eb19801367"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367">irutils::addModelToString</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol, const int16_t model, const bool precomma)</td></tr>
<tr class="memdesc:a06e5a5c2b6f6649035dfa5eb19801367"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for a given protocol model number. e.g. "Model: JKE". <a href="namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367">More...</a><br /></td></tr>
<tr class="separator:a06e5a5c2b6f6649035dfa5eb19801367"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac98793392d1e65c1b8d6895eb9d9b75b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b">irutils::addLabeledString</a> (const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> value, const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label, const bool precomma)</td></tr>
<tr class="memdesc:ac98793392d1e65c1b8d6895eb9d9b75b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String with a colon separated "label: value" pair suitable for Humans. <a href="namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b">More...</a><br /></td></tr>
<tr class="separator:ac98793392d1e65c1b8d6895eb9d9b75b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cef0634f4db979a93b7dc19cc2b4a85"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85">irutils::addTempToString</a> (const uint16_t degrees, const bool celsius, const bool precomma)</td></tr>
<tr class="memdesc:a0cef0634f4db979a93b7dc19cc2b4a85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for a given temperature. e.g. "Temp: 25C". <a href="namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85">More...</a><br /></td></tr>
<tr class="separator:a0cef0634f4db979a93b7dc19cc2b4a85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b74ae0258e98aa0eaebc6f3efe1481e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e">irutils::addModeToString</a> (const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan)</td></tr>
<tr class="memdesc:a8b74ae0258e98aa0eaebc6f3efe1481e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)". <a href="namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e">More...</a><br /></td></tr>
<tr class="separator:a8b74ae0258e98aa0eaebc6f3efe1481e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae023bbabc452173d348c14eac7d86ab4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4">irutils::addFanToString</a> (const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium)</td></tr>
<tr class="memdesc:ae023bbabc452173d348c14eac7d86ab4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)". <a href="namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4">More...</a><br /></td></tr>
<tr class="separator:ae023bbabc452173d348c14eac7d86ab4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ead1d10578c64627f8a24b5d8a7444f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f">irutils::addDayToString</a> (const uint8_t day_of_week, const int8_t offset, const bool precomma)</td></tr>
<tr class="memdesc:a6ead1d10578c64627f8a24b5d8a7444f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of the 3-letter day of the week from a numerical day of the week. e.g. "Day: 1 (Mon)". <a href="namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f">More...</a><br /></td></tr>
<tr class="separator:a6ead1d10578c64627f8a24b5d8a7444f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e55c6fdcc82e1ef8bd5f73df83609a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7">irutils::htmlEscape</a> (const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> unescaped)</td></tr>
<tr class="memdesc:a6e55c6fdcc82e1ef8bd5f73df83609a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS. <a href="namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7">More...</a><br /></td></tr>
<tr class="separator:a6e55c6fdcc82e1ef8bd5f73df83609a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c59c8dd886c283fdb8adc9082c6890a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a">irutils::msToString</a> (uint32_t const msecs)</td></tr>
<tr class="memdesc:a9c59c8dd886c283fdb8adc9082c6890a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds". <a href="namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a">More...</a><br /></td></tr>
<tr class="separator:a9c59c8dd886c283fdb8adc9082c6890a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebab40a2c69624adc1a5a8a6db72952f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f">irutils::minsToString</a> (const uint16_t mins)</td></tr>
<tr class="memdesc:aebab40a2c69624adc1a5a8a6db72952f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59". <a href="namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f">More...</a><br /></td></tr>
<tr class="separator:aebab40a2c69624adc1a5a8a6db72952f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4752ecc3eafa3ca2e13344a52519b343"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343">irutils::sumNibbles</a> (const uint8_t *const start, const uint16_t length, const uint8_t init)</td></tr>
<tr class="memdesc:a4752ecc3eafa3ca2e13344a52519b343"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sum all the nibbles together in a series of bytes. <a href="namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343">More...</a><br /></td></tr>
<tr class="separator:a4752ecc3eafa3ca2e13344a52519b343"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb5202fa0093ee6b7e07d4290229fbd2"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#aeb5202fa0093ee6b7e07d4290229fbd2">irutils::sumNibbles</a> (const uint64_t data, const uint8_t count, const uint8_t init, const bool nibbleonly)</td></tr>
<tr class="memdesc:aeb5202fa0093ee6b7e07d4290229fbd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sum all the nibbles together in an integer. <a href="namespaceirutils.html#aeb5202fa0093ee6b7e07d4290229fbd2">More...</a><br /></td></tr>
<tr class="separator:aeb5202fa0093ee6b7e07d4290229fbd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af18c4abfd0ed9f4b3a099ecec1999ee7"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7">irutils::bcdToUint8</a> (const uint8_t bcd)</td></tr>
<tr class="memdesc:af18c4abfd0ed9f4b3a099ecec1999ee7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a byte of Binary Coded Decimal(BCD) into an Integer. <a href="namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7">More...</a><br /></td></tr>
<tr class="separator:af18c4abfd0ed9f4b3a099ecec1999ee7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a534704a52b75acd46f687cc0a2b91bf1"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1">irutils::uint8ToBcd</a> (const uint8_t integer)</td></tr>
<tr class="memdesc:a534704a52b75acd46f687cc0a2b91bf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an Integer into a byte of Binary Coded Decimal(BCD). <a href="namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1">More...</a><br /></td></tr>
<tr class="separator:a534704a52b75acd46f687cc0a2b91bf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0756774b20e4f7c836abee466800ee6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6">irutils::getBit</a> (const uint64_t data, const uint8_t position, const uint8_t size)</td></tr>
<tr class="memdesc:ac0756774b20e4f7c836abee466800ee6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of <code>position</code>th bit of an Integer. <a href="namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6">More...</a><br /></td></tr>
<tr class="separator:ac0756774b20e4f7c836abee466800ee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27f90f74ed0b7af37c7bd8cd2a059dee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a27f90f74ed0b7af37c7bd8cd2a059dee">irutils::getBit</a> (const uint8_t data, const uint8_t position)</td></tr>
<tr class="memdesc:a27f90f74ed0b7af37c7bd8cd2a059dee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of <code>position</code>th bit of an Integer. <a href="namespaceirutils.html#a27f90f74ed0b7af37c7bd8cd2a059dee">More...</a><br /></td></tr>
<tr class="separator:a27f90f74ed0b7af37c7bd8cd2a059dee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a316301577d2ff338bfba6605df2cc46b"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b">irutils::setBit</a> (const uint64_t data, const uint8_t position, const bool on, const uint8_t size)</td></tr>
<tr class="memdesc:a316301577d2ff338bfba6605df2cc46b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b">More...</a><br /></td></tr>
<tr class="separator:a316301577d2ff338bfba6605df2cc46b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e9e858b490fa3328b4c5bd01adedb8c"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a2e9e858b490fa3328b4c5bd01adedb8c">irutils::setBit</a> (const uint8_t data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:a2e9e858b490fa3328b4c5bd01adedb8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#a2e9e858b490fa3328b4c5bd01adedb8c">More...</a><br /></td></tr>
<tr class="separator:a2e9e858b490fa3328b4c5bd01adedb8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1b3de6e733d9c4d614a8239f5bd3220"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ac1b3de6e733d9c4d614a8239f5bd3220">irutils::setBit</a> (uint8_t *const data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:ac1b3de6e733d9c4d614a8239f5bd3220"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#ac1b3de6e733d9c4d614a8239f5bd3220">More...</a><br /></td></tr>
<tr class="separator:ac1b3de6e733d9c4d614a8239f5bd3220"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86bbcf05c1601712b1d587b87035f09b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a86bbcf05c1601712b1d587b87035f09b">irutils::setBit</a> (uint32_t *const data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:a86bbcf05c1601712b1d587b87035f09b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#a86bbcf05c1601712b1d587b87035f09b">More...</a><br /></td></tr>
<tr class="separator:a86bbcf05c1601712b1d587b87035f09b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e7814e2274f02df0dac0106c293c487"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a9e7814e2274f02df0dac0106c293c487">irutils::setBit</a> (uint64_t *const data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:a9e7814e2274f02df0dac0106c293c487"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#a9e7814e2274f02df0dac0106c293c487">More...</a><br /></td></tr>
<tr class="separator:a9e7814e2274f02df0dac0106c293c487"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4f5e3eb26e111909ddc93a8b018ba78"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78">irutils::setBits</a> (uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)</td></tr>
<tr class="memdesc:ab4f5e3eb26e111909ddc93a8b018ba78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter an uint8_t value by overwriting an arbitary given number of bits. <a href="namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78">More...</a><br /></td></tr>
<tr class="separator:ab4f5e3eb26e111909ddc93a8b018ba78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fd8b18a76f0ae8f730b4de55fc9486e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a3fd8b18a76f0ae8f730b4de55fc9486e">irutils::setBits</a> (uint32_t *const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data)</td></tr>
<tr class="memdesc:a3fd8b18a76f0ae8f730b4de55fc9486e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter an uint32_t value by overwriting an arbitary given number of bits. <a href="namespaceirutils.html#a3fd8b18a76f0ae8f730b4de55fc9486e">More...</a><br /></td></tr>
<tr class="separator:a3fd8b18a76f0ae8f730b4de55fc9486e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4dfb0984a9ea38602805987a7845839c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a4dfb0984a9ea38602805987a7845839c">irutils::setBits</a> (uint64_t *const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data)</td></tr>
<tr class="memdesc:a4dfb0984a9ea38602805987a7845839c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter an uint64_t value by overwriting an arbitary given number of bits. <a href="namespaceirutils.html#a4dfb0984a9ea38602805987a7845839c">More...</a><br /></td></tr>
<tr class="separator:a4dfb0984a9ea38602805987a7845839c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:aa72cd082cdde3d8d7473ed9d11ff6846"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#aa72cd082cdde3d8d7473ed9d11ff6846">kNibbleSize</a> = 4</td></tr>
<tr class="separator:aa72cd082cdde3d8d7473ed9d11ff6846"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0288cc71e1814a27c27393f06676eec"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#ad0288cc71e1814a27c27393f06676eec">kLowNibble</a> = 0</td></tr>
<tr class="separator:ad0288cc71e1814a27c27393f06676eec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26dd96e82207f707c21e696a60b9c032"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a26dd96e82207f707c21e696a60b9c032">kHighNibble</a> = 4</td></tr>
<tr class="separator:a26dd96e82207f707c21e696a60b9c032"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5432915ab86062fceadc067a233f1627"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a5432915ab86062fceadc067a233f1627">kModeBitsSize</a> = 3</td></tr>
<tr class="separator:a5432915ab86062fceadc067a233f1627"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a19b940e26a4f8ddcaf86cce1ec62d563"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19b940e26a4f8ddcaf86cce1ec62d563">&#9670;&nbsp;</a></span>celsiusToFahrenheit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float celsiusToFahrenheit </td>
<td>(</td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>deg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert degrees Celsius to degrees Fahrenheit. </p>
</div>
</div>
<a id="a5a719829db11f5d5560b4367c0d2d365"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a719829db11f5d5560b4367c0d2d365">&#9670;&nbsp;</a></span>countBits() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t countBits </td>
<td>(</td>
<td class="paramtype">const uint64_t&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>ones</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>init</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Count the number of bits of a certain type in an Integer. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The value you want bits counted for. Starting from the LSB. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bits to use in the calculation? Starts at the LSB </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ones</td><td>Count the binary nr of <code>1</code> bits. False is count the <code>0</code>s. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The nr. of bits found of the given type found in the Integer. </dd></dl>
</div>
</div>
<a id="a27816eac50afafa9e53ba4b53675da20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27816eac50afafa9e53ba4b53675da20">&#9670;&nbsp;</a></span>countBits() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t countBits </td>
<td>(</td>
<td class="paramtype">const uint8_t *const&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>ones</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>init</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Count the number of bits of a certain type in an array. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>A ptr to the start of the byte array to calculate over. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bytes to use in the calculation. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ones</td><td>Count the binary nr of <code>1</code> bits. False is count the <code>0</code>s. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The nr. of bits found of the given type found in the array. </dd></dl>
</div>
</div>
<a id="a83538e86145850c24b1c824723089502"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83538e86145850c24b1c824723089502">&#9670;&nbsp;</a></span>fahrenheitToCelsius()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float fahrenheitToCelsius </td>
<td>(</td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>deg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert degrees Fahrenheit to degrees Celsius. </p>
</div>
</div>
<a id="aad5f25cf6a2dded8b48f4a6dd16857be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad5f25cf6a2dded8b48f4a6dd16857be">&#9670;&nbsp;</a></span>getCorrectedRawLength()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t getCorrectedRawLength </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>results</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The corrected length. </dd></dl>
</div>
</div>
<a id="a6efd4986db60709d3501606ec7ab5382"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6efd4986db60709d3501606ec7ab5382">&#9670;&nbsp;</a></span>hasACState()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool hasACState </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a>&#160;</td>
<td class="paramname"><em>protocol</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Does the given protocol use a complex state as part of the decode? </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">protocol</td><td>The decode_type_t protocol we are enquiring about. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the protocol uses a state array. False if just an integer. </dd></dl>
</div>
</div>
<a id="a1a85904f25c8ec77fb554d238c59cfdb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a85904f25c8ec77fb554d238c59cfdb">&#9670;&nbsp;</a></span>invertBits()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t invertBits </td>
<td>(</td>
<td class="paramtype">const uint64_t&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>nbits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Invert/Flip the bits in an Integer. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The Integer that will be inverted. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nbits</td><td>How many bits are to be inverted. Starting from the LSB. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An Integer with the appropriate bits inverted/flipped. </dd></dl>
</div>
</div>
<a id="a25a669d53f231de6152f8e60cedf39f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a25a669d53f231de6152f8e60cedf39f7">&#9670;&nbsp;</a></span>resultToHexidecimal()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToHexidecimal </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>result</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure's value/state to simple hexadecimal. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">result</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the output. </dd></dl>
</div>
</div>
<a id="a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8">&#9670;&nbsp;</a></span>resultToHumanReadableBasic()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToHumanReadableBasic </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>results</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure into a human readable format. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the output. </dd></dl>
</div>
</div>
<a id="a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a">&#9670;&nbsp;</a></span>resultToRawArray()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t* resultToRawArray </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>decode</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> into an array suitable for <code>sendRaw()</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">decode</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure that contains a mesg. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A PTR to a dynamically allocated uint16_t sendRaw compatible array. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>The returned array needs to be delete[]'ed/free()'ed (deallocated) after use by caller. </dd></dl>
</div>
</div>
<a id="a10fc00c8b399dddb67a228325e6e2f79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10fc00c8b399dddb67a228325e6e2f79">&#9670;&nbsp;</a></span>resultToSourceCode()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToSourceCode </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>results</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return a String containing the key values of a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure in a C/C++ code style format. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the code-ified result. </dd></dl>
</div>
</div>
<a id="afbfdef125ff077431f3abc27a1eeb800"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbfdef125ff077431f3abc27a1eeb800">&#9670;&nbsp;</a></span>resultToTimingInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToTimingInfo </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>results</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the legacy information format. </dd></dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000003">Deprecated:</a></b></dt><dd>This is only for those that want this legacy format. </dd></dl>
</div>
</div>
<a id="a366219b6f1c46f41c6573b3e5e875e41"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a366219b6f1c46f41c6573b3e5e875e41">&#9670;&nbsp;</a></span>reverseBits()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t reverseBits </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>nbits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reverse the order of the requested least significant nr. of bits. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>Bit pattern/integer to reverse. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nbits</td><td>Nr. of bits to reverse. (LSB -&gt; MSB) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The reversed bit pattern. </dd></dl>
</div>
</div>
<a id="a315d5f05fb572564025bc9ce9b820243"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a315d5f05fb572564025bc9ce9b820243">&#9670;&nbsp;</a></span>serialPrintUint64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void serialPrintUint64 </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>base</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t) </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>The value to print </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>The output base. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a10b9312e4ac9c96d895af83db01ed72e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10b9312e4ac9c96d895af83db01ed72e">&#9670;&nbsp;</a></span>strToDecodeType()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> strToDecodeType </td>
<td>(</td>
<td class="paramtype">const char *const&#160;</td>
<td class="paramname"><em>str</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a C-style string to a decode_type_t. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">str</td><td>A C-style string containing a protocol name or number. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A decode_type_t enum. (decode_type_t::UNKNOWN if no match.) </dd></dl>
</div>
</div>
<a id="a3f33bdd680bea210b212d4e9925eb8eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f33bdd680bea210b212d4e9925eb8eb">&#9670;&nbsp;</a></span>sumBytes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t sumBytes </td>
<td>(</td>
<td class="paramtype">const uint8_t *const&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>init</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sum all the bytes of an array and return the least significant 8-bits of the result. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>A ptr to the start of the byte array to calculate over. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bytes to use in the calculation. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The 8-bit calculated result of all the bytes and init value. </dd></dl>
</div>
</div>
<a id="a7f49135f3d160700eb12ff6b7309341c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f49135f3d160700eb12ff6b7309341c">&#9670;&nbsp;</a></span>typeToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> typeToString </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a>&#160;</td>
<td class="paramname"><em>protocol</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>isRepeat</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a protocol type (enum etc) to a human readable string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">protocol</td><td>Nr. (enum) of the protocol. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">isRepeat</td><td>A flag indicating if it is a repeat message. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the protocol name. kUnknownStr if no match. </dd></dl>
</div>
</div>
<a id="a781650451d38303e80da677539f574ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a781650451d38303e80da677539f574ee">&#9670;&nbsp;</a></span>uint64ToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> uint64ToString </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>base</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>The value to print </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>The output base. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String representation of the integer. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>Based on Arduino's Print::printNumber() </dd></dl>
</div>
</div>
<a id="ab030689a93499311ee8e6621ac8757aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab030689a93499311ee8e6621ac8757aa">&#9670;&nbsp;</a></span>xorBytes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t xorBytes </td>
<td>(</td>
<td class="paramtype">const uint8_t *const&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>init</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate a rolling XOR of all the bytes of an array. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>A ptr to the start of the byte array to calculate over. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bytes to use in the calculation. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The 8-bit calculated result of all the bytes and init value. </dd></dl>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a26dd96e82207f707c21e696a60b9c032"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26dd96e82207f707c21e696a60b9c032">&#9670;&nbsp;</a></span>kHighNibble</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kHighNibble = 4</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad0288cc71e1814a27c27393f06676eec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0288cc71e1814a27c27393f06676eec">&#9670;&nbsp;</a></span>kLowNibble</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kLowNibble = 0</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5432915ab86062fceadc067a233f1627"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5432915ab86062fceadc067a233f1627">&#9670;&nbsp;</a></span>kModeBitsSize</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kModeBitsSize = 3</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa72cd082cdde3d8d7473ed9d11ff6846"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa72cd082cdde3d8d7473ed9d11ff6846">&#9670;&nbsp;</a></span>kNibbleSize</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kNibbleSize = 4</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>