Sophie

Sophie

distrib > Mageia > 7 > armv7hl > by-pkgid > eb6f01499a5d4428f90019094419e1c5 > files > 333

liblirc-devel-0.10.1-7.mga7.armv7hl.rpm

<!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.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>LIRC libraries: /home/iurt/rpmbuild/BUILD/lirc-0.10.1/lib/ir_remote.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</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="projectlogo"><img alt="Logo" src="diode-2.gif"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">LIRC libraries
   </div>
   <div id="projectbrief">LinuxInfraredRemoteControl</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<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>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('ir__remote_8c_source.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">ir_remote.c</div>  </div>
</div><!--header-->
<div class="contents">
<a href="ir__remote_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/****************************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">** ir_remote.c *************************************************************</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">****************************************************************************</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">* ir_remote.c - sends and decodes the signals from IR remotes</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">* Copyright (C) 1996,97 Ralph Metzler (rjkm@thp.uni-koeln.de)</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">* Copyright (C) 1998 Christoph Bartelmus (lirc@bartelmus.de)</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#ifdef HAVE_CONFIG_H</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor"># include &lt;config.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;limits.h&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;sys/ioctl.h&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#ifdef HAVE_KERNEL_LIRC_H</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;linux/lirc.h&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &quot;media/lirc.h&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &quot;lirc/ir_remote.h&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &quot;lirc/driver.h&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &quot;lirc/release.h&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &quot;lirc/lirc_log.h&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="lirc__log_8h.html#abffd9aa4ab9bcfacdbb9d7728037114b">logchannel_t</a> logchannel = LOG_LIB;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structir__ncode.html">ir_ncode</a> NCODE_EOF = {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        <span class="stringliteral">&quot;__EOF&quot;</span>, <a class="code" href="lirc__config_8h.html#a510ecf0088b450b9aee39c8260fdb296">LIRC_EOF</a>, 1, NULL, NULL, NULL, 0</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;};</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> PACKET_EOF = <span class="stringliteral">&quot;0000000008000000 00 __EOF lirc\n&quot;</span>;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structir__remote.html">ir_remote</a> lirc_internal_remote = { <span class="stringliteral">&quot;lirc&quot;</span> };</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="keyword">struct </span><a class="code" href="structir__remote.html">ir_remote</a>* decoding = NULL;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="group__driver__api.html#ga474c489cabdaae4546ca0ac26ec9cd87">   59</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structir__remote.html">ir_remote</a>* <a class="code" href="group__driver__api.html#ga474c489cabdaae4546ca0ac26ec9cd87">last_remote</a> = NULL;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="group__driver__api.html#ga7bc28a85da7d0ccf4466708918f01dc4">   61</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structir__remote.html">ir_remote</a>* <a class="code" href="group__driver__api.html#ga7bc28a85da7d0ccf4466708918f01dc4">repeat_remote</a> = NULL;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="group__driver__api.html#ga2da0e0383db556d0e1ba7261763815c5">   63</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structir__ncode.html">ir_ncode</a>* <a class="code" href="group__driver__api.html#ga2da0e0383db556d0e1ba7261763815c5">repeat_code</a>;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> dyncodes = 0;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="group__driver__api.html#gac288bce2140d2066a3990a1b2e3317c5">   69</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structir__ncode.html">ir_ncode</a>* <a class="code" href="group__driver__api.html#gac288bce2140d2066a3990a1b2e3317c5">ncode_dup</a>(<span class="keyword">struct</span> <a class="code" href="structir__ncode.html">ir_ncode</a>* ncode)</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__ncode.html">ir_ncode</a>* new_ncode;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;        <span class="keywordtype">size_t</span> signal_size;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__code__node.html">ir_code_node</a>* node;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__code__node.html">ir_code_node</a>** node_ptr;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__code__node.html">ir_code_node</a>* new_node;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        new_ncode = (<span class="keyword">struct </span><a class="code" href="structir__ncode.html">ir_ncode</a>*)malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structir__ncode.html">ir_ncode</a>));</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        <span class="keywordflow">if</span> (new_ncode == NULL)</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;                <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        memcpy(new_ncode, ncode, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structir__ncode.html">ir_ncode</a>));</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        new_ncode-&gt;<a class="code" href="structir__ncode.html#ac28e8133cbc7aa22dbbc8ef722883d2b">name</a> = ncode-&gt;<a class="code" href="structir__ncode.html#ac28e8133cbc7aa22dbbc8ef722883d2b">name</a> == NULL ? NULL : strdup(ncode-&gt;<a class="code" href="structir__ncode.html#ac28e8133cbc7aa22dbbc8ef722883d2b">name</a>);</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        <span class="keywordflow">if</span> (ncode-&gt;<a class="code" href="structir__ncode.html#a46824261611491c5ff0b611cda1ec437">length</a> &gt; 0) {</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;                signal_size = ncode-&gt;<a class="code" href="structir__ncode.html#a46824261611491c5ff0b611cda1ec437">length</a> * <span class="keyword">sizeof</span>(lirc_t);</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;                new_ncode-&gt;<a class="code" href="structir__ncode.html#a6ff318262c9447b1e1fc4e944e29bf4a">signals</a> = (lirc_t*)malloc(signal_size);</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;                <span class="keywordflow">if</span> (new_ncode-&gt;<a class="code" href="structir__ncode.html#a6ff318262c9447b1e1fc4e944e29bf4a">signals</a> == NULL)</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;                        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;                memcpy(new_ncode-&gt;<a class="code" href="structir__ncode.html#a6ff318262c9447b1e1fc4e944e29bf4a">signals</a>, ncode-&gt;<a class="code" href="structir__ncode.html#a6ff318262c9447b1e1fc4e944e29bf4a">signals</a>, signal_size);</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;                new_ncode-&gt;<a class="code" href="structir__ncode.html#a6ff318262c9447b1e1fc4e944e29bf4a">signals</a> = NULL;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        }</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;        node_ptr = &amp;(new_ncode-&gt;<a class="code" href="structir__ncode.html#a0e80278912121f630d3b398959c4dad7">next</a>);</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        <span class="keywordflow">for</span> (node = ncode-&gt;<a class="code" href="structir__ncode.html#a0e80278912121f630d3b398959c4dad7">next</a>; node != NULL; node = node-&gt;next) {</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;                new_node = malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structir__code__node.html">ir_code_node</a>));</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;                memcpy(new_node, node, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structir__code__node.html">ir_code_node</a>));</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;                *node_ptr = new_node;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;                node_ptr = &amp;(new_node-&gt;next);</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;        }</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        *node_ptr = NULL;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <span class="keywordflow">return</span> new_ncode;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;}</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="group__driver__api.html#ga4477860d1f604548e032694de8f69c16">  104</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__driver__api.html#ga4477860d1f604548e032694de8f69c16">ncode_free</a>(<span class="keyword">struct</span> <a class="code" href="structir__ncode.html">ir_ncode</a>* ncode)</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;{</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__code__node.html">ir_code_node</a>* node;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__code__node.html">ir_code_node</a>* next;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        <span class="keywordflow">if</span> (ncode == NULL)</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        node = ncode-&gt;<a class="code" href="structir__ncode.html#a0e80278912121f630d3b398959c4dad7">next</a>;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;        <span class="keywordflow">while</span> (node != NULL) {</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;                next = node-&gt;next;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;                <span class="keywordflow">if</span> (node != NULL)</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;                        free(node);</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;                node = next;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        }</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        <span class="keywordflow">if</span> (ncode-&gt;<a class="code" href="structir__ncode.html#a6ff318262c9447b1e1fc4e944e29bf4a">signals</a> != NULL)</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;                free(ncode-&gt;<a class="code" href="structir__ncode.html#a6ff318262c9447b1e1fc4e944e29bf4a">signals</a>);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        free(ncode);</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;}</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="group__driver__api.html#ga8d5bc121b8582a690000bc8befe13080">  124</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__driver__api.html#ga8d5bc121b8582a690000bc8befe13080">ir_remote_init</a>(<span class="keywordtype">int</span> use_dyncodes)</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;{</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        dyncodes = use_dyncodes;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;}</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="keyword">static</span> lirc_t time_left(<span class="keyword">struct</span> timeval* current,</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;                        <span class="keyword">struct</span> timeval* last,</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;                        lirc_t          gap)</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;{</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> secs, diff;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        secs = current-&gt;tv_sec - last-&gt;tv_sec;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        diff = 1000000 * secs + current-&gt;tv_usec - last-&gt;tv_usec;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;        <span class="keywordflow">return</span> (lirc_t)(diff &lt; gap ? gap - diff : 0);</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;}</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> match_ir_code(<span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>* remote, <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a> a, <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a> b)</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;{</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        <span class="keywordflow">return</span> (remote-&gt;<a class="code" href="structir__remote.html#a739c26d88eb023d67353fa08dd076255">ignore_mask</a> | a) == (remote-&gt;<a class="code" href="structir__remote.html#a739c26d88eb023d67353fa08dd076255">ignore_mask</a> | b)</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;                || (remote-&gt;<a class="code" href="structir__remote.html#a739c26d88eb023d67353fa08dd076255">ignore_mask</a> | a) ==</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;                        (remote-&gt;<a class="code" href="structir__remote.html#a739c26d88eb023d67353fa08dd076255">ignore_mask</a> | (b ^ remote-&gt;<a class="code" href="structir__remote.html#ad1d35f0da36527d473c7d857231ec739">toggle_bit_mask</a>));</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;}</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="group__driver__api.html#ga19bab2135ca2b7f68dc0b2f8cde9863f">  156</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__driver__api.html#ga19bab2135ca2b7f68dc0b2f8cde9863f">get_frequency_range</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>*        remotes,</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;                         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>*                  min_freq,</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;                         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>*                  max_freq)</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;{</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;        <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structir__remote.html">ir_remote</a>* scan;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        <span class="comment">/* use remotes carefully, it may be changed on SIGHUP */</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;        scan = remotes;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;        <span class="keywordflow">if</span> (scan == NULL) {</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;                *min_freq = 0;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;                *max_freq = 0;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;                *min_freq = scan-&gt;<a class="code" href="structir__remote.html#a04eb04a7c2333f53ceb20ffef8d2ebc4">freq</a>;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;                *max_freq = scan-&gt;<a class="code" href="structir__remote.html#a04eb04a7c2333f53ceb20ffef8d2ebc4">freq</a>;</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;                scan = scan-&gt;next;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;        }</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;        <span class="keywordflow">while</span> (scan) {</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;                <span class="keywordflow">if</span> (scan-&gt;<a class="code" href="structir__remote.html#a04eb04a7c2333f53ceb20ffef8d2ebc4">freq</a> != 0) {</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;                        <span class="keywordflow">if</span> (scan-&gt;<a class="code" href="structir__remote.html#a04eb04a7c2333f53ceb20ffef8d2ebc4">freq</a> &gt; *max_freq)</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;                                *max_freq = scan-&gt;<a class="code" href="structir__remote.html#a04eb04a7c2333f53ceb20ffef8d2ebc4">freq</a>;</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;                        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (scan-&gt;<a class="code" href="structir__remote.html#a04eb04a7c2333f53ceb20ffef8d2ebc4">freq</a> &lt; *min_freq)</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;                                *min_freq = scan-&gt;<a class="code" href="structir__remote.html#a04eb04a7c2333f53ceb20ffef8d2ebc4">freq</a>;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;                }</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;                scan = scan-&gt;next;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        }</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;}</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="group__driver__api.html#ga1a1b6c86d0309f25ab5806a5f861692c">  193</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__driver__api.html#ga1a1b6c86d0309f25ab5806a5f861692c">get_filter_parameters</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>*      remotes,</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;                           lirc_t*                      max_gap_lengthp,</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;                           lirc_t*                      min_pulse_lengthp,</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;                           lirc_t*                      min_space_lengthp,</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                           lirc_t*                      max_pulse_lengthp,</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;                           lirc_t*                      max_space_lengthp)</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;{</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structir__remote.html">ir_remote</a>* scan = remotes;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;        lirc_t <a class="code" href="structir__remote.html#ae78acfc685ff2bc9559d45f1e4b702bb">max_gap_length</a> = 0;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;        lirc_t min_pulse_length = 0, min_space_length = 0;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;        lirc_t max_pulse_length = 0, max_space_length = 0;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        <span class="keywordflow">while</span> (scan) {</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;                lirc_t val;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;                val = upper_limit(scan, scan-&gt;<a class="code" href="structir__remote.html#ae78acfc685ff2bc9559d45f1e4b702bb">max_gap_length</a>);</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;                <span class="keywordflow">if</span> (val &gt; <a class="code" href="structir__remote.html#ae78acfc685ff2bc9559d45f1e4b702bb">max_gap_length</a>)</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;                        <a class="code" href="structir__remote.html#ae78acfc685ff2bc9559d45f1e4b702bb">max_gap_length</a> = val;</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;                val = lower_limit(scan, scan-&gt;min_pulse_length);</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;                <span class="keywordflow">if</span> (min_pulse_length == 0 || val &lt; min_pulse_length)</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;                        min_pulse_length = val;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;                val = lower_limit(scan, scan-&gt;min_space_length);</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;                <span class="keywordflow">if</span> (min_space_length == 0 || val &gt; min_space_length)</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;                        min_space_length = val;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;                val = upper_limit(scan, scan-&gt;max_pulse_length);</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;                <span class="keywordflow">if</span> (val &gt; max_pulse_length)</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;                        max_pulse_length = val;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;                val = upper_limit(scan, scan-&gt;max_space_length);</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                <span class="keywordflow">if</span> (val &gt; max_space_length)</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;                        max_space_length = val;</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;                scan = scan-&gt;next;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        }</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        *max_gap_lengthp = <a class="code" href="structir__remote.html#ae78acfc685ff2bc9559d45f1e4b702bb">max_gap_length</a>;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        *min_pulse_lengthp = min_pulse_length;</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;        *min_space_lengthp = min_space_length;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        *max_pulse_lengthp = max_pulse_length;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        *max_space_lengthp = max_space_length;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;}</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="group__driver__api.html#gaadf09b8ef4b71be00f8e53a39f70d315">  239</a></span>&#160;<span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structir__remote.html">ir_remote</a>* <a class="code" href="group__driver__api.html#gaadf09b8ef4b71be00f8e53a39f70d315">is_in_remotes</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>*   remotes,</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;                                      <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>*   remote)</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;{</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        <span class="keywordflow">while</span> (remotes != NULL) {</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;                <span class="keywordflow">if</span> (remotes == remote)</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;                        <span class="keywordflow">return</span> remote;</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;                remotes = remotes-&gt;next;</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;        }</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;}</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="group__driver__api.html#ga251129673cd73c5f869bb53c6c38a88f">  251</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structir__remote.html">ir_remote</a>* <a class="code" href="group__driver__api.html#ga251129673cd73c5f869bb53c6c38a88f">get_ir_remote</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>* remotes,</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;                                <span class="keyword">const</span> <span class="keywordtype">char</span>*             <a class="code" href="structir__remote.html#acd104de70d9169542de9c471befb0045">name</a>)</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;{</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;        <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structir__remote.html">ir_remote</a>* all;</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        <span class="comment">/* use remotes carefully, it may be changed on SIGHUP */</span></div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;        all = remotes;</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;        <span class="keywordflow">if</span> (strcmp(<a class="code" href="structir__remote.html#acd104de70d9169542de9c471befb0045">name</a>, <span class="stringliteral">&quot;lirc&quot;</span>) == 0)</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;                <span class="keywordflow">return</span> &amp;lirc_internal_remote;</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        <span class="keywordflow">while</span> (all) {</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;                <span class="keywordflow">if</span> (strcasecmp(all-&gt;<a class="code" href="structir__remote.html#acd104de70d9169542de9c471befb0045">name</a>, <a class="code" href="structir__remote.html#acd104de70d9169542de9c471befb0045">name</a>) == 0)</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;                        <span class="keywordflow">return</span> (<span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>*)all;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;                all = all-&gt;next;</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;        }</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;}</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="group__driver__api.html#gabac8048f405d0a78fcc01fa9ef1132df">  283</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__driver__api.html#gabac8048f405d0a78fcc01fa9ef1132df">map_code</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>*    remote,</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;             <span class="keyword">struct</span> <a class="code" href="structdecode__ctx__t.html">decode_ctx_t</a>*       ctx,</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;             <span class="keywordtype">int</span>                        pre_bits,</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;             <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a>                    pre,</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;             <span class="keywordtype">int</span>                        <a class="code" href="structir__remote.html#a66c874209817af89bc88503f61a76539">bits</a>,</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;             <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a>                    code,</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;             <span class="keywordtype">int</span>                        post_bits,</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;             <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a>                    post)</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;{</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;        <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a> all;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;        <span class="keywordflow">if</span> (pre_bits + <a class="code" href="structir__remote.html#a66c874209817af89bc88503f61a76539">bits</a> + post_bits != remote-&gt;<a class="code" href="structir__remote.html#ae5bfde45bb74a00d7ec53023f2fa6252">pre_data_bits</a> +</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;            remote-&gt;<a class="code" href="structir__remote.html#a66c874209817af89bc88503f61a76539">bits</a> + remote-&gt;<a class="code" href="structir__remote.html#a67432d0e91b257de5044ee47985cbb5b">post_data_bits</a>)</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;                <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;        all = (pre &amp; gen_mask(pre_bits));</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;        all &lt;&lt;= <a class="code" href="structir__remote.html#a66c874209817af89bc88503f61a76539">bits</a>;</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;        all |= (code &amp; gen_mask(<a class="code" href="structir__remote.html#a66c874209817af89bc88503f61a76539">bits</a>));</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;        all &lt;&lt;= post_bits;</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;        all |= (post &amp; gen_mask(post_bits));</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;        ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a81e997b57167363c5cc8db496a841165">post</a> = (all &amp; gen_mask(remote-&gt;<a class="code" href="structir__remote.html#a67432d0e91b257de5044ee47985cbb5b">post_data_bits</a>));</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;        all &gt;&gt;= remote-&gt;<a class="code" href="structir__remote.html#a67432d0e91b257de5044ee47985cbb5b">post_data_bits</a>;</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a> = (all &amp; gen_mask(remote-&gt;<a class="code" href="structir__remote.html#a66c874209817af89bc88503f61a76539">bits</a>));</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;        all &gt;&gt;= remote-&gt;<a class="code" href="structir__remote.html#a66c874209817af89bc88503f61a76539">bits</a>;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;        ctx-&gt;<a class="code" href="structdecode__ctx__t.html#ae52561bab1b135eda87baf242a1092a6">pre</a> = (all &amp; gen_mask(remote-&gt;<a class="code" href="structir__remote.html#ae5bfde45bb74a00d7ec53023f2fa6252">pre_data_bits</a>));</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;pre: %llx&quot;</span>, (uint64_t)(ctx-&gt;<a class="code" href="structdecode__ctx__t.html#ae52561bab1b135eda87baf242a1092a6">pre</a>));</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;code: %llx&quot;</span>, (uint64_t)(ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a>));</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;post: %llx&quot;</span>, (uint64_t)(ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a81e997b57167363c5cc8db496a841165">post</a>));</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;code:                   %016llx\n&quot;</span>, code);</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;        <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;}</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="group__driver__api.html#gac691a06cc99d8c914e2c7451407f245a">  329</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__driver__api.html#gac691a06cc99d8c914e2c7451407f245a">map_gap</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>*    remote,</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;             <span class="keyword">struct</span> <a class="code" href="structdecode__ctx__t.html">decode_ctx_t</a>*       ctx,</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;             <span class="keyword">const</span> <span class="keyword">struct</span> timeval*      start,</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;             <span class="keyword">const</span> <span class="keyword">struct</span> timeval*      last,</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;             lirc_t                     signal_length)</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;{</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;        <span class="comment">// Time gap (us) between a keypress on the remote control and</span></div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;        <span class="comment">// the next one.</span></div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;        lirc_t <a class="code" href="structir__remote.html#abde525f609dea108baab4b690c2b94e4">gap</a>;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        <span class="comment">// Check the time gap between the last keypress and this one.</span></div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        <span class="keywordflow">if</span> (start-&gt;tv_sec - last-&gt;tv_sec &gt;= 2) {</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;                <span class="comment">// Gap of 2 or more seconds: this is not a repeated keypress.</span></div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;                ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a7c9bcadb5d59fb05fdad3a0cdd9b1106">repeat_flag</a> = 0;</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;                <a class="code" href="structir__remote.html#abde525f609dea108baab4b690c2b94e4">gap</a> = 0;</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;                <span class="comment">// Calculate the time gap in microseconds.</span></div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;                <a class="code" href="structir__remote.html#abde525f609dea108baab4b690c2b94e4">gap</a> = time_elapsed(last, start);</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;                <span class="keywordflow">if</span> (expect_at_most(remote, <a class="code" href="structir__remote.html#abde525f609dea108baab4b690c2b94e4">gap</a>, remote-&gt;<a class="code" href="structir__remote.html#a2d289d49ef2ff113cbf52fd30e30fe5b">max_remaining_gap</a>)) {</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;                        <span class="comment">// The gap is shorter than a standard gap</span></div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;                        <span class="comment">// (with relative or aboslute tolerance): this</span></div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;                        <span class="comment">// is a repeated keypress.</span></div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;                        ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a7c9bcadb5d59fb05fdad3a0cdd9b1106">repeat_flag</a> = 1;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;                        <span class="comment">// Standard gap: this is a new keypress.</span></div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;                        ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a7c9bcadb5d59fb05fdad3a0cdd9b1106">repeat_flag</a> = 0;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;                }</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;        }</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;        <span class="comment">// Calculate extimated time gap remaining for the next code.</span></div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        <span class="keywordflow">if</span> (is_const(remote)) {</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;                <span class="comment">// The sum (signal_length + gap) is always constant</span></div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;                <span class="comment">// so the gap is shorter when the code is longer.</span></div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;                <span class="keywordflow">if</span> (min_gap(remote) &gt; signal_length) {</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;                        ctx-&gt;<a class="code" href="structdecode__ctx__t.html#aa76a228985ce90fddd03399aceacadb5">min_remaining_gap</a> = min_gap(remote) -</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;                                                 signal_length;</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;                        ctx-&gt;<a class="code" href="structdecode__ctx__t.html#ab7221813c357026846919c726cf43d73">max_remaining_gap</a> = max_gap(remote) -</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;                                                 signal_length;</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;                        ctx-&gt;<a class="code" href="structdecode__ctx__t.html#aa76a228985ce90fddd03399aceacadb5">min_remaining_gap</a> = 0;</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;                        <span class="keywordflow">if</span> (max_gap(remote) &gt; signal_length)</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;                                ctx-&gt;<a class="code" href="structdecode__ctx__t.html#ab7221813c357026846919c726cf43d73">max_remaining_gap</a> = max_gap(remote) -</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;                                                         signal_length;</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;                        <span class="keywordflow">else</span></div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;                                ctx-&gt;<a class="code" href="structdecode__ctx__t.html#ab7221813c357026846919c726cf43d73">max_remaining_gap</a> = 0;</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;                }</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;                <span class="comment">// The gap after the signal is always constant.</span></div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;                <span class="comment">// This is the case of Kanam Accent serial remote.</span></div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;                ctx-&gt;<a class="code" href="structdecode__ctx__t.html#aa76a228985ce90fddd03399aceacadb5">min_remaining_gap</a> = min_gap(remote);</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;                ctx-&gt;<a class="code" href="structdecode__ctx__t.html#ab7221813c357026846919c726cf43d73">max_remaining_gap</a> = max_gap(remote);</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;        }</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;repeat_flagp:           %d&quot;</span>, (ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a7c9bcadb5d59fb05fdad3a0cdd9b1106">repeat_flag</a>));</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;is_const(remote):       %d&quot;</span>, is_const(remote));</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;remote-&gt;gap range:      %lu %lu&quot;</span>, (uint32_t)min_gap(</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;                          remote), (uint32_t)max_gap(remote));</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;remote-&gt;remaining_gap:  %lu %lu&quot;</span>,</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;                  (uint32_t)remote-&gt;<a class="code" href="structir__remote.html#aec8b4e8638d32a3542671b91a344806f">min_remaining_gap</a>,</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;                  (uint32_t)remote-&gt;<a class="code" href="structir__remote.html#a2d289d49ef2ff113cbf52fd30e30fe5b">max_remaining_gap</a>);</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;signal length:          %lu&quot;</span>, (uint32_t)signal_length);</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;gap:                    %lu&quot;</span>, (uint32_t)<a class="code" href="structir__remote.html#abde525f609dea108baab4b690c2b94e4">gap</a>);</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;extim. remaining_gap:   %lu %lu&quot;</span>,</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;                  (uint32_t)(ctx-&gt;<a class="code" href="structdecode__ctx__t.html#aa76a228985ce90fddd03399aceacadb5">min_remaining_gap</a>),</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;                  (uint32_t)(ctx-&gt;<a class="code" href="structdecode__ctx__t.html#ab7221813c357026846919c726cf43d73">max_remaining_gap</a>));</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;}</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="group__driver__api.html#gafaa7cb5587a3c58e3e825411b966738a">  397</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structir__ncode.html">ir_ncode</a>* <a class="code" href="group__driver__api.html#gafaa7cb5587a3c58e3e825411b966738a">get_code_by_name</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>*       remote,</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;                                  <span class="keyword">const</span> <span class="keywordtype">char</span>*                   <a class="code" href="structir__ncode.html#ac28e8133cbc7aa22dbbc8ef722883d2b">name</a>)</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;{</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;        <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structir__ncode.html">ir_ncode</a>* all;</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;        all = remote-&gt;codes;</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;        <span class="keywordflow">if</span> (all == NULL)</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;                <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;        <span class="keywordflow">if</span> (strcmp(remote-&gt;<a class="code" href="structir__remote.html#acd104de70d9169542de9c471befb0045">name</a>, <span class="stringliteral">&quot;lirc&quot;</span>) == 0)</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;                <span class="keywordflow">return</span> strcmp(<a class="code" href="structir__ncode.html#ac28e8133cbc7aa22dbbc8ef722883d2b">name</a>, <span class="stringliteral">&quot;__EOF&quot;</span>) == 0 ? &amp;NCODE_EOF : 0;</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;        <span class="keywordflow">while</span> (all-&gt;<a class="code" href="structir__ncode.html#ac28e8133cbc7aa22dbbc8ef722883d2b">name</a> != NULL) {</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;                <span class="keywordflow">if</span> (strcasecmp(all-&gt;<a class="code" href="structir__ncode.html#ac28e8133cbc7aa22dbbc8ef722883d2b">name</a>, <a class="code" href="structir__ncode.html#ac28e8133cbc7aa22dbbc8ef722883d2b">name</a>) == 0)</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;                        <span class="keywordflow">return</span> (<span class="keyword">struct</span> <a class="code" href="structir__ncode.html">ir_ncode</a>*)all;</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;                all++;</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;        }</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;}</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;<span class="comment">/* find longest matching sequence */</span></div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;<span class="keywordtype">void</span> find_longest_match(<span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>*       remote,</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;                        <span class="keyword">struct</span> <a class="code" href="structir__ncode.html">ir_ncode</a>*        codes,</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;                        <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a>                 all,</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;                        <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a>*                next_all,</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;                        <span class="keywordtype">int</span>                     have_code,</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;                        <span class="keyword">struct</span> <a class="code" href="structir__ncode.html">ir_ncode</a>**       found,</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;                        <span class="keywordtype">int</span>*                    found_code)</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;{</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__code__node.html">ir_code_node</a>* search;</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__code__node.html">ir_code_node</a>* prev;</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__code__node.html">ir_code_node</a>* next;</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;        <span class="keywordtype">int</span> flag = 1;</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;        <span class="keywordtype">int</span> sequence_match = 0;</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;        search = codes-&gt;<a class="code" href="structir__ncode.html#a0e80278912121f630d3b398959c4dad7">next</a>;</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;        <span class="keywordflow">if</span> (search == NULL</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;            || (codes-&gt;<a class="code" href="structir__ncode.html#a0e80278912121f630d3b398959c4dad7">next</a> != NULL &amp;&amp; codes-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> == NULL)) {</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;                codes-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> = NULL;</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;        }</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;        <span class="keywordflow">while</span> (search != codes-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a>-&gt;next) {</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;                prev = NULL;    <span class="comment">/* means codes-&gt;code */</span></div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;                next = search;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;                <span class="keywordflow">while</span> (next != codes-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a>) {</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;                        <span class="keywordflow">if</span> (get_ir_code(codes, prev)</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;                            != get_ir_code(codes, next)) {</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;                                flag = 0;</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;                                <span class="keywordflow">break</span>;</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;                        }</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;                        prev = get_next_ir_code_node(codes, prev);</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;                        next = get_next_ir_code_node(codes, next);</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;                }</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;                <span class="keywordflow">if</span> (flag == 1) {</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;                        *next_all = gen_ir_code(remote,</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;                                                remote-&gt;<a class="code" href="structir__remote.html#a54cf93d6a6ea5fa37c4b17ecad8b7b4b">pre_data</a>,</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;                                                get_ir_code(codes, prev),</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;                                                remote-&gt;<a class="code" href="structir__remote.html#a96f9c35cff5a927c8fb76c5a8a240238">post_data</a>);</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;                        <span class="keywordflow">if</span> (match_ir_code(remote, *next_all, all)) {</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;                                codes-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> =</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;                                        get_next_ir_code_node(codes, prev);</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;                                sequence_match = 1;</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;                                *found_code = 1;</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;                                <span class="keywordflow">if</span> (!have_code)</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;                                        *found = codes;</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;                                <span class="keywordflow">break</span>;</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;                        }</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;                }</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;                search = search-&gt;next;</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;        }</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;        <span class="keywordflow">if</span> (!sequence_match)</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;                codes-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> = NULL;</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;}</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structir__ncode.html">ir_ncode</a>* get_code(<span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>*      remote,</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;                                 <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a>                pre,</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;                                 <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a>                <a class="code" href="structir__ncode.html#a17ca9e939fd5742de3ed6e29bdc68e8d">code</a>,</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;                                 <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a>                post,</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;                                 <span class="keywordtype">int</span>*                   repeat_flag,</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;                                 <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a>*               toggle_bit_mask_statep)</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;{</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;        <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a> pre_mask, code_mask, post_mask, toggle_bit_mask_state, all;</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;        <span class="keywordtype">int</span> found_code, have_code;</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__ncode.html">ir_ncode</a>* codes;</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__ncode.html">ir_ncode</a>* found;</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;        pre_mask = code_mask = post_mask = 0;</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;        <span class="keywordflow">if</span> (has_toggle_bit_mask(remote)) {</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;                pre_mask = remote-&gt;<a class="code" href="structir__remote.html#ad1d35f0da36527d473c7d857231ec739">toggle_bit_mask</a> &gt;&gt;</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;                           (remote-&gt;<a class="code" href="structir__remote.html#a66c874209817af89bc88503f61a76539">bits</a> + remote-&gt;<a class="code" href="structir__remote.html#a67432d0e91b257de5044ee47985cbb5b">post_data_bits</a>);</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;                post_mask = remote-&gt;<a class="code" href="structir__remote.html#ad1d35f0da36527d473c7d857231ec739">toggle_bit_mask</a> &amp; gen_mask(</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;                        remote-&gt;<a class="code" href="structir__remote.html#a67432d0e91b257de5044ee47985cbb5b">post_data_bits</a>);</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;        }</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;        <span class="keywordflow">if</span> (has_ignore_mask(remote)) {</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;                pre_mask |= remote-&gt;<a class="code" href="structir__remote.html#a739c26d88eb023d67353fa08dd076255">ignore_mask</a> &gt;&gt;</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;                            (remote-&gt;<a class="code" href="structir__remote.html#a66c874209817af89bc88503f61a76539">bits</a> + remote-&gt;<a class="code" href="structir__remote.html#a67432d0e91b257de5044ee47985cbb5b">post_data_bits</a>);</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;                post_mask |= remote-&gt;<a class="code" href="structir__remote.html#a739c26d88eb023d67353fa08dd076255">ignore_mask</a> &amp; gen_mask(</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;                        remote-&gt;<a class="code" href="structir__remote.html#a67432d0e91b257de5044ee47985cbb5b">post_data_bits</a>);</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;        }</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;        <span class="keywordflow">if</span> (has_toggle_mask(remote) &amp;&amp; remote-&gt;toggle_mask_state % 2) {</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;                <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a>* affected;</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;                <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a> mask;</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;                <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a> mask_bit;</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;                <span class="keywordtype">int</span> bit, current_bit;</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;                affected = &amp;post;</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;                mask = remote-&gt;<a class="code" href="structir__remote.html#a9744aba55e393727c08815e548a9f836">toggle_mask</a>;</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;                <span class="keywordflow">for</span> (bit = current_bit = 0; bit &lt; bit_count(remote);</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;                     bit++, current_bit++) {</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;                        <span class="keywordflow">if</span> (bit == remote-&gt;<a class="code" href="structir__remote.html#a67432d0e91b257de5044ee47985cbb5b">post_data_bits</a>) {</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;                                affected = &amp;<a class="code" href="structir__ncode.html#a17ca9e939fd5742de3ed6e29bdc68e8d">code</a>;</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;                                current_bit = 0;</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;                        }</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;                        <span class="keywordflow">if</span> (bit == remote-&gt;<a class="code" href="structir__remote.html#a67432d0e91b257de5044ee47985cbb5b">post_data_bits</a> + remote-&gt;<a class="code" href="structir__remote.html#a66c874209817af89bc88503f61a76539">bits</a>) {</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;                                affected = &amp;pre;</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;                                current_bit = 0;</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;                        }</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;                        mask_bit = mask &amp; 1;</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;                        (*affected) ^= (mask_bit &lt;&lt; current_bit);</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;                        mask &gt;&gt;= 1;</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;                }</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;        }</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;        <span class="keywordflow">if</span> (has_pre(remote)) {</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;                <span class="keywordflow">if</span> ((pre | pre_mask) != (remote-&gt;<a class="code" href="structir__remote.html#a54cf93d6a6ea5fa37c4b17ecad8b7b4b">pre_data</a> | pre_mask)) {</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;                        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;bad pre data&quot;</span>);</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;                        <a class="code" href="lirc__log_8h.html#aa28b268ea240f30ce6ae3bcd5492bd31">log_trace1</a>(<span class="stringliteral">&quot;%llx %llx&quot;</span>, pre, remote-&gt;<a class="code" href="structir__remote.html#a54cf93d6a6ea5fa37c4b17ecad8b7b4b">pre_data</a>);</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;                        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;                }</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;                <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;pre&quot;</span>);</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;        }</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;        <span class="keywordflow">if</span> (has_post(remote)) {</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;                <span class="keywordflow">if</span> ((post | post_mask) != (remote-&gt;<a class="code" href="structir__remote.html#a96f9c35cff5a927c8fb76c5a8a240238">post_data</a> | post_mask)) {</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;                        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;bad post data&quot;</span>);</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;                        <a class="code" href="lirc__log_8h.html#aa28b268ea240f30ce6ae3bcd5492bd31">log_trace1</a>(<span class="stringliteral">&quot;%llx %llx&quot;</span>, post, remote-&gt;<a class="code" href="structir__remote.html#a96f9c35cff5a927c8fb76c5a8a240238">post_data</a>);</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;                        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;                }</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;                <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;post&quot;</span>);</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;        }</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;        all = gen_ir_code(remote, pre, <a class="code" href="structir__ncode.html#a17ca9e939fd5742de3ed6e29bdc68e8d">code</a>, post);</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;        <span class="keywordflow">if</span> (*repeat_flag &amp;&amp; has_repeat_mask(remote))</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;                all ^= remote-&gt;<a class="code" href="structir__remote.html#a47f22b4a2e69b0d90ae6ad61960076b3">repeat_mask</a>;</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;        toggle_bit_mask_state = all &amp; remote-&gt;<a class="code" href="structir__remote.html#ad1d35f0da36527d473c7d857231ec739">toggle_bit_mask</a>;</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;        found = NULL;</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;        found_code = 0;</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;        have_code = 0;</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;        codes = remote-&gt;codes;</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;        <span class="keywordflow">if</span> (codes != NULL) {</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;                <span class="keywordflow">while</span> (codes-&gt;<a class="code" href="structir__ncode.html#ac28e8133cbc7aa22dbbc8ef722883d2b">name</a> != NULL) {</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;                        <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a> next_all;</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;                        next_all = gen_ir_code(remote,</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;                                               remote-&gt;<a class="code" href="structir__remote.html#a54cf93d6a6ea5fa37c4b17ecad8b7b4b">pre_data</a>,</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;                                               get_ir_code(codes,</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;                                                           codes-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a>),</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;                                               remote-&gt;<a class="code" href="structir__remote.html#a96f9c35cff5a927c8fb76c5a8a240238">post_data</a>);</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;                        <span class="keywordflow">if</span> (match_ir_code(remote, next_all, all) ||</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;                            (*repeat_flag &amp;&amp;</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;                             has_repeat_mask(remote) &amp;&amp;</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;                             match_ir_code(remote,</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;                                           next_all,</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;                                           all ^ remote-&gt;<a class="code" href="structir__remote.html#a47f22b4a2e69b0d90ae6ad61960076b3">repeat_mask</a>))) {</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;                                found_code = 1;</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;                                <span class="keywordflow">if</span> (codes-&gt;<a class="code" href="structir__ncode.html#a0e80278912121f630d3b398959c4dad7">next</a> != NULL) {</div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;                                        <span class="keywordflow">if</span> (codes-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> == NULL)</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;                                                codes-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> = codes-&gt;<a class="code" href="structir__ncode.html#a0e80278912121f630d3b398959c4dad7">next</a>;</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;                                        <span class="keywordflow">else</span></div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;                                                codes-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> =</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;                                                        codes-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a>-&gt;next;</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;                                }</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;                                <span class="keywordflow">if</span> (!have_code) {</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;                                        found = codes;</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;                                        <span class="keywordflow">if</span> (codes-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> == NULL)</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;                                                have_code = 1;</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;                                }</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;                        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;                                find_longest_match(remote,</div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;                                                   codes,</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;                                                   all,</div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;                                                   &amp;next_all,</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;                                                   have_code,</div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;                                                   &amp;found,</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;                                                   &amp;found_code);</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;                        }</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;                        codes++;</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;                }</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;        }</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;        <span class="keywordflow">if</span> (!found_code &amp;&amp; dyncodes) {</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;                <span class="keywordflow">if</span> (remote-&gt;<a class="code" href="structir__remote.html#a250d88b2da87c39fc420714afc93c7f6">dyncodes</a>[remote-&gt;<a class="code" href="structir__remote.html#ae8172a416ed4f0481f61aaee32b3803c">dyncode</a>].<a class="code" href="structir__ncode.html#a17ca9e939fd5742de3ed6e29bdc68e8d">code</a> != <a class="code" href="structir__ncode.html#a17ca9e939fd5742de3ed6e29bdc68e8d">code</a>) {</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;                        remote-&gt;<a class="code" href="structir__remote.html#ae8172a416ed4f0481f61aaee32b3803c">dyncode</a>++;</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;                        remote-&gt;<a class="code" href="structir__remote.html#ae8172a416ed4f0481f61aaee32b3803c">dyncode</a> %= 2;</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;                }</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;                remote-&gt;<a class="code" href="structir__remote.html#a250d88b2da87c39fc420714afc93c7f6">dyncodes</a>[remote-&gt;<a class="code" href="structir__remote.html#ae8172a416ed4f0481f61aaee32b3803c">dyncode</a>].<a class="code" href="structir__ncode.html#a17ca9e939fd5742de3ed6e29bdc68e8d">code</a> = <a class="code" href="structir__ncode.html#a17ca9e939fd5742de3ed6e29bdc68e8d">code</a>;</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;                found = &amp;(remote-&gt;<a class="code" href="structir__remote.html#a250d88b2da87c39fc420714afc93c7f6">dyncodes</a>[remote-&gt;<a class="code" href="structir__remote.html#ae8172a416ed4f0481f61aaee32b3803c">dyncode</a>]);</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;                found_code = 1;</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;        }</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;        <span class="keywordflow">if</span> (found_code &amp;&amp; found != NULL &amp;&amp; has_toggle_mask(remote)) {</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;                <span class="keywordflow">if</span> (!(remote-&gt;toggle_mask_state % 2)) {</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;                        remote-&gt;<a class="code" href="structir__remote.html#ac80cecb60d0e4e77b01c3044df9d6713">toggle_code</a> = found;</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;                        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;toggle_mask_start&quot;</span>);</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;                        <span class="keywordflow">if</span> (found != remote-&gt;<a class="code" href="structir__remote.html#ac80cecb60d0e4e77b01c3044df9d6713">toggle_code</a>) {</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;                                remote-&gt;<a class="code" href="structir__remote.html#ac80cecb60d0e4e77b01c3044df9d6713">toggle_code</a> = NULL;</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;                                <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;                        }</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;                        remote-&gt;<a class="code" href="structir__remote.html#ac80cecb60d0e4e77b01c3044df9d6713">toggle_code</a> = NULL;</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;                }</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;        }</div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;        *toggle_bit_mask_statep = toggle_bit_mask_state;</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;        <span class="keywordflow">return</span> found;</div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;}</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;<span class="keyword">static</span> uint64_t set_code(<span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>*              remote,</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;                      <span class="keyword">struct</span> <a class="code" href="structir__ncode.html">ir_ncode</a>*          found,</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;                      <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a>                   toggle_bit_mask_state,</div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;                      <span class="keyword">struct</span> <a class="code" href="structdecode__ctx__t.html">decode_ctx_t</a>*      ctx)</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;{</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;        <span class="keyword">struct </span>timeval current;</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;        <span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structir__remote.html">ir_remote</a>* last_decoded = NULL;</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;found: %s&quot;</span>, found-&gt;<a class="code" href="structir__ncode.html#ac28e8133cbc7aa22dbbc8ef722883d2b">name</a>);</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;        gettimeofday(&amp;current, NULL);</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;%lx %lx %lx %d %d %d %d %d %d %d&quot;</span>,</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;                  remote, <a class="code" href="group__driver__api.html#ga474c489cabdaae4546ca0ac26ec9cd87">last_remote</a>, last_decoded,</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;                  remote == last_decoded,</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;                  found == remote-&gt;<a class="code" href="structir__remote.html#ac6557d868466bb5d2722b028bfe62d8c">last_code</a>, found-&gt;<a class="code" href="structir__ncode.html#a0e80278912121f630d3b398959c4dad7">next</a> != NULL,</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;                  found-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> != NULL, ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a7c9bcadb5d59fb05fdad3a0cdd9b1106">repeat_flag</a>,</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;                  time_elapsed(&amp;remote-&gt;<a class="code" href="structir__remote.html#a93a28c38d457232d6ab2310487b0f00e">last_send</a>,</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;                               &amp;current) &lt; 1000000,</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;                  (!has_toggle_bit_mask(remote)</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;                   ||</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;                   toggle_bit_mask_state ==</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;                   remote</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;                   -&gt;toggle_bit_mask_state));</div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;        <span class="keywordflow">if</span> (remote-&gt;<a class="code" href="structir__remote.html#a783c26d5860269f673cb0b5506332560">release_detected</a>) {</div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;                remote-&gt;<a class="code" href="structir__remote.html#a783c26d5860269f673cb0b5506332560">release_detected</a> = 0;</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;                <span class="keywordflow">if</span> (ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a7c9bcadb5d59fb05fdad3a0cdd9b1106">repeat_flag</a>)</div><div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;                        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(</div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;                          <span class="stringliteral">&quot;repeat indicated although release was detected before&quot;</span>);</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;                ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a7c9bcadb5d59fb05fdad3a0cdd9b1106">repeat_flag</a> = 0;</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;        }</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;        <span class="keywordflow">if</span> (remote == last_decoded &amp;&amp;</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;            (found == remote-&gt;<a class="code" href="structir__remote.html#ac6557d868466bb5d2722b028bfe62d8c">last_code</a></div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;             || (found-&gt;<a class="code" href="structir__ncode.html#a0e80278912121f630d3b398959c4dad7">next</a> != NULL &amp;&amp; found-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> != NULL))</div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;            &amp;&amp; ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a7c9bcadb5d59fb05fdad3a0cdd9b1106">repeat_flag</a></div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;            &amp;&amp; time_elapsed(&amp;remote-&gt;<a class="code" href="structir__remote.html#a93a28c38d457232d6ab2310487b0f00e">last_send</a>, &amp;current) &lt; 1000000</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;            &amp;&amp; (!has_toggle_bit_mask(remote)</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;                || toggle_bit_mask_state == remote-&gt;toggle_bit_mask_state)) {</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;                <span class="keywordflow">if</span> (has_toggle_mask(remote)) {</div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;                        remote-&gt;toggle_mask_state++;</div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;                        <span class="keywordflow">if</span> (remote-&gt;toggle_mask_state == 4) {</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;                                remote-&gt;reps++;</div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;                                remote-&gt;toggle_mask_state = 2;</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;                        }</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (found-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> == NULL) {</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;                        remote-&gt;reps++;</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;                }</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;                <span class="keywordflow">if</span> (found-&gt;<a class="code" href="structir__ncode.html#a0e80278912121f630d3b398959c4dad7">next</a> != NULL &amp;&amp; found-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> == NULL)</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;                        remote-&gt;reps = 1;</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;                        remote-&gt;reps = 0;</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;                <span class="keywordflow">if</span> (has_toggle_mask(remote)) {</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;                        remote-&gt;toggle_mask_state = 1;</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;                        remote-&gt;<a class="code" href="structir__remote.html#ac80cecb60d0e4e77b01c3044df9d6713">toggle_code</a> = found;</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;                }</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;                <span class="keywordflow">if</span> (has_toggle_bit_mask(remote))</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;                        remote-&gt;toggle_bit_mask_state = toggle_bit_mask_state;</div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;        }</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;        <a class="code" href="group__driver__api.html#ga474c489cabdaae4546ca0ac26ec9cd87">last_remote</a> = remote;</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;        last_decoded = remote;</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;        <span class="keywordflow">if</span> (found-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> == NULL)</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;                remote-&gt;<a class="code" href="structir__remote.html#ac6557d868466bb5d2722b028bfe62d8c">last_code</a> = found;</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;        remote-&gt;<a class="code" href="structir__remote.html#a93a28c38d457232d6ab2310487b0f00e">last_send</a> = current;</div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;        remote-&gt;<a class="code" href="structir__remote.html#aec8b4e8638d32a3542671b91a344806f">min_remaining_gap</a> = ctx-&gt;<a class="code" href="structdecode__ctx__t.html#aa76a228985ce90fddd03399aceacadb5">min_remaining_gap</a>;</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;        remote-&gt;<a class="code" href="structir__remote.html#a2d289d49ef2ff113cbf52fd30e30fe5b">max_remaining_gap</a> = ctx-&gt;<a class="code" href="structdecode__ctx__t.html#ab7221813c357026846919c726cf43d73">max_remaining_gap</a>;</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;        ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a> = 0;</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;        <span class="keywordflow">if</span> (has_pre(remote)) {</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;                ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a> |= remote-&gt;<a class="code" href="structir__remote.html#a54cf93d6a6ea5fa37c4b17ecad8b7b4b">pre_data</a>;</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;                ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a> = ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a> &lt;&lt; remote-&gt;<a class="code" href="structir__remote.html#a66c874209817af89bc88503f61a76539">bits</a>;</div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;        }</div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;        ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a> |= found-&gt;<a class="code" href="structir__ncode.html#a17ca9e939fd5742de3ed6e29bdc68e8d">code</a>;</div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;        <span class="keywordflow">if</span> (has_post(remote)) {</div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;                ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a> = ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a> &lt;&lt; remote-&gt;<a class="code" href="structir__remote.html#a67432d0e91b257de5044ee47985cbb5b">post_data_bits</a>;</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;                ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a> |= remote-&gt;<a class="code" href="structir__remote.html#a96f9c35cff5a927c8fb76c5a8a240238">post_data</a>;</div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;        }</div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;        <span class="keywordflow">if</span> (remote-&gt;<a class="code" href="structir__remote.html#a9ac03eb6d4cee793010b00fe434aa985">flags</a> &amp; <a class="code" href="ir__remote__types_8h.html#a4810ea9a08167df9744ad0d4ed381496">COMPAT_REVERSE</a>)</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;                <span class="comment">/* actually this is wrong: pre, code and post should</span></div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;<span class="comment">                 * be rotated separately but we have to stay</span></div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;<span class="comment">                 * compatible with older software</span></div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;<span class="comment">                 */</span></div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;                ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a> = reverse(ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a>, bit_count(remote));</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;        <span class="keywordflow">return</span> ctx-&gt;<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a>;</div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;}</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;</div><div class="line"><a name="l00713"></a><span class="lineno"><a class="line" href="group__driver__api.html#ga04461705747fd8521d369ee96ed762fe">  713</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__driver__api.html#ga04461705747fd8521d369ee96ed762fe">write_message</a>(<span class="keywordtype">char</span>*         buffer,</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;                  <span class="keywordtype">size_t</span>        size,</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;                  <span class="keyword">const</span> <span class="keywordtype">char</span>*   remote_name,</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;                  <span class="keyword">const</span> <span class="keywordtype">char</span>*   button_name,</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;                  <span class="keyword">const</span> <span class="keywordtype">char</span>*   button_suffix,</div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;                  <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a>       code,</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;                  <span class="keywordtype">int</span>           reps)</div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;</div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;{</div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;        <span class="keywordtype">int</span> len;</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;</div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;        len = snprintf(buffer, size, <span class="stringliteral">&quot;%016llx %02x %s%s %s\n&quot;</span>,</div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;                       (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span>)code, reps, button_name,</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;                       button_suffix != NULL ? button_suffix : <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;                       remote_name);</div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;        <span class="keywordflow">return</span> len;</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;}</div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;</div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;</div><div class="line"><a name="l00733"></a><span class="lineno"><a class="line" href="group__driver__api.html#gae334c37e486ce414abf272d4850df6c4">  733</a></span>&#160;<span class="keywordtype">char</span>* <a class="code" href="group__driver__api.html#gae334c37e486ce414abf272d4850df6c4">decode_all</a>(<span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>* remotes)</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;{</div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__remote.html">ir_remote</a>* remote;</div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;        <span class="keyword">static</span> <span class="keywordtype">char</span> message[<a class="code" href="lirc__config_8h.html#aebdc7d8ca8e25ed8efc90bb88ef7ef5b">PACKET_SIZE</a> + 1];</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__ncode.html">ir_ncode</a>* ncode;</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;        <a class="code" href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a> toggle_bit_mask_state;</div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__remote.html">ir_remote</a>* scan;</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;        <span class="keyword">struct </span><a class="code" href="structir__ncode.html">ir_ncode</a>* scan_ncode;</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;        <span class="keyword">struct </span><a class="code" href="structdecode__ctx__t.html">decode_ctx_t</a> ctx;</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;        <span class="comment">/* use remotes carefully, it may be changed on SIGHUP */</span></div><div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;        decoding = remote = remotes;</div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;        <span class="keywordflow">while</span> (remote) {</div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;                <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;trying \&quot;%s\&quot; remote&quot;</span>, remote-&gt;<a class="code" href="structir__remote.html#acd104de70d9169542de9c471befb0045">name</a>);</div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="driver_8c.html#a656110ac202d464ae49251c9599baf66">curr_driver</a>-&gt;<a class="code" href="structdriver.html#a4c8fb1671a48fb248bc8dafa90cded15">decode_func</a>(remote, &amp;ctx)) {</div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;                        ncode = get_code(remote,</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;                                         ctx.<a class="code" href="structdecode__ctx__t.html#ae52561bab1b135eda87baf242a1092a6">pre</a>, ctx.<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a>, ctx.<a class="code" href="structdecode__ctx__t.html#a81e997b57167363c5cc8db496a841165">post</a>,</div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;                                         &amp;ctx.<a class="code" href="structdecode__ctx__t.html#a7c9bcadb5d59fb05fdad3a0cdd9b1106">repeat_flag</a>,</div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;                                         &amp;toggle_bit_mask_state);</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;                        <span class="keywordflow">if</span> (ncode) {</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;                                <span class="keywordtype">int</span> len;</div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;                                <span class="keywordtype">int</span> reps;</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;                                <span class="keywordflow">if</span> (ncode == &amp;NCODE_EOF) {</div><div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;                                        <a class="code" href="lirc__log_8h.html#a0e37223ab9f5df7af8cb2a59b7c4dc18">log_debug</a>(<span class="stringliteral">&quot;decode all: returning EOF&quot;</span>);</div><div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;                                        strncpy(message,</div><div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;                                                PACKET_EOF, <span class="keyword">sizeof</span>(message));</div><div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;                                        <span class="keywordflow">return</span> message;</div><div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;                                }</div><div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;                                ctx.<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a> = set_code(remote,</div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;                                                    ncode,</div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;                                                    toggle_bit_mask_state,</div><div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;                                                    &amp;ctx);</div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;                                <span class="keywordflow">if</span> ((has_toggle_mask(remote)</div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;                                     &amp;&amp; remote-&gt;toggle_mask_state % 2)</div><div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;                                    || ncode-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> != NULL) {</div><div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;                                        decoding = NULL;</div><div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;                                        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;                                }</div><div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;</div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;                                <span class="keywordflow">for</span> (scan = decoding;</div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;                                     scan != NULL;</div><div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;                                     scan = scan-&gt;next)</div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;                                        <span class="keywordflow">for</span> (scan_ncode = scan-&gt;codes;</div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;                                             scan_ncode-&gt;<a class="code" href="structir__ncode.html#ac28e8133cbc7aa22dbbc8ef722883d2b">name</a> != NULL;</div><div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;                                             scan_ncode++)</div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;                                                scan_ncode-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> = NULL;</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;                                <span class="keywordflow">if</span> (is_xmp(remote))</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;                                        remote-&gt;<a class="code" href="structir__remote.html#ac6557d868466bb5d2722b028bfe62d8c">last_code</a>-&gt;<a class="code" href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">current</a> =</div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;                                                remote-&gt;<a class="code" href="structir__remote.html#ac6557d868466bb5d2722b028bfe62d8c">last_code</a>-&gt;<a class="code" href="structir__ncode.html#a0e80278912121f630d3b398959c4dad7">next</a>;</div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;                                reps = remote-&gt;reps - (ncode-&gt;<a class="code" href="structir__ncode.html#a0e80278912121f630d3b398959c4dad7">next</a> ? 1 : 0);</div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;                                <span class="keywordflow">if</span> (reps &gt; 0) {</div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;                                        <span class="keywordflow">if</span> (reps &lt;= remote-&gt;suppress_repeat) {</div><div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;                                                decoding = NULL;</div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;                                                <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;                                        }</div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;                                        reps -= remote-&gt;<a class="code" href="structir__remote.html#a075a47ed472f9e8a42b64d3837333bbd">suppress_repeat</a>;</div><div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;                                }</div><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;                                <a class="code" href="release_8c.html#a3b06cf75f596a29a84d1137c05b62efe">register_button_press</a>(remote,</div><div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;                                                      remote-&gt;<a class="code" href="structir__remote.html#ac6557d868466bb5d2722b028bfe62d8c">last_code</a>,</div><div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;                                                      ctx.<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a>,</div><div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;                                                      reps);</div><div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;                                len = <a class="code" href="group__driver__api.html#ga04461705747fd8521d369ee96ed762fe">write_message</a>(message, <a class="code" href="lirc__config_8h.html#aebdc7d8ca8e25ed8efc90bb88ef7ef5b">PACKET_SIZE</a> + 1,</div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;                                                    remote-&gt;<a class="code" href="structir__remote.html#acd104de70d9169542de9c471befb0045">name</a>,</div><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;                                                    remote-&gt;<a class="code" href="structir__remote.html#ac6557d868466bb5d2722b028bfe62d8c">last_code</a>-&gt;<a class="code" href="structir__ncode.html#ac28e8133cbc7aa22dbbc8ef722883d2b">name</a>,</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;                                                    <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;                                                    ctx.<a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a>,</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;                                                    reps);</div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;                                decoding = NULL;</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;                                <span class="keywordflow">if</span> (len &gt;= <a class="code" href="lirc__config_8h.html#aebdc7d8ca8e25ed8efc90bb88ef7ef5b">PACKET_SIZE</a> + 1) {</div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;                                        <a class="code" href="lirc__log_8h.html#a887f83dbb884a13949e4f2ad710e5ddf">log_error</a>(<span class="stringliteral">&quot;message buffer overflow&quot;</span>);</div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;                                        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;                                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;                                        <span class="keywordflow">return</span> message;</div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;                                }</div><div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;                        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;                                <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;failed \&quot;%s\&quot; remote&quot;</span>,</div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;                                          remote-&gt;<a class="code" href="structir__remote.html#acd104de70d9169542de9c471befb0045">name</a>);</div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;                        }</div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;                }</div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;                remote-&gt;toggle_mask_state = 0;</div><div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;                remote = remote-&gt;next;</div><div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;        }</div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;        decoding = NULL;</div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;        <a class="code" href="group__driver__api.html#ga474c489cabdaae4546ca0ac26ec9cd87">last_remote</a> = NULL;</div><div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;        <a class="code" href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a>(<span class="stringliteral">&quot;decoding failed for all remotes&quot;</span>);</div><div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;}</div><div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;</div><div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;</div><div class="line"><a name="l00823"></a><span class="lineno"><a class="line" href="group__driver__api.html#ga51d2eb6ccf92c9210c69cd727b712bae">  823</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__driver__api.html#ga51d2eb6ccf92c9210c69cd727b712bae">send_ir_ncode</a>(<span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>* remote, <span class="keyword">struct</span> <a class="code" href="structir__ncode.html">ir_ncode</a>* <a class="code" href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">code</a>, <span class="keywordtype">int</span> delay)</div><div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;{</div><div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;        <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;</div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;        <span class="keywordflow">if</span> (delay) {</div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;                <span class="comment">/* insert pause when needed: */</span></div><div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;                <span class="keywordflow">if</span> (remote-&gt;<a class="code" href="structir__remote.html#ac6557d868466bb5d2722b028bfe62d8c">last_code</a> != NULL) {</div><div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;                        <span class="keyword">struct </span>timeval current;</div><div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;                        <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> usecs;</div><div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;</div><div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;                        gettimeofday(&amp;current, NULL);</div><div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;                        usecs = time_left(&amp;current,</div><div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;                                          &amp;remote-&gt;<a class="code" href="structir__remote.html#a93a28c38d457232d6ab2310487b0f00e">last_send</a>,</div><div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;                                          remote-&gt;<a class="code" href="structir__remote.html#aec8b4e8638d32a3542671b91a344806f">min_remaining_gap</a> * 2);</div><div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;                        <span class="keywordflow">if</span> (usecs &gt; 0) {</div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;                                <span class="keywordflow">if</span> (<a class="code" href="group__driver__api.html#ga7bc28a85da7d0ccf4466708918f01dc4">repeat_remote</a> == NULL || remote !=</div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;                                    <a class="code" href="group__driver__api.html#ga7bc28a85da7d0ccf4466708918f01dc4">repeat_remote</a></div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;                                    || remote-&gt;<a class="code" href="structir__remote.html#ac6557d868466bb5d2722b028bfe62d8c">last_code</a> != code)</div><div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;                                        usleep(usecs);</div><div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;                        }</div><div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;                }</div><div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;        }</div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;        ret = <a class="code" href="driver_8c.html#a656110ac202d464ae49251c9599baf66">curr_driver</a>-&gt;<a class="code" href="structdriver.html#a90d38db70255ee7d38bcd81c9edd9412">send_func</a>(remote, code);</div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;</div><div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;        <span class="keywordflow">if</span> (ret) {</div><div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;                gettimeofday(&amp;remote-&gt;<a class="code" href="structir__remote.html#a93a28c38d457232d6ab2310487b0f00e">last_send</a>, NULL);</div><div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;                remote-&gt;<a class="code" href="structir__remote.html#ac6557d868466bb5d2722b028bfe62d8c">last_code</a> = code;</div><div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;        }</div><div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;        <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;}</div><div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;</div><div class="line"><a name="l00854"></a><span class="lineno"><a class="line" href="group__driver__api.html#gaf2e0b982088d231116dea399afa8597f">  854</a></span>&#160;<span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structir__remote.html">ir_remote</a>* <a class="code" href="group__driver__api.html#gaf2e0b982088d231116dea399afa8597f">get_decoding</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;{</div><div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;        <span class="keywordflow">return</span> (<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structir__remote.html">ir_remote</a>*)&amp;decoding;</div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;}</div><div class="ttc" id="structir__remote_html_aec8b4e8638d32a3542671b91a344806f"><div class="ttname"><a href="structir__remote.html#aec8b4e8638d32a3542671b91a344806f">ir_remote::min_remaining_gap</a></div><div class="ttdeci">lirc_t min_remaining_gap</div><div class="ttdoc">remember gap for CONST_LENGTH remotes</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00232">ir_remote_types.h:232</a></div></div>
<div class="ttc" id="group__driver__api_html_ga474c489cabdaae4546ca0ac26ec9cd87"><div class="ttname"><a href="group__driver__api.html#ga474c489cabdaae4546ca0ac26ec9cd87">last_remote</a></div><div class="ttdeci">struct ir_remote * last_remote</div><div class="ttdoc">TODO.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00059">ir_remote.c:59</a></div></div>
<div class="ttc" id="group__driver__api_html_ga2da0e0383db556d0e1ba7261763815c5"><div class="ttname"><a href="group__driver__api.html#ga2da0e0383db556d0e1ba7261763815c5">repeat_code</a></div><div class="ttdeci">struct ir_ncode * repeat_code</div><div class="ttdoc">Global pointer to the code currently repeating.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00063">ir_remote.c:63</a></div></div>
<div class="ttc" id="structir__remote_html"><div class="ttname"><a href="structir__remote.html">ir_remote</a></div><div class="ttdoc">One remote as represented in the configuration file.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00155">ir_remote_types.h:155</a></div></div>
<div class="ttc" id="structir__remote_html_a66c874209817af89bc88503f61a76539"><div class="ttname"><a href="structir__remote.html#a66c874209817af89bc88503f61a76539">ir_remote::bits</a></div><div class="ttdeci">int bits</div><div class="ttdoc">bits (length of code)</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00159">ir_remote_types.h:159</a></div></div>
<div class="ttc" id="structir__code__node_html"><div class="ttname"><a href="structir__code__node.html">ir_code_node</a></div><div class="ttdoc">An ir_code for entering into (singly) linked lists, i.e.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00053">ir_remote_types.h:53</a></div></div>
<div class="ttc" id="structir__remote_html_a04eb04a7c2333f53ceb20ffef8d2ebc4"><div class="ttname"><a href="structir__remote.html#a04eb04a7c2333f53ceb20ffef8d2ebc4">ir_remote::freq</a></div><div class="ttdeci">unsigned int freq</div><div class="ttdoc">modulation frequency</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00208">ir_remote_types.h:208</a></div></div>
<div class="ttc" id="structir__remote_html_ae78acfc685ff2bc9559d45f1e4b702bb"><div class="ttname"><a href="structir__remote.html#ae78acfc685ff2bc9559d45f1e4b702bb">ir_remote::max_gap_length</a></div><div class="ttdeci">lirc_t max_gap_length</div><div class="ttdoc">how long is the longest gap</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00238">ir_remote_types.h:238</a></div></div>
<div class="ttc" id="group__driver__api_html_ga8d5bc121b8582a690000bc8befe13080"><div class="ttname"><a href="group__driver__api.html#ga8d5bc121b8582a690000bc8befe13080">ir_remote_init</a></div><div class="ttdeci">void ir_remote_init(int use_dyncodes)</div><div class="ttdoc">Initiate: define if dynamic codes should be used.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00124">ir_remote.c:124</a></div></div>
<div class="ttc" id="driver_8c_html_a656110ac202d464ae49251c9599baf66"><div class="ttname"><a href="driver_8c.html#a656110ac202d464ae49251c9599baf66">curr_driver</a></div><div class="ttdeci">const struct driver *const curr_driver</div><div class="ttdoc">Read-only access to drv for client code.</div><div class="ttdef"><b>Definition:</b> <a href="driver_8c_source.html#l00034">driver.c:34</a></div></div>
<div class="ttc" id="structir__remote_html_a96f9c35cff5a927c8fb76c5a8a240238"><div class="ttname"><a href="structir__remote.html#a96f9c35cff5a927c8fb76c5a8a240238">ir_remote::post_data</a></div><div class="ttdeci">ir_code post_data</div><div class="ttdoc">data which the remote sends after actual keycode</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00187">ir_remote_types.h:187</a></div></div>
<div class="ttc" id="structir__remote_html_a47f22b4a2e69b0d90ae6ad61960076b3"><div class="ttname"><a href="structir__remote.html#a47f22b4a2e69b0d90ae6ad61960076b3">ir_remote::repeat_mask</a></div><div class="ttdeci">ir_code repeat_mask</div><div class="ttdoc">mask defines which bits are inverted for repeats</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00222">ir_remote_types.h:222</a></div></div>
<div class="ttc" id="structir__remote_html_ac80cecb60d0e4e77b01c3044df9d6713"><div class="ttname"><a href="structir__remote.html#ac80cecb60d0e4e77b01c3044df9d6713">ir_remote::toggle_code</a></div><div class="ttdeci">struct ir_ncode * toggle_code</div><div class="ttdoc">toggle code received or sent last</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00229">ir_remote_types.h:229</a></div></div>
<div class="ttc" id="group__driver__api_html_ga1a1b6c86d0309f25ab5806a5f861692c"><div class="ttname"><a href="group__driver__api.html#ga1a1b6c86d0309f25ab5806a5f861692c">get_filter_parameters</a></div><div class="ttdeci">void get_filter_parameters(const struct ir_remote *remotes, lirc_t *max_gap_lengthp, lirc_t *min_pulse_lengthp, lirc_t *min_space_lengthp, lirc_t *max_pulse_lengthp, lirc_t *max_space_lengthp)</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00193">ir_remote.c:193</a></div></div>
<div class="ttc" id="lirc__log_8h_html_a0e37223ab9f5df7af8cb2a59b7c4dc18"><div class="ttname"><a href="lirc__log_8h.html#a0e37223ab9f5df7af8cb2a59b7c4dc18">log_debug</a></div><div class="ttdeci">#define log_debug(fmt,...)</div><div class="ttdoc">Log a debug message.</div><div class="ttdef"><b>Definition:</b> <a href="lirc__log_8h_source.html#l00124">lirc_log.h:124</a></div></div>
<div class="ttc" id="structdriver_html_a4c8fb1671a48fb248bc8dafa90cded15"><div class="ttname"><a href="structdriver.html#a4c8fb1671a48fb248bc8dafa90cded15">driver::decode_func</a></div><div class="ttdeci">int(*const decode_func)(struct ir_remote *remote, struct decode_ctx_t *ctx)</div><div class="ttdoc">TODO.</div><div class="ttdef"><b>Definition:</b> <a href="driver_8h_source.html#l00206">driver.h:206</a></div></div>
<div class="ttc" id="structir__ncode_html_a0e80278912121f630d3b398959c4dad7"><div class="ttname"><a href="structir__ncode.html#a0e80278912121f630d3b398959c4dad7">ir_ncode::next</a></div><div class="ttdeci">struct ir_code_node * next</div><div class="ttdoc">Linked list of the subsequent ir_code's, after the first one.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00079">ir_remote_types.h:79</a></div></div>
<div class="ttc" id="structir__remote_html_acd104de70d9169542de9c471befb0045"><div class="ttname"><a href="structir__remote.html#acd104de70d9169542de9c471befb0045">ir_remote::name</a></div><div class="ttdeci">const char * name</div><div class="ttdoc">name of remote control</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00156">ir_remote_types.h:156</a></div></div>
<div class="ttc" id="structir__ncode_html_a6ff318262c9447b1e1fc4e944e29bf4a"><div class="ttname"><a href="structir__ncode.html#a6ff318262c9447b1e1fc4e944e29bf4a">ir_ncode::signals</a></div><div class="ttdeci">lirc_t * signals</div><div class="ttdoc">(private)</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00075">ir_remote_types.h:75</a></div></div>
<div class="ttc" id="group__driver__api_html_gafaa7cb5587a3c58e3e825411b966738a"><div class="ttname"><a href="group__driver__api.html#gafaa7cb5587a3c58e3e825411b966738a">get_code_by_name</a></div><div class="ttdeci">struct ir_ncode * get_code_by_name(const struct ir_remote *remote, const char *name)</div><div class="ttdoc">Return code with given name in remote's list of codes or NULL.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00397">ir_remote.c:397</a></div></div>
<div class="ttc" id="ir__remote__types_8h_html_a4810ea9a08167df9744ad0d4ed381496"><div class="ttname"><a href="ir__remote__types_8h.html#a4810ea9a08167df9744ad0d4ed381496">COMPAT_REVERSE</a></div><div class="ttdeci">#define COMPAT_REVERSE</div><div class="ttdoc">compatibility mode for REVERSE flag</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00128">ir_remote_types.h:128</a></div></div>
<div class="ttc" id="structir__remote_html_ac6557d868466bb5d2722b028bfe62d8c"><div class="ttname"><a href="structir__remote.html#ac6557d868466bb5d2722b028bfe62d8c">ir_remote::last_code</a></div><div class="ttdeci">struct ir_ncode * last_code</div><div class="ttdoc">code received or sent last</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00228">ir_remote_types.h:228</a></div></div>
<div class="ttc" id="group__driver__api_html_ga251129673cd73c5f869bb53c6c38a88f"><div class="ttname"><a href="group__driver__api.html#ga251129673cd73c5f869bb53c6c38a88f">get_ir_remote</a></div><div class="ttdeci">struct ir_remote * get_ir_remote(const struct ir_remote *remotes, const char *name)</div><div class="ttdoc">Return ir_remote with given name in remotes list, or NULL if not found.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00251">ir_remote.c:251</a></div></div>
<div class="ttc" id="structdecode__ctx__t_html_ae52561bab1b135eda87baf242a1092a6"><div class="ttname"><a href="structdecode__ctx__t.html#ae52561bab1b135eda87baf242a1092a6">decode_ctx_t::pre</a></div><div class="ttdeci">ir_code pre</div><div class="ttdoc">pre data, before code.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00144">ir_remote_types.h:144</a></div></div>
<div class="ttc" id="lirc__config_8h_html_a510ecf0088b450b9aee39c8260fdb296"><div class="ttname"><a href="lirc__config_8h.html#a510ecf0088b450b9aee39c8260fdb296">LIRC_EOF</a></div><div class="ttdeci">#define LIRC_EOF</div><div class="ttdoc">Bit manipulator in lirc_t, see lirc.h .</div><div class="ttdef"><b>Definition:</b> <a href="lirc__config_8h_source.html#l00090">lirc_config.h:90</a></div></div>
<div class="ttc" id="group__driver__api_html_gabac8048f405d0a78fcc01fa9ef1132df"><div class="ttname"><a href="group__driver__api.html#gabac8048f405d0a78fcc01fa9ef1132df">map_code</a></div><div class="ttdeci">int map_code(const struct ir_remote *remote, struct decode_ctx_t *ctx, int pre_bits, ir_code pre, int bits, ir_code code, int post_bits, ir_code post)</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00283">ir_remote.c:283</a></div></div>
<div class="ttc" id="group__driver__api_html_gae334c37e486ce414abf272d4850df6c4"><div class="ttname"><a href="group__driver__api.html#gae334c37e486ce414abf272d4850df6c4">decode_all</a></div><div class="ttdeci">char * decode_all(struct ir_remote *remotes)</div><div class="ttdoc">Tries to decode current signal trying all known remotes.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00733">ir_remote.c:733</a></div></div>
<div class="ttc" id="structir__remote_html_ae5bfde45bb74a00d7ec53023f2fa6252"><div class="ttname"><a href="structir__remote.html#ae5bfde45bb74a00d7ec53023f2fa6252">ir_remote::pre_data_bits</a></div><div class="ttdeci">int pre_data_bits</div><div class="ttdoc">length of pre_data</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00184">ir_remote_types.h:184</a></div></div>
<div class="ttc" id="structdriver_html_a90d38db70255ee7d38bcd81c9edd9412"><div class="ttname"><a href="structdriver.html#a90d38db70255ee7d38bcd81c9edd9412">driver::send_func</a></div><div class="ttdeci">int(*const send_func)(struct ir_remote *remote, struct ir_ncode *code)</div><div class="ttdoc">Send data to the remote.</div><div class="ttdef"><b>Definition:</b> <a href="driver_8h_source.html#l00192">driver.h:192</a></div></div>
<div class="ttc" id="lirc__config_8h_html_aebdc7d8ca8e25ed8efc90bb88ef7ef5b"><div class="ttname"><a href="lirc__config_8h.html#aebdc7d8ca8e25ed8efc90bb88ef7ef5b">PACKET_SIZE</a></div><div class="ttdeci">#define PACKET_SIZE</div><div class="ttdoc">IR transmission packet size.</div><div class="ttdef"><b>Definition:</b> <a href="lirc__config_8h_source.html#l00084">lirc_config.h:84</a></div></div>
<div class="ttc" id="lirc__log_8h_html_abffd9aa4ab9bcfacdbb9d7728037114b"><div class="ttname"><a href="lirc__log_8h.html#abffd9aa4ab9bcfacdbb9d7728037114b">logchannel_t</a></div><div class="ttdeci">logchannel_t</div><div class="ttdoc">Log channels used to filter messages.</div><div class="ttdef"><b>Definition:</b> <a href="lirc__log_8h_source.html#l00053">lirc_log.h:53</a></div></div>
<div class="ttc" id="structir__ncode_html_ac28e8133cbc7aa22dbbc8ef722883d2b"><div class="ttname"><a href="structir__ncode.html#ac28e8133cbc7aa22dbbc8ef722883d2b">ir_ncode::name</a></div><div class="ttdeci">char * name</div><div class="ttdoc">Name of command.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00066">ir_remote_types.h:66</a></div></div>
<div class="ttc" id="structir__remote_html_a93a28c38d457232d6ab2310487b0f00e"><div class="ttname"><a href="structir__remote.html#a93a28c38d457232d6ab2310487b0f00e">ir_remote::last_send</a></div><div class="ttdeci">struct timeval last_send</div><div class="ttdoc">time last_code was received or sent</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00231">ir_remote_types.h:231</a></div></div>
<div class="ttc" id="structir__ncode_html_a849807a18ac00c5d4228c2ebf5eb6519"><div class="ttname"><a href="structir__ncode.html#a849807a18ac00c5d4228c2ebf5eb6519">ir_ncode::current</a></div><div class="ttdeci">struct ir_code_node * current</div><div class="ttdoc">Should point at the ir_code currently being transmitted, or NULL if none.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00083">ir_remote_types.h:83</a></div></div>
<div class="ttc" id="structir__remote_html_a67432d0e91b257de5044ee47985cbb5b"><div class="ttname"><a href="structir__remote.html#a67432d0e91b257de5044ee47985cbb5b">ir_remote::post_data_bits</a></div><div class="ttdeci">int post_data_bits</div><div class="ttdoc">length of post_data</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00186">ir_remote_types.h:186</a></div></div>
<div class="ttc" id="structir__remote_html_a9744aba55e393727c08815e548a9f836"><div class="ttname"><a href="structir__remote.html#a9744aba55e393727c08815e548a9f836">ir_remote::toggle_mask</a></div><div class="ttdeci">ir_code toggle_mask</div><div class="ttdoc">Sharp (?) error detection scheme.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00210">ir_remote_types.h:210</a></div></div>
<div class="ttc" id="lirc__log_8h_html_a887f83dbb884a13949e4f2ad710e5ddf"><div class="ttname"><a href="lirc__log_8h.html#a887f83dbb884a13949e4f2ad710e5ddf">log_error</a></div><div class="ttdeci">#define log_error(fmt,...)</div><div class="ttdoc">Log an error message.</div><div class="ttdef"><b>Definition:</b> <a href="lirc__log_8h_source.html#l00104">lirc_log.h:104</a></div></div>
<div class="ttc" id="lirc__log_8h_html_aa28b268ea240f30ce6ae3bcd5492bd31"><div class="ttname"><a href="lirc__log_8h.html#aa28b268ea240f30ce6ae3bcd5492bd31">log_trace1</a></div><div class="ttdeci">#define log_trace1(fmt,...)</div><div class="ttdoc">Log a trace1 message.</div><div class="ttdef"><b>Definition:</b> <a href="lirc__log_8h_source.html#l00134">lirc_log.h:134</a></div></div>
<div class="ttc" id="structir__remote_html_a54cf93d6a6ea5fa37c4b17ecad8b7b4b"><div class="ttname"><a href="structir__remote.html#a54cf93d6a6ea5fa37c4b17ecad8b7b4b">ir_remote::pre_data</a></div><div class="ttdeci">ir_code pre_data</div><div class="ttdoc">data which the remote sends before actual keycode</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00185">ir_remote_types.h:185</a></div></div>
<div class="ttc" id="structdecode__ctx__t_html_a81e997b57167363c5cc8db496a841165"><div class="ttname"><a href="structdecode__ctx__t.html#a81e997b57167363c5cc8db496a841165">decode_ctx_t::post</a></div><div class="ttdeci">ir_code post</div><div class="ttdoc">post data, sent after code.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00145">ir_remote_types.h:145</a></div></div>
<div class="ttc" id="release_8c_html_a3b06cf75f596a29a84d1137c05b62efe"><div class="ttname"><a href="release_8c.html#a3b06cf75f596a29a84d1137c05b62efe">register_button_press</a></div><div class="ttdeci">void register_button_press(struct ir_remote *remote, struct ir_ncode *ncode, ir_code code, int reps)</div><div class="ttdoc">Set up pending release events for given button, including the release_gap.</div><div class="ttdef"><b>Definition:</b> <a href="release_8c_source.html#l00064">release.c:64</a></div></div>
<div class="ttc" id="group__driver__api_html_ga04461705747fd8521d369ee96ed762fe"><div class="ttname"><a href="group__driver__api.html#ga04461705747fd8521d369ee96ed762fe">write_message</a></div><div class="ttdeci">int write_message(char *buffer, size_t size, const char *remote_name, const char *button_name, const char *button_suffix, ir_code code, int reps)</div><div class="ttdoc">Formats the arguments into a readable string.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00713">ir_remote.c:713</a></div></div>
<div class="ttc" id="structir__remote_html_abde525f609dea108baab4b690c2b94e4"><div class="ttname"><a href="structir__remote.html#abde525f609dea108baab4b690c2b94e4">ir_remote::gap</a></div><div class="ttdeci">uint32_t gap</div><div class="ttdoc">time between signals in usecs</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00191">ir_remote_types.h:191</a></div></div>
<div class="ttc" id="lirc__log_8h_html_a056b9e71b3a2e575f88c564ff3670877"><div class="ttname"><a href="lirc__log_8h.html#a056b9e71b3a2e575f88c564ff3670877">log_trace</a></div><div class="ttdeci">#define log_trace(fmt,...)</div><div class="ttdoc">Log a trace message.</div><div class="ttdef"><b>Definition:</b> <a href="lirc__log_8h_source.html#l00129">lirc_log.h:129</a></div></div>
<div class="ttc" id="group__driver__api_html_gaadf09b8ef4b71be00f8e53a39f70d315"><div class="ttname"><a href="group__driver__api.html#gaadf09b8ef4b71be00f8e53a39f70d315">is_in_remotes</a></div><div class="ttdeci">const struct ir_remote * is_in_remotes(const struct ir_remote *remotes, const struct ir_remote *remote)</div><div class="ttdoc">Test if a given remote is in a list of remotes.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00239">ir_remote.c:239</a></div></div>
<div class="ttc" id="structdecode__ctx__t_html_ab7221813c357026846919c726cf43d73"><div class="ttname"><a href="structdecode__ctx__t.html#ab7221813c357026846919c726cf43d73">decode_ctx_t::max_remaining_gap</a></div><div class="ttdeci">lirc_t max_remaining_gap</div><div class="ttdoc">Estimated max time of trailing gap.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00147">ir_remote_types.h:147</a></div></div>
<div class="ttc" id="structdecode__ctx__t_html_a1a206e5968a38e6e5286be41c037c30c"><div class="ttname"><a href="structdecode__ctx__t.html#a1a206e5968a38e6e5286be41c037c30c">decode_ctx_t::code</a></div><div class="ttdeci">ir_code code</div><div class="ttdoc">Code part, matched to code defintion.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00143">ir_remote_types.h:143</a></div></div>
<div class="ttc" id="group__driver__api_html_gaf2e0b982088d231116dea399afa8597f"><div class="ttname"><a href="group__driver__api.html#gaf2e0b982088d231116dea399afa8597f">get_decoding</a></div><div class="ttdeci">const struct ir_remote * get_decoding(void)</div><div class="ttdoc">Return pointer to currently decoded remote.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00854">ir_remote.c:854</a></div></div>
<div class="ttc" id="structir__remote_html_ae8172a416ed4f0481f61aaee32b3803c"><div class="ttname"><a href="structir__remote.html#ae8172a416ed4f0481f61aaee32b3803c">ir_remote::dyncode</a></div><div class="ttdeci">int dyncode</div><div class="ttdoc">last received code</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00169">ir_remote_types.h:169</a></div></div>
<div class="ttc" id="group__driver__api_html_ga4477860d1f604548e032694de8f69c16"><div class="ttname"><a href="group__driver__api.html#ga4477860d1f604548e032694de8f69c16">ncode_free</a></div><div class="ttdeci">void ncode_free(struct ir_ncode *ncode)</div><div class="ttdoc">Dispose an ir_ncode instance obtained from ncode_dup().</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00104">ir_remote.c:104</a></div></div>
<div class="ttc" id="structir__ncode_html"><div class="ttname"><a href="structir__ncode.html">ir_ncode</a></div><div class="ttdoc">IR Command, corresponding to one (command defining) line of the configuration file.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00064">ir_remote_types.h:64</a></div></div>
<div class="ttc" id="structir__remote_html_a9ac03eb6d4cee793010b00fe434aa985"><div class="ttname"><a href="structir__remote.html#a9ac03eb6d4cee793010b00fe434aa985">ir_remote::flags</a></div><div class="ttdeci">int flags</div><div class="ttdoc">flags</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00160">ir_remote_types.h:160</a></div></div>
<div class="ttc" id="structdecode__ctx__t_html"><div class="ttname"><a href="structdecode__ctx__t.html">decode_ctx_t</a></div><div class="ttdoc">State describing code, pre, post + gap and repeat state.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00142">ir_remote_types.h:142</a></div></div>
<div class="ttc" id="group__driver__api_html_gac691a06cc99d8c914e2c7451407f245a"><div class="ttname"><a href="group__driver__api.html#gac691a06cc99d8c914e2c7451407f245a">map_gap</a></div><div class="ttdeci">void map_gap(const struct ir_remote *remote, struct decode_ctx_t *ctx, const struct timeval *start, const struct timeval *last, lirc_t signal_length)</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00329">ir_remote.c:329</a></div></div>
<div class="ttc" id="structir__remote_html_a783c26d5860269f673cb0b5506332560"><div class="ttname"><a href="structir__remote.html#a783c26d5860269f673cb0b5506332560">ir_remote::release_detected</a></div><div class="ttdeci">int release_detected</div><div class="ttdoc">set by release generator</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00241">ir_remote_types.h:241</a></div></div>
<div class="ttc" id="structdecode__ctx__t_html_aa76a228985ce90fddd03399aceacadb5"><div class="ttname"><a href="structdecode__ctx__t.html#aa76a228985ce90fddd03399aceacadb5">decode_ctx_t::min_remaining_gap</a></div><div class="ttdeci">lirc_t min_remaining_gap</div><div class="ttdoc">Estimated min time of trailing gap.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00148">ir_remote_types.h:148</a></div></div>
<div class="ttc" id="group__driver__api_html_gac288bce2140d2066a3990a1b2e3317c5"><div class="ttname"><a href="group__driver__api.html#gac288bce2140d2066a3990a1b2e3317c5">ncode_dup</a></div><div class="ttdeci">struct ir_ncode * ncode_dup(struct ir_ncode *ncode)</div><div class="ttdoc">Create a malloc'd, deep copy of ncode.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00069">ir_remote.c:69</a></div></div>
<div class="ttc" id="structir__remote_html_a2d289d49ef2ff113cbf52fd30e30fe5b"><div class="ttname"><a href="structir__remote.html#a2d289d49ef2ff113cbf52fd30e30fe5b">ir_remote::max_remaining_gap</a></div><div class="ttdeci">lirc_t max_remaining_gap</div><div class="ttdoc">gap range</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00233">ir_remote_types.h:233</a></div></div>
<div class="ttc" id="group__driver__api_html_ga19bab2135ca2b7f68dc0b2f8cde9863f"><div class="ttname"><a href="group__driver__api.html#ga19bab2135ca2b7f68dc0b2f8cde9863f">get_frequency_range</a></div><div class="ttdeci">void get_frequency_range(const struct ir_remote *remotes, unsigned int *min_freq, unsigned int *max_freq)</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00156">ir_remote.c:156</a></div></div>
<div class="ttc" id="structir__remote_html_a075a47ed472f9e8a42b64d3837333bbd"><div class="ttname"><a href="structir__remote.html#a075a47ed472f9e8a42b64d3837333bbd">ir_remote::suppress_repeat</a></div><div class="ttdeci">int suppress_repeat</div><div class="ttdoc">suppress unwanted repeats</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00196">ir_remote_types.h:196</a></div></div>
<div class="ttc" id="structir__ncode_html_a17ca9e939fd5742de3ed6e29bdc68e8d"><div class="ttname"><a href="structir__ncode.html#a17ca9e939fd5742de3ed6e29bdc68e8d">ir_ncode::code</a></div><div class="ttdeci">ir_code code</div><div class="ttdoc">The first code of the command.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00069">ir_remote_types.h:69</a></div></div>
<div class="ttc" id="structir__remote_html_a250d88b2da87c39fc420714afc93c7f6"><div class="ttname"><a href="structir__remote.html#a250d88b2da87c39fc420714afc93c7f6">ir_remote::dyncodes</a></div><div class="ttdeci">struct ir_ncode dyncodes[2]</div><div class="ttdoc">helper structs for unknown buttons</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00170">ir_remote_types.h:170</a></div></div>
<div class="ttc" id="structdecode__ctx__t_html_a7c9bcadb5d59fb05fdad3a0cdd9b1106"><div class="ttname"><a href="structdecode__ctx__t.html#a7c9bcadb5d59fb05fdad3a0cdd9b1106">decode_ctx_t::repeat_flag</a></div><div class="ttdeci">int repeat_flag</div><div class="ttdoc">True if code is a repeated one.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00146">ir_remote_types.h:146</a></div></div>
<div class="ttc" id="group__driver__api_html_ga7bc28a85da7d0ccf4466708918f01dc4"><div class="ttname"><a href="group__driver__api.html#ga7bc28a85da7d0ccf4466708918f01dc4">repeat_remote</a></div><div class="ttdeci">struct ir_remote * repeat_remote</div><div class="ttdoc">Global pointer to the remote that contains the code currently repeating.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00061">ir_remote.c:61</a></div></div>
<div class="ttc" id="structir__remote_html_ad1d35f0da36527d473c7d857231ec739"><div class="ttname"><a href="structir__remote.html#ad1d35f0da36527d473c7d857231ec739">ir_remote::toggle_bit_mask</a></div><div class="ttdeci">ir_code toggle_bit_mask</div><div class="ttdoc">previously only one bit called toggle_bit</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00195">ir_remote_types.h:195</a></div></div>
<div class="ttc" id="group__driver__api_html_ga51d2eb6ccf92c9210c69cd727b712bae"><div class="ttname"><a href="group__driver__api.html#ga51d2eb6ccf92c9210c69cd727b712bae">send_ir_ncode</a></div><div class="ttdeci">int send_ir_ncode(struct ir_remote *remote, struct ir_ncode *code, int delay)</div><div class="ttdoc">Transmits the actual code in the second argument by calling the current hardware driver.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote_8c_source.html#l00823">ir_remote.c:823</a></div></div>
<div class="ttc" id="structir__remote_html_a739c26d88eb023d67353fa08dd076255"><div class="ttname"><a href="structir__remote.html#a739c26d88eb023d67353fa08dd076255">ir_remote::ignore_mask</a></div><div class="ttdeci">ir_code ignore_mask</div><div class="ttdoc">mask defines which bits can be ignored when matching a code</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00221">ir_remote_types.h:221</a></div></div>
<div class="ttc" id="ir__remote__types_8h_html_a4607c3797b0d3ac909185d2844030624"><div class="ttname"><a href="ir__remote__types_8h.html#a4607c3797b0d3ac909185d2844030624">ir_code</a></div><div class="ttdeci">uint64_t ir_code</div><div class="ttdoc">Denotes an internal coded representation for an IR transmission.</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00047">ir_remote_types.h:47</a></div></div>
<div class="ttc" id="structir__ncode_html_a46824261611491c5ff0b611cda1ec437"><div class="ttname"><a href="structir__ncode.html#a46824261611491c5ff0b611cda1ec437">ir_ncode::length</a></div><div class="ttdeci">int length</div><div class="ttdoc">(private)</div><div class="ttdef"><b>Definition:</b> <a href="ir__remote__types_8h_source.html#l00072">ir_remote_types.h:72</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_97aefd0d527b934f1d99a682da8fe6a9.html">lib</a></li><li class="navelem"><a class="el" href="ir__remote_8c.html">ir_remote.c</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
  </ul>
</div>
</body>
</html>