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

1304 lines
66 KiB
HTML
Raw Normal View History

<!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: irutils Namespace 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><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">irutils Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Namespace for covering common functions &amp; procedures for advancd protocol handlers.
<a href="namespaceirutils.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem: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">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: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">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">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">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">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: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">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">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: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">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: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">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: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">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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">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>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Namespace for covering common functions &amp; procedures for advancd protocol handlers. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a12ba9cf1830a886649a80c3cc5fdce2b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12ba9cf1830a886649a80c3cc5fdce2b">&#9670;&nbsp;</a></span>addBoolToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> irutils::addBoolToString </td>
<td>(</td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td>
<td class="paramname"><em>label</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>precomma</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a String with a colon separated flag suitable for Humans. e.g. "Power: On". </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The value to come after the label. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">label</td><td>The label to precede the value. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">precomma</td><td>Should the output string start with ", " or not? </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The resulting String. </dd></dl>
</div>
</div>
<a id="a6ead1d10578c64627f8a24b5d8a7444f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ead1d10578c64627f8a24b5d8a7444f">&#9670;&nbsp;</a></span>addDayToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> irutils::addDayToString </td>
<td>(</td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>day_of_week</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int8_t&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>precomma</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a String of the 3-letter day of the week from a numerical day of the week. e.g. "Day: 1 (Mon)". </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">day_of_week</td><td>A numerical version of the sequential day of the week. e.g. Saturday = 7 etc. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">offset</td><td>Days to offset by. e.g. For different day starting the week. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">precomma</td><td>Should the output string start with ", " or not? </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The resulting String. </dd></dl>
</div>
</div>
<a id="ae023bbabc452173d348c14eac7d86ab4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae023bbabc452173d348c14eac7d86ab4">&#9670;&nbsp;</a></span>addFanToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> irutils::addFanToString </td>
<td>(</td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>speed</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>high</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>low</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>automatic</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>quiet</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>medium</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)". </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">speed</td><td>The numeric speed of the fan to display. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">high</td><td>The numeric value for High speed. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">low</td><td>The numeric value for Low speed. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">automatic</td><td>The numeric value for Auto speed. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">quiet</td><td>The numeric value for Quiet speed. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">medium</td><td>The numeric value for Medium speed. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The resulting String. </dd></dl>
</div>
</div>
<a id="a772e623c4b60208200e02afbaec66651"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a772e623c4b60208200e02afbaec66651">&#9670;&nbsp;</a></span>addIntToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> irutils::addIntToString </td>
<td>(</td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td>
<td class="paramname"><em>label</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>precomma</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23". </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The value to come after the label. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">label</td><td>The label to precede the value. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">precomma</td><td>Should the output string start with ", " or not? </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The resulting String. </dd></dl>
</div>
</div>
<a id="ac98793392d1e65c1b8d6895eb9d9b75b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac98793392d1e65c1b8d6895eb9d9b75b">&#9670;&nbsp;</a></span>addLabeledString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> irutils::addLabeledString </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td>
<td class="paramname"><em>label</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>precomma</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a String with a colon separated "label: value" pair suitable for Humans. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The value to come after the label. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">label</td><td>The label to precede the value. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">precomma</td><td>Should the output string start with ", " or not? </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The resulting String. </dd></dl>
</div>
</div>
<a id="a06e5a5c2b6f6649035dfa5eb19801367"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a06e5a5c2b6f6649035dfa5eb19801367">&#9670;&nbsp;</a></span>addModelToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> irutils::addModelToString </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 int16_t&#160;</td>
<td class="paramname"><em>model</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>precomma</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a String of human output for a given protocol model number. e.g. "Model: JKE". </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">protocol</td><td>The IR protocol. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">model</td><td>The model number for that protocol. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">precomma</td><td>Should the output string start with ", " or not? </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The resulting String. </dd></dl>
</div>
</div>
<a id="a8b74ae0258e98aa0eaebc6f3efe1481e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b74ae0258e98aa0eaebc6f3efe1481e">&#9670;&nbsp;</a></span>addModeToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> irutils::addModeToString </td>
<td>(</td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>automatic</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>cool</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>heat</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>dry</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>fan</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)". </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">mode</td><td>The operating mode to display. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">automatic</td><td>The numeric value for Auto mode. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">cool</td><td>The numeric value for Cool mode. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">heat</td><td>The numeric value for Heat mode. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">dry</td><td>The numeric value for Dry mode. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">fan</td><td>The numeric value for Fan mode. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The resulting String. </dd></dl>
</div>
</div>
<a id="a0cef0634f4db979a93b7dc19cc2b4a85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0cef0634f4db979a93b7dc19cc2b4a85">&#9670;&nbsp;</a></span>addTempToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> irutils::addTempToString </td>
<td>(</td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>degrees</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>celsius</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>precomma</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a String of human output for a given temperature. e.g. "Temp: 25C". </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">degrees</td><td>The temperature in degrees. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">celsius</td><td>Is the temp Celsius or Fahrenheit. true is C, false is F </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">precomma</td><td>Should the output string start with ", " or not? </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The resulting String. </dd></dl>
</div>
</div>
<a id="af18c4abfd0ed9f4b3a099ecec1999ee7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af18c4abfd0ed9f4b3a099ecec1999ee7">&#9670;&nbsp;</a></span>bcdToUint8()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t irutils::bcdToUint8 </td>
<td>(</td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>bcd</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a byte of Binary Coded Decimal(BCD) into an Integer. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">bcd</td><td>The BCD value. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A normal Integer value. </dd></dl>
</div>
</div>
<a id="ac0756774b20e4f7c836abee466800ee6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac0756774b20e4f7c836abee466800ee6">&#9670;&nbsp;</a></span>getBit() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool irutils::getBit </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>position</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the value of <code>position</code>th bit of 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>Value to be examined. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>Nr. of the Nth bit to be examined. <code>0</code> is the LSB. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Nr. of bits in data. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The bit's value. </dd></dl>
</div>
</div>
<a id="a27f90f74ed0b7af37c7bd8cd2a059dee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27f90f74ed0b7af37c7bd8cd2a059dee">&#9670;&nbsp;</a></span>getBit() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool irutils::getBit </td>
<td>(</td>
<td class="paramtype">const uint8_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>position</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the value of <code>position</code>th bit of 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>Value to be examined. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>Nr. of the Nth bit to be examined. <code>0</code> is the LSB. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The bit's value. </dd></dl>
</div>
</div>
<a id="a6e55c6fdcc82e1ef8bd5f73df83609a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e55c6fdcc82e1ef8bd5f73df83609a7">&#9670;&nbsp;</a></span>htmlEscape()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> irutils::htmlEscape </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td>
<td class="paramname"><em>unescaped</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">unescaped</td><td>A String containing text to make HTML safe. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A string that is HTML safe. </dd></dl>
</div>
</div>
<a id="aebab40a2c69624adc1a5a8a6db72952f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aebab40a2c69624adc1a5a8a6db72952f">&#9670;&nbsp;</a></span>minsToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> irutils::minsToString </td>
<td>(</td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>mins</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59". </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">mins</td><td>Nr. of Minutes. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A human readable string. </dd></dl>
</div>
</div>
<a id="ae89b70ce66617a8707c1951eadbc6fbd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae89b70ce66617a8707c1951eadbc6fbd">&#9670;&nbsp;</a></span>modelToStr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> irutils::modelToStr </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 int16_t&#160;</td>
<td class="paramname"><em>model</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Generate the model string for a given Protocol/Model pair. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">protocol</td><td>The IR protocol. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">model</td><td>The model number for that protocol. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The resulting String. </dd></dl>
</div>
</div>
<a id="a9c59c8dd886c283fdb8adc9082c6890a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c59c8dd886c283fdb8adc9082c6890a">&#9670;&nbsp;</a></span>msToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> irutils::msToString </td>
<td>(</td>
<td class="paramtype">uint32_t const&#160;</td>
<td class="paramname"><em>msecs</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds". </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">msecs</td><td>Nr. of milliSeconds (ms). </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A human readable string. </dd></dl>
</div>
</div>
<a id="a316301577d2ff338bfba6605df2cc46b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a316301577d2ff338bfba6605df2cc46b">&#9670;&nbsp;</a></span>setBit() <span class="overload">[1/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t irutils::setBit </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>position</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>on</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the value of an Integer with the <code>position</code>th bit changed. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>Value to be changed. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>Nr. of the bit to be changed. <code>0</code> is the LSB. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">on</td><td>Value to set the position'th bit to. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Nr. of bits in data. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A suitably modified integer. </dd></dl>
</div>
</div>
<a id="a2e9e858b490fa3328b4c5bd01adedb8c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e9e858b490fa3328b4c5bd01adedb8c">&#9670;&nbsp;</a></span>setBit() <span class="overload">[2/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t irutils::setBit </td>
<td>(</td>
<td class="paramtype">const uint8_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>position</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>on</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the value of an Integer with the <code>position</code>th bit changed. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>Value to be changed. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>Nr. of the bit to be changed. <code>0</code> is the LSB. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">on</td><td>Value to set the position'th bit to. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A suitably modified integer. </dd></dl>
</div>
</div>
<a id="a86bbcf05c1601712b1d587b87035f09b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86bbcf05c1601712b1d587b87035f09b">&#9670;&nbsp;</a></span>setBit() <span class="overload">[3/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void irutils::setBit </td>
<td>(</td>
<td class="paramtype">uint32_t *const&#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>position</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>on</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Alter the value of an Integer with the <code>position</code>th bit changed. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">data</td><td>A pointer to the 32-bit integer to be changed. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>Nr. of the bit to be changed. <code>0</code> is the LSB. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">on</td><td>Value to set the position'th bit to. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a9e7814e2274f02df0dac0106c293c487"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e7814e2274f02df0dac0106c293c487">&#9670;&nbsp;</a></span>setBit() <span class="overload">[4/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void irutils::setBit </td>
<td>(</td>
<td class="paramtype">uint64_t *const&#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>position</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>on</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Alter the value of an Integer with the <code>position</code>th bit changed. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">data</td><td>A pointer to the 64-bit integer to be changed. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>Nr. of the bit to be changed. <code>0</code> is the LSB. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">on</td><td>Value to set the position'th bit to. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac1b3de6e733d9c4d614a8239f5bd3220"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac1b3de6e733d9c4d614a8239f5bd3220">&#9670;&nbsp;</a></span>setBit() <span class="overload">[5/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void irutils::setBit </td>
<td>(</td>
<td class="paramtype">uint8_t *const&#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>position</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>on</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Alter the value of an Integer with the <code>position</code>th bit changed. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">data</td><td>A pointer to the 8-bit integer to be changed. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>Nr. of the bit to be changed. <code>0</code> is the LSB. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">on</td><td>Value to set the position'th bit to. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a3fd8b18a76f0ae8f730b4de55fc9486e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3fd8b18a76f0ae8f730b4de55fc9486e">&#9670;&nbsp;</a></span>setBits() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void irutils::setBits </td>
<td>(</td>
<td class="paramtype">uint32_t *const&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>nbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint32_t&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Alter an uint32_t value by overwriting an arbitary given number of bits. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">dst</td><td>A pointer to the value to be changed. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">offset</td><td>Nr. of bits from the Least Significant Bit to be ignored </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nbits</td><td>Nr of bits of data to be placed into the destination. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The value to be placed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a4dfb0984a9ea38602805987a7845839c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4dfb0984a9ea38602805987a7845839c">&#9670;&nbsp;</a></span>setBits() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void irutils::setBits </td>
<td>(</td>
<td class="paramtype">uint64_t *const&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>nbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint64_t&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Alter an uint64_t value by overwriting an arbitary given number of bits. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">dst</td><td>A pointer to the value to be changed. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">offset</td><td>Nr. of bits from the Least Significant Bit to be ignored </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nbits</td><td>Nr of bits of data to be placed into the destination. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The value to be placed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ab4f5e3eb26e111909ddc93a8b018ba78"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4f5e3eb26e111909ddc93a8b018ba78">&#9670;&nbsp;</a></span>setBits() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void irutils::setBits </td>
<td>(</td>
<td class="paramtype">uint8_t *const&#160;</td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>nbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Alter an uint8_t value by overwriting an arbitary given number of bits. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">dst</td><td>A pointer to the value to be changed. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">offset</td><td>Nr. of bits from the Least Significant Bit to be ignored </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nbits</td><td>Nr of bits of data to be placed into the destination. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The value to be placed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aeb5202fa0093ee6b7e07d4290229fbd2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeb5202fa0093ee6b7e07d4290229fbd2">&#9670;&nbsp;</a></span>sumNibbles() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t irutils::sumNibbles </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>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>init</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>nibbleonly</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sum all the nibbles together 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 to be summed. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">count</td><td>The number of nibbles to sum. Starts from LSB. Max of 16. </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>
<tr><td class="paramdir">[in]</td><td class="paramname">nibbleonly</td><td>true, the result is 4 bits. false, it's 8 bits. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The 4/8-bit calculated result of all the nibbles and init value. </dd></dl>
</div>
</div>
<a id="a4752ecc3eafa3ca2e13344a52519b343"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4752ecc3eafa3ca2e13344a52519b343">&#9670;&nbsp;</a></span>sumNibbles() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t irutils::sumNibbles </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 nibbles together in a series of bytes. </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="a534704a52b75acd46f687cc0a2b91bf1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a534704a52b75acd46f687cc0a2b91bf1">&#9670;&nbsp;</a></span>uint8ToBcd()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t irutils::uint8ToBcd </td>
<td>(</td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>integer</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert an Integer into a byte of Binary Coded Decimal(BCD). </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">integer</td><td>The number to convert. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An 8-bit BCD value. </dd></dl>
</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>