<trclass="memdesc:a87d4cca5e350177cb0922842dda1eb5b"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Class destructor Cleans up after the object is no longer needed. e.g. Frees up all memory used by the various buffers, and disables any timers or interrupts used. <ahref="classIRrecv.html#a87d4cca5e350177cb0922842dda1eb5b">More...</a><br/></td></tr>
<trclass="memdesc:aa091c449db70c65fd0221669df7438ea"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Set the base tolerance percentage for matching incoming IR messages. <ahref="classIRrecv.html#aa091c449db70c65fd0221669df7438ea">More...</a><br/></td></tr>
<trclass="memdesc:a144f64da3b44708394c06b0fbefb6347"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Get the base tolerance percentage for matching incoming IR messages. <ahref="classIRrecv.html#a144f64da3b44708394c06b0fbefb6347">More...</a><br/></td></tr>
<trclass="memdesc:aeaa5c07a8b46f8fbb982f996cc1f9f4b"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decodes the received IR message. If the interrupt state is saved, we will immediately resume waiting for the next IR message to avoid missing messages. <ahref="classIRrecv.html#aeaa5c07a8b46f8fbb982f996cc1f9f4b">More...</a><br/></td></tr>
<trclass="memdesc:a52c05ec6d8f3dbfb75f21f3b4fe7be3d"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Set up and (re)start the IR capture mechanism. <ahref="classIRrecv.html#a52c05ec6d8f3dbfb75f21f3b4fe7be3d">More...</a><br/></td></tr>
<trclass="memdesc:a9f4a719e756ad78c7dd47186f8bef087"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Stop collection of any received IR data. Disable any timers and interrupts. <ahref="classIRrecv.html#a9f4a719e756ad78c7dd47186f8bef087">More...</a><br/></td></tr>
<trclass="memdesc:a6b5beb7348d807d8d98ae929d005510e"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Resume collection of received IR data. <ahref="classIRrecv.html#a6b5beb7348d807d8d98ae929d005510e">More...</a><br/></td></tr>
<trclass="memdesc:a69ab02ea6823ccf18d1f6be87ca1b92e"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Obtain the maximum number of entries possible in the capture buffer. i.e. It's size. <ahref="classIRrecv.html#a69ab02ea6823ccf18d1f6be87ca1b92e">More...</a><br/></td></tr>
<trclass="memdesc:a02693553aad1decd67bdae60402e48bf"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Set the minimum length we will consider for reporting UNKNOWN message types. <ahref="classIRrecv.html#a02693553aad1decd67bdae60402e48bf">More...</a><br/></td></tr>
<trclass="memdesc:a8bc218dae714ab189a3da4fff269cdaa"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Check if we match a pulse(measured) with the desired within +/-tolerance percent and/or +/- a fixed delta range. <ahref="classIRrecv.html#a8bc218dae714ab189a3da4fff269cdaa">More...</a><br/></td></tr>
<trclass="memdesc:ae78ef12b8194db5d3cb5a2605d29830d"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Check if we match a mark signal(measured) with the desired within +/-tolerance percent, after an expected is excess is added. <ahref="classIRrecv.html#ae78ef12b8194db5d3cb5a2605d29830d">More...</a><br/></td></tr>
<trclass="memdesc:a9fd363e8b2edee2ed3c473349ecc58fc"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Check if we match a space signal(measured) with the desired within +/-tolerance percent, after an expected is excess is removed. <ahref="classIRrecv.html#a9fd363e8b2edee2ed3c473349ecc58fc">More...</a><br/></td></tr>
<trclass="memdesc:a0b4221970de0d027b5ae99648fa1c003"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Convert the tolerance percentage into something valid. <ahref="classIRrecv.html#a0b4221970de0d027b5ae99648fa1c003">More...</a><br/></td></tr>
<trclass="memdesc:ab017a0f9256954bb7d943e3c6b7e31bf"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Make a copy of the interrupt state & buffer data. Needed because irparams is marked as volatile, thus memcpy() isn't allowed. Only call this when you know the interrupt handlers won't modify anything. i.e. In kStopState. <ahref="classIRrecv.html#ab017a0f9256954bb7d943e3c6b7e31bf">More...</a><br/></td></tr>
<trclass="memdesc:ad7347c72b14d9f2f20f65bcf235ab3dc"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Compare two tick values. <ahref="classIRrecv.html#ad7347c72b14d9f2f20f65bcf235ab3dc">More...</a><br/></td></tr>
<trclass="memdesc:ac08e50c5eec10c0095157f4bdd4051c8"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Calculate the lower bound of the nr. of ticks. <ahref="classIRrecv.html#ac08e50c5eec10c0095157f4bdd4051c8">More...</a><br/></td></tr>
<trclass="memdesc:a573dbb20695f2ffc808623df8c36280c"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Calculate the upper bound of the nr. of ticks. <ahref="classIRrecv.html#a573dbb20695f2ffc808623df8c36280c">More...</a><br/></td></tr>
<trclass="memdesc:ae7bfd4ff689c7563c65c4e6e8c58187a"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Check if we match a pulse(measured) of at least desired within tolerance percent and/or a fixed delta margin. <ahref="classIRrecv.html#ae7bfd4ff689c7563c65c4e6e8c58187a">More...</a><br/></td></tr>
<trclass="memdesc:af0b300fe6fdff58324525e8208be3024"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Match & decode a generic/typical IR message. The data is stored in result_bits_ptr or result_bytes_ptr depending on flag <code>use_bits</code>. <ahref="classIRrecv.html#af0b300fe6fdff58324525e8208be3024">More...</a><br/></td></tr>
<trclass="memdesc:a5361439cb69b1069553544e486502d2e"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Match & decode the typical data section of an IR message. The data value is stored in the least significant bits reguardless of the bit ordering requested. <ahref="classIRrecv.html#a5361439cb69b1069553544e486502d2e">More...</a><br/></td></tr>
<trclass="memdesc:adc2c9bc4c4e5741cfac7468126bf8ca6"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Match & decode the typical data section of an IR message. The bytes are stored at result_ptr. The first byte in the result equates to the first byte encountered, and so on. <ahref="classIRrecv.html#adc2c9bc4c4e5741cfac7468126bf8ca6">More...</a><br/></td></tr>
<trclass="memdesc:ab783f52acc2ff4052313d6947563e4fd"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Match & decode a generic/typical <= 64bit IR message. The data is stored at result_ptr. <ahref="classIRrecv.html#ab783f52acc2ff4052313d6947563e4fd">More...</a><br/></td></tr>
<trclass="memdesc:a4448c1658383962d735353352987c9aa"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Match & decode a generic/typical > 64bit IR message. The bytes are stored at result_ptr. The first byte in the result equates to the first byte encountered, and so on. <ahref="classIRrecv.html#a4448c1658383962d735353352987c9aa">More...</a><br/></td></tr>
<trclass="memdesc:a4582d75ef1d11aee35fce86c38dcccf0"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Match & decode a generic/typical constant bit time <= 64bit IR message. The data is stored at result_ptr. <ahref="classIRrecv.html#a4582d75ef1d11aee35fce86c38dcccf0">More...</a><br/></td></tr>
<trclass="memdesc:ab44403411a217eb8ea75271575f8ab83"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Match & decode a Manchester Code data (<= 64bits. <ahref="classIRrecv.html#ab44403411a217eb8ea75271575f8ab83">More...</a><br/></td></tr>
<trclass="memdesc:ade70777ad0e047e11b99b03d8f5e3728"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Match & decode a Manchester Code <= 64bit IR message. The data is stored at result_ptr. <ahref="classIRrecv.html#ade70777ad0e047e11b99b03d8f5e3728">More...</a><br/></td></tr>
<trclass="memdesc:ae833bdb8fccc676043fc4ccae432fab1"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Remove or merge pulses in the capture buffer that are too short. <ahref="classIRrecv.html#ae833bdb8fccc676043fc4ccae432fab1">More...</a><br/></td></tr>
<trclass="memdesc:a7c15fbfa7936ca474712a1953911fd06"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode any arbitrary IR message into a 32-bit code value. Instead of decoding using a standard encoding scheme (e.g. Sony, NEC, RC5), the code is hashed to a 32-bit value. <ahref="classIRrecv.html#a7c15fbfa7936ca474712a1953911fd06">More...</a><br/></td></tr>
<trclass="memdesc:a43539320036ba1c17e9875e4dc9fd055"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Voltas message. Status: STABLE / Working on real device. <ahref="classIRrecv.html#a43539320036ba1c17e9875e4dc9fd055">More...</a><br/></td></tr>
<trclass="memdesc:a52b844f80df7f64edf9ce9cc189ac5b9"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied NEC (Renesas) message. Status: STABLE / Known good. <ahref="classIRrecv.html#a52b844f80df7f64edf9ce9cc189ac5b9">More...</a><br/></td></tr>
<trclass="memdesc:ab03227955cf7d1d00c1620c55d7f9f18"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Sony/SIRC message. Status: STABLE / Should be working. strict mode is ALPHA / Untested. <ahref="classIRrecv.html#ab03227955cf7d1d00c1620c55d7f9f18">More...</a><br/></td></tr>
<trclass="memdesc:a9514197850491a5b8c30ae9ffc89d895"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied second variation of a Mitsubishi 16-bit message. Status: STABLE / Working. <ahref="classIRrecv.html#a9514197850491a5b8c30ae9ffc89d895">More...</a><br/></td></tr>
<trclass="memdesc:aef9cedf79793806df4cc5376710781bc"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Mitsubishi Heavy Industries A/C message. Status: BETA / Appears to be working. Needs testing against a real device. <ahref="classIRrecv.html#aef9cedf79793806df4cc5376710781bc">More...</a><br/></td></tr>
<trclass="memdesc:a8e32daaa903a8e42dad7faaf405b33dc"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Gets one undecoded level at a time from the raw buffer. The RC5/6 decoding is easier if the data is broken into time intervals. E.g. if the buffer has MARK for 2 time intervals and SPACE for 1, successive calls to getRClevel will return MARK, MARK, SPACE. offset and used are updated to keep track of the current position. <ahref="classIRrecv.html#a8e32daaa903a8e42dad7faaf405b33dc">More...</a><br/></td></tr>
<trclass="memdesc:a0e7bf769cb5bebf174e852e4b0b08cf3"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode a Philips RC-MM packet (between 12 & 32 bits) if possible. Status: STABLE / Should be working. <ahref="classIRrecv.html#a0e7bf769cb5bebf174e852e4b0b08cf3">More...</a><br/></td></tr>
<trclass="memdesc:aa8dd5f24d28576c6db03cc463bd0a865"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Panasonic message. Status: STABLE / Should be working. <ahref="classIRrecv.html#aa8dd5f24d28576c6db03cc463bd0a865">More...</a><br/></td></tr>
<trclass="memdesc:afe70015c36b1477a5de0c193163e13a7"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied LG message. Status: STABLE / Working. <ahref="classIRrecv.html#afe70015c36b1477a5de0c193163e13a7">More...</a><br/></td></tr>
<trclass="memdesc:ae779c76ebd0f3cd1fc13abaa55f80d67"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Samsung A/C message. Status: Stable / Known to be working. <ahref="classIRrecv.html#ae779c76ebd0f3cd1fc13abaa55f80d67">More...</a><br/></td></tr>
<trclass="memdesc:a0b1bd1c817cb43bc3755126191b7f4a2"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Delonghi A/C message. Status: STABLE / Should work fine. <ahref="classIRrecv.html#a0b1bd1c817cb43bc3755126191b7f4a2">More...</a><br/></td></tr>
<trclass="memdesc:a4c4799a0d45ea5562159c46939617d80"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Daikin 312-bit message. (DAIKIN2) Status: STABLE / Works as expected. <ahref="classIRrecv.html#a4c4799a0d45ea5562159c46939617d80">More...</a><br/></td></tr>
<trclass="memdesc:a7f860686a5c58aa8f4d1842cfb15b2f9"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Daikin 216-bit message. (DAIKIN216) Status: STABLE / Should be working. <ahref="classIRrecv.html#a7f860686a5c58aa8f4d1842cfb15b2f9">More...</a><br/></td></tr>
<trclass="memdesc:ae2920c488173f3fa37f5325438157ced"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Trotec message. Status: STABLE / Works. Untested on real devices. <ahref="classIRrecv.html#ae2920c488173f3fa37f5325438157ced">More...</a><br/></td></tr>
<trclass="memdesc:a255b15601f7439a09ab5e77ad78816fb"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Midea message. Status: Alpha / Needs testing against a real device. <ahref="classIRrecv.html#a255b15601f7439a09ab5e77ad78816fb">More...</a><br/></td></tr>
<trclass="memdesc:a62a04019308b29ae2aea4b3a83ba9155"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Midea24 message. Status: STABLE / Confirmed working on a real device. <ahref="classIRrecv.html#a62a04019308b29ae2aea4b3a83ba9155">More...</a><br/></td></tr>
<trclass="memdesc:aa3778bdf994bf9c99ac48ef95434a826"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Fujitsu AC IR message if possible. Status: STABLE / Working. <ahref="classIRrecv.html#aa3778bdf994bf9c99ac48ef95434a826">More...</a><br/></td></tr>
<trclass="memdesc:ae4af614a45ea65cb3304ef5bd7965122"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Lasertag message. Status: BETA / Appears to be working 90% of the time. <ahref="classIRrecv.html#ae4af614a45ea65cb3304ef5bd7965122">More...</a><br/></td></tr>
<trclass="memdesc:a4bdb35ec34f49401a6b9becd15b8a3b5"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Carrier 40-bit HVAC message. Carrier HVAC messages contain only 40 bits, but it is sent three(3) times. Status: STABLE / Tested against a real device. <ahref="classIRrecv.html#a4bdb35ec34f49401a6b9becd15b8a3b5">More...</a><br/></td></tr>
<trclass="memdesc:a79d03c31da48a385ab47cc8f342ef9b3"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Carrier 64-bit HVAC message. Status: STABLE / Known to be working. <ahref="classIRrecv.html#a79d03c31da48a385ab47cc8f342ef9b3">More...</a><br/></td></tr>
<trclass="memdesc:ad97403174f05197a7fa9a4a0107e3111"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Haier HSU07-HEA03 remote message. Status: STABLE / Known to be working. <ahref="classIRrecv.html#ad97403174f05197a7fa9a4a0107e3111">More...</a><br/></td></tr>
<trclass="memdesc:afade8dac9b1d023e5e0946e6b2c08aea"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied G.I. Cable message. Status: Alpha / Not tested against a real device. <ahref="classIRrecv.html#afade8dac9b1d023e5e0946e6b2c08aea">More...</a><br/></td></tr>
<trclass="memdesc:a0d1eec83cf092f5621cb34b3e94777c4"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Whirlpool A/C message. Status: STABLE / Working as intended. <ahref="classIRrecv.html#a0d1eec83cf092f5621cb34b3e94777c4">More...</a><br/></td></tr>
<trclass="memdesc:a0f78e180ed731e8fb16d1c85aa721c95"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Panasonic AC message. Status: STABLE / Works with real device(s). <ahref="classIRrecv.html#a0f78e180ed731e8fb16d1c85aa721c95">More...</a><br/></td></tr>
<trclass="memdesc:a78a9487cbe8a562392a07a4090b3091e"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Pioneer message. Status: STABLE / Should be working. (Self decodes & real examples) <ahref="classIRrecv.html#a78a9487cbe8a562392a07a4090b3091e">More...</a><br/></td></tr>
<trclass="memdesc:a5d48b3c91434c18c7726cca504d75b73"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Vestel message. Status: Alpha / Needs testing against a real device. <ahref="classIRrecv.html#a5d48b3c91434c18c7726cca504d75b73">More...</a><br/></td></tr>
<trclass="memdesc:aea75ad0ba1d8fec33de16501940f2553"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied LEGO Power Functions message. Status: STABLE / Appears to work. <ahref="classIRrecv.html#aea75ad0ba1d8fec33de16501940f2553">More...</a><br/></td></tr>
<trclass="memdesc:a61cdf4d891654521afbc6ca9fb415745"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Symphony packet/message. Status: STABLE / Should be working. <ahref="classIRrecv.html#a61cdf4d891654521afbc6ca9fb415745">More...</a><br/></td></tr>
<trclass="memdesc:a8c91cc83770d243e942387cc16e9ca6f"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Delonghi A/C message. Status: STABLE / Expected to be working. <ahref="classIRrecv.html#a8c91cc83770d243e942387cc16e9ca6f">More...</a><br/></td></tr>
<trclass="memdesc:a675c45e6b32aaeca3de734ccf2f0c819"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Doshisha message. Status: STABLE / Works on real device. <ahref="classIRrecv.html#a675c45e6b32aaeca3de734ccf2f0c819">More...</a><br/></td></tr>
<trclass="memdesc:af61afacc9865232643164ba824e665ab"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the Multibrackets message. Status: BETA / Appears to be working. <ahref="classIRrecv.html#af61afacc9865232643164ba824e665ab">More...</a><br/></td></tr>
<trclass="memdesc:a2f022741309ad814bf11aec440a838d0"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Status: STABLE / Reported as working on a real device. <ahref="classIRrecv.html#a2f022741309ad814bf11aec440a838d0">More...</a><br/></td></tr>
<trclass="memdesc:a981cba14551c93af57f9c1c0e1775d12"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied CoronaAc message. Status: STABLE / Appears to be working. <ahref="classIRrecv.html#a981cba14551c93af57f9c1c0e1775d12">More...</a><br/></td></tr>
<trclass="memdesc:a72afd857c8b2e0192021a40afc96c2d8"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Decode the supplied Zepeal message. Status: STABLE / Works on real device. <ahref="classIRrecv.html#a72afd857c8b2e0192021a40afc96c2d8">More...</a><br/></td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">recvpin</td><td>The GPIO pin the IR receiver module's data pin is connected to. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">bufsize</td><td>Nr. of entries to have in the capture buffer. (Default: kRawBuf) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">timeout</td><td>Nr. of milli-Seconds of no signal before we stop capturing data. (Default: kTimeoutMs) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">save_buffer</td><td>Use a second (save) buffer to decode from. (Default: false) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">timer_num</td><td>Nr. of the ESP32 timer to use (0 to 3) (ESP32 Only) </td></tr>
<p>Class destructor Cleans up after the object is no longer needed. e.g. Frees up all memory used by the various buffers, and disables any timers or interrupts used. </p>
</div>
</div>
<h2class="groupheader">Member Function Documentation</h2>
<p>Match & decode a generic/typical IR message. The data is stored in result_bits_ptr or result_bytes_ptr depending on flag <code>use_bits</code>. </p>
<dlclass="section note"><dt>Note</dt><dd>Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement.</dd></dl>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">data_ptr</td><td>A pointer to where we are at in the capture buffer. </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">result_bits_ptr</td><td>A pointer to where to start storing the bits we decoded. </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">result_bytes_ptr</td><td>A pointer to where to start storing the bytes we decoded. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">use_bits</td><td>A flag indicating if we are to decode bits or bytes. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">remaining</td><td>The size of the capture buffer remaining. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>Nr. of data bits we expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">hdrmark</td><td>Nr. of uSeconds for the expected header mark signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">hdrspace</td><td>Nr. of uSeconds for the expected header space signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">onemark</td><td>Nr. of uSeconds in an expected mark signal for a '1' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">onespace</td><td>Nr. of uSecs in an expected space signal for a '1' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">zeromark</td><td>Nr. of uSecs in an expected mark signal for a '0' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">zerospace</td><td>Nr. of uSecs in an expected space signal for a '0' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">footermark</td><td>Nr. of uSeconds for the expected footer mark signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">footerspace</td><td>Nr. of uSeconds for the expected footer space/gap signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">atleast</td><td>Is the match on the footerspace a matchAtLeast or matchSpace? </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">tolerance</td><td>Percentage error margin to allow. (Default: kUseDefTol) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">excess</td><td>Nr. of uSeconds. (Def: kMarkExcess) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">MSBfirst</td><td>Bit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>If successful, how many buffer entries were used. Otherwise 0. </dd></dl>
<p>Make a copy of the interrupt state & buffer data. Needed because irparams is marked as volatile, thus memcpy() isn't allowed. Only call this when you know the interrupt handlers won't modify anything. i.e. In kStopState. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">src</td><td>Pointer to an <aclass="el"href="structirparams__t.html"title="Information for the interrupt handler.">irparams_t</a> structure to copy from. </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">dst</td><td>Pointer to an <aclass="el"href="structirparams__t.html"title="Information for the interrupt handler.">irparams_t</a> structure to copy to. </td></tr>
<p>Remove or merge pulses in the capture buffer that are too short. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the <aclass="el"href="classdecode__results.html"title="Results returned from the decoder.">decode_results</a> we are going to filter. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">floor</td><td>Only allow values in the buffer large than this. (in microSeconds) </td></tr>
<p>Decodes the received IR message. If the interrupt state is saved, we will immediately resume waiting for the next IR message to avoid missing messages. </p>
<dlclass="section note"><dt>Note</dt><dd>There is a trade-off here. Saving the state means less time lost until we can receiving the next message vs. using more RAM. Choose appropriately. </dd></dl>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">results</td><td>A PTR to where the decoded IR message will be stored. </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">save</td><td>A PTR to an <aclass="el"href="structirparams__t.html"title="Information for the interrupt handler.">irparams_t</a> instance in which to save the interrupt's memory/state. NULL means don't save it. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">max_skip</td><td>Maximum Nr. of pulses at the begining of a capture we can skip when attempting to find a protocol we can successfully decode. This parameter can dramatically improve detection of protocols when there is light IR interference just before an incoming IR message, however, it comes at a steep performace price. (Default is 0. No skipping.) </td></tr>
</table>
</dd>
</dl>
<dlclass="section warning"><dt>Warning</dt><dd>Increasing the <code>max_skip</code> value will dramatically (linearly) increase the cpu time & usage to decode protocols. e.g. 0 -> 1 will be a 2x increase in cpu usage/time. 0 -> 2 will be a 3x increase etc. If you are going to do this, consider disabling protocol decoding for protocols you are not expecting. </dd></dl>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">noise_floor</td><td>Pulses below this size (in usecs) will be removed or merged prior to any decoding. This is to try to remove noise/poor readings & slightly increase the chances of a successful decode but at the cost of data fidelity & integrity. (Defaults to 0 usecs. i.e. Don't filter; which is safe!) </td></tr>
<dlclass="section warning"><dt>Warning</dt><dd>DANGER: <b>Here Be Dragons!</b> If you set the <code>noise_floor</code> value too high, it <b>WILL</b> break decoding of some protocols. You have been warned! <b>Any</b> non-zero value has the potential to <b>cook</b> the captured raw data i.e. The raw data is going to lie to you. It may obscure hardware, circuit, & environment issues thus making it impossible to support you accurately or confidently. Values of <= 50 usecs will probably be safe. 51 - 100 usecs <b>might</b> be okay. 100 - 150 usecs is "Danger, Will Robinson!". 150 - 200 usecs expect broken protocols. At 200+ usecs, you <b>have</b> protocols you can't decode!! </dd></dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean indicating if an IR message is ready or not. </dd></dl>
<p>Decode the supplied Airwell "Manchester code" message. </p>
<p>Status: BETA / Appears to be working. </p><dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Aiwa RC T501 message. Status: BETA / Should work. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>Aiwa RC T501 appears to be a 42 bit variant of the NEC1 protocol. However, we historically (original Arduino IRremote project) treats it as a 15 bit (data) protocol. So, we expect nbits to typically be 15, and we will remove the prefix and postfix from the raw data, and use that as the result. </dd></dl>
<p>Decode the supplied Amcor HVAC message. Status: STABLE / Reported as working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>This decoder is based soley off sendArgo(). We have no actual captures to test this against. If you have one of these units, please let us know. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>Carrier HVAC messages contain only 32 bits, but it is sent three(3) times. i.e. normal + inverted + normal Status: BETA / Probably works. </dd></dl>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Carrier 40-bit HVAC message. Carrier HVAC messages contain only 40 bits, but it is sent three(3) times. Status: STABLE / Tested against a real device. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Carrier 64-bit HVAC message. Status: STABLE / Known to be working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Coolix A/C message. Status: STABLE / Known Working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied CoronaAc message. Status: STABLE / Appears to be working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store it </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Daikin 280-bit message. (DAIKIN) Status: STABLE / Reported as working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Daikin 128-bit message. (DAIKIN128) Status: STABLE / Known Working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Daikin 152-bit message. (DAIKIN152) Status: STABLE / Known Working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Daikin 176-bit message. (DAIKIN176) Status: STABLE / Expected to work. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Daikin 312-bit message. (DAIKIN2) Status: STABLE / Works as expected. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Daikin 216-bit message. (DAIKIN216) Status: STABLE / Should be working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Delonghi A/C message. Status: STABLE / Expected to be working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Delonghi A/C message. Status: STABLE / Should work fine. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied DISH NETWORK message. Status: ALPHA (untested and unconfirmed.) </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>Dishplayer is a different protocol. Typically a DISH device needs to get a command a total of at least 4 times to accept it. </dd></dl>
<p>Decode the supplied Doshisha message. Status: STABLE / Works on real device. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Electra A/C message. Status: STABLE / Known working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>Experimental data indicates there are at least three messages (first + 2 repeats). We only require the first + a single repeat to match. This helps us distinguish it from NEC messages which are near identical. </dd></dl>
<p>Decode the supplied Fujitsu AC IR message if possible. Status: STABLE / Working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied G.I. Cable message. Status: Alpha / Not tested against a real device. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Haier HSU07-HEA03 remote message. Status: STABLE / Known to be working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Haier YR-W02 remote A/C message. Status: BETA / Appears to be working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode any arbitrary IR message into a 32-bit code value. Instead of decoding using a standard encoding scheme (e.g. Sony, NEC, RC5), the code is hashed to a 32-bit value. </p>
<p>The algorithm: look at the sequence of MARK signals, and see if each one is shorter (0), the same length (1), or longer (2) than the previous. Do the same with the SPACE signals. Hash the resulting sequence of 0's, 1's, and 2's to a 32-bit value. This will give a unique value for each different code (probably), for most code systems. </p><dlclass="section see"><dt>See also</dt><dd><ahref="http://arcfn.com/2010/01/using-arbitrary-remotes-with-arduino.html">http://arcfn.com/2010/01/using-arbitrary-remotes-with-arduino.html</a></dd></dl>
<dlclass="section note"><dt>Note</dt><dd>This isn't a "real" decoding, just an arbitrary value. Hopefully this code is unique for each button. </dd></dl>
<p>Decode the supplied Hitachi A/C message. Status: STABLE / Expected to work. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. Typically kHitachiAcBits, kHitachiAc1Bits, kHitachiAc2Bits, kHitachiAc344Bits </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">MSBfirst</td><td>Is the data per byte stored in MSB First (true) or LSB First order(false)? </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Hitachi 15to27-byte/120to216-bit A/C message. Status: STABLE / Works fine. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>This protocol is almost exactly the same as HitachiAC424 except this variant has subtle timing differences and multiple lengths. There are five(5) typical lengths: kHitachiAc3MinStateLength (Cancel Timer), kHitachiAc3MinStateLength + 2 (Change Temp), kHitachiAc3StateLength - 6 (Change Mode), kHitachiAc3StateLength - 4 (Normal), & kHitachiAc3StateLength (Set Timer) </dd></dl>
<p>Decode the supplied Hitachi 53-byte/424-bit A/C message. Status: STABLE / Reported as working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>This protocol is almost exactly the same as HitachiAC2 except this variant has a leader section as well, and subtle timing differences. It is also in LSBF order (per byte), rather than MSBF order. </dd></dl>
<p>Decode the supplied Inax Toilet message. Status: Stable / Known working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied JVC message. Status: Stable / Known working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>JVC repeat codes don't have a header. </dd></dl>
<p>Decode the supplied Kelvinator message. Status: STABLE / Known working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Lasertag message. Status: BETA / Appears to be working 90% of the time. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>This protocol is pretty much just raw Manchester encoding. </dd></dl>
<dlclass="todo"><dt><b><aclass="el"href="todo.html#_todo000002">Todo:</a></b></dt><dd>Convert to using <code><aclass="el"href="classIRrecv.html#ade70777ad0e047e11b99b03d8f5e3728"title="Match & decode a Manchester Code <= 64bit IR message. The data is stored at result_ptr.">matchManchester()</a></code> if we can. </dd></dl>
<p>Decode the supplied LEGO Power Functions message. Status: STABLE / Appears to work. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied LG message. Status: STABLE / Working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. Typically kLgBits or kLg32Bits. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>LG protocol has a repeat code which is 4 items long. Even though the protocol has 28/32 bits of data, only 24/28 bits are distinct. In transmission order, the 28/32 bits are constructed as follows: 8/12 bits of address + 16 bits of command + 4 bits of checksum. </dd>
<dd>
LG 32bit protocol appears near identical to the Samsung protocol. They possibly differ on how they repeat and initial HDR mark. </dd></dl>
<p>Decode the supplied Lutron message. Status: STABLE / Working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied MagiQuest message. Status: Beta / Should work. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>MagiQuest protocol appears to be a header of 8 'zero' bits, followed by 32 bits of "wand ID" and finally 16 bits of "magnitude". Even though we describe this protocol as 56 bits, it really only has 48 bits of data that matter. In transmission order, 8 zeros + 32 wand_id + 16 magnitude. </dd></dl>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Midea message. Status: Alpha / Needs testing against a real device. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. Typically kHitachiAcBits, kHitachiAc1Bits, kHitachiAc2Bits, kHitachiAc344Bits </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
<p>Decode the supplied Midea24 message. Status: STABLE / Confirmed working on a real device. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>This protocol is basically a 48-bit version of the NEC protocol with alternate bytes inverted, thus only 24 bits of real data. </dd></dl>
<dlclass="section warning"><dt>Warning</dt><dd>Can't be used beyond 32 bits. </dd></dl>
<p>Decode the supplied Mirage message. Status: STABLE / Reported as working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>This protocol appears to have no header. </dd></dl>
<dlclass="section see"><dt>See also</dt><dd>GlobalCache's Control Tower's Mitsubishi TV data. </dd></dl>
<p>Decode the supplied Mitsubishi/TCL 112-bit A/C message. (MITSUBISHI112, TCL112AC) Status: STABLE / Reported as working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section note"><dt>Note</dt><dd>Note Mitsubishi112 & Tcl112Ac are basically the same protocol. The only significant difference I can see is Mitsubishi112 has a slightly longer header mark. We will use that to determine which variant it should be. The other differences require full decoding and only only with certain settings. There are some other timing differences too, but the tolerances will overlap. </dd></dl>
<p>Decode the supplied Mitsubishi 136-bit A/C message. (MITSUBISHI136) Status: STABLE / Reported as working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
<p>Decode the supplied second variation of a Mitsubishi 16-bit message. Status: STABLE / Working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
<p>Decode the supplied Mitsubishi Heavy Industries A/C message. Status: BETA / Appears to be working. Needs testing against a real device. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. Typically kMitsubishiHeavy88Bits or kMitsubishiHeavy152Bits (def). </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the Multibrackets message. Status: BETA / Appears to be working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied MWM message. Status: Implemented. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>This protocol is 2400 bps serial, 1 start bit (mark), 1 stop bit (space), no parity </dd></dl>
<p>Decode the supplied NEC (Renesas) message. Status: STABLE / Known good. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>NEC protocol has three variants/forms. Normal: an 8 bit address & an 8 bit command in 32 bit data form. i.e. address + inverted(address) + command + inverted(command) Extended: a 16 bit address & an 8 bit command in 32 bit data form. i.e. address + command + inverted(command) Repeat: a 0-bit code. i.e. No data bits. Just the header + footer. </dd></dl>
<p>Decode the supplied Neoclima message. Status: STABLE / Known working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Nikai message. Status: STABLE / Working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
<p>Decode the supplied Panasonic message. Status: STABLE / Should be working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">manufacturer</td><td>A 16-bit manufacturer code. e.g. 0x4004 is Panasonic </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section warning"><dt>Warning</dt><dd>Results to be used with <code>sendPanasonic64()</code>, not <code>sendPanasonic()</code>. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>Panasonic 48-bit protocol is a modified version of Kaseikyo. </dd></dl>
<p>Decode the supplied Panasonic AC message. Status: STABLE / Works with real device(s). </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Panasonic AC 32/16bit message. Status: STABLE / Confirmed working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. Typically: kPanasonicAc32Bits or kPanasonicAc32Bits/2 </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>Protocol has two known configurations: (long) Two sections of identical 32 bit data block pairs. ie. (32+32)+(32+32)=128 or (short) A single section of 3 x identical 32 bit data blocks i.e. (32+32+32)=96 Each data block also has a pair of 8 bits repeated identical bits. e.g. (8+8)+(8+8)=32</dd></dl>
<p>So each long version really only has 32 unique bits, and the short version really only has 16 unique bits. </p>
<p>Decode the supplied Pioneer message. Status: STABLE / Should be working. (Self decodes & real examples) </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>The 'toggle' bit is included as the 6th (MSB) address bit, the MSB of data, & in the count of bits decoded. </dd></dl>
<dlclass="todo"><dt><b><aclass="el"href="todo.html#_todo000004">Todo:</a></b></dt><dd>Serious testing of the RC-5X and strict aspects needs to be done. </dd></dl>
<p>Decode the supplied RC6 message. Status: Stable. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="todo"><dt><b><aclass="el"href="todo.html#_todo000005">Todo:</a></b></dt><dd>Testing of the strict compliance aspects. </dd></dl>
<p>Decode a Philips RC-MM packet (between 12 & 32 bits) if possible. Status: STABLE / Should be working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Samsung 32-bit message. Status: STABLE. </p>
<dlclass="section note"><dt>Note</dt><dd>Samsung messages whilst 32 bits in size, only contain 16 bits of distinct data. e.g. In transmition order: customer_byte + customer_byte(same) + address_byte + invert(address_byte) </dd></dl>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>LG 32bit protocol appears near identical to the Samsung protocol. They differ on their compliance criteria and how they repeat. </dd></dl>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Samsung A/C message. Status: Stable / Known to be working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied SanyoAc message. Status: STABLE / Reported as working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>Based on @marcosamarinho's work. This protocol uses the NEC protocol. However, data is formatted as : address(13 bits), !address, command (8 bits), !command. According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon Information for this protocol is available at the Sanyo LC7461 datasheet. </dd></dl>
<p>Decode the supplied Sharp message. Status: STABLE / Working fine. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">expansion</td><td>Should we expect the expansion bit to be set. Default is true. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>This procedure returns a value suitable for use in <code>sendSharpRaw()</code>. </dd></dl>
<dlclass="todo"><dt><b><aclass="el"href="todo.html#_todo000009">Todo:</a></b></dt><dd>Need to ensure capture of the inverted message as it can be missed due to the interrupt timeout used to detect an end of message. Several compliance checks are disabled until that is resolved. </dd></dl>
<p>Decode the supplied Sharp A/C message. Status: STABLE / Known working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Sony/SIRC message. Status: STABLE / Should be working. strict mode is ALPHA / Untested. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>SONY protocol, SIRC (Serial Infra-Red Control) can be 12, 15, or 20 bits long. </dd></dl>
<p>Decode the supplied Symphony packet/message. Status: STABLE / Should be working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Status: STABLE / Reported as working on a real device. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to data to decode & where to store the decode </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect (kTechnibelAcBits). </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Teco message. Status: STABLE / Tested. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Transcold A/C message. Status: STABLE / Known Working. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Trotec message. Status: STABLE / Works. Untested on real devices. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Vestel message. Status: Alpha / Needs testing against a real device. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Voltas message. Status: STABLE / Working on real device. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Whirlpool A/C message. Status: STABLE / Working as intended. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Whynter message. Status: STABLE / Working. Strict mode is ALPHA. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the result </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>True if it can decode it, false if it can't. </dd></dl>
<p>Decode the supplied Zepeal message. Status: STABLE / Works on real device. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode & where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">offset</td><td>The starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>The number of data bits to expect. Typically kZepealBits. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">strict</td><td>Flag indicating if we should perform strict matching. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A boolean. True if it can decode it, false if it can't. </dd></dl>
<p>Set up and (re)start the IR capture mechanism. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">pullup</td><td>A flag indicating should the GPIO use the internal pullup resistor. (Default: <code>false</code>. i.e. No.) </td></tr>
<p>Gets one undecoded level at a time from the raw buffer. The RC5/6 decoding is easier if the data is broken into time intervals. E.g. if the buffer has MARK for 2 time intervals and SPACE for 1, successive calls to getRClevel will return MARK, MARK, SPACE. offset and used are updated to keep track of the current position. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">results</td><td>Ptr to the data to decode and where to store the decode result. </td></tr>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">offset</td><td>Ptr to the currect offset to the rawbuf. </td></tr>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">used</td><td>Ptr to the current used counter. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">bitTime</td><td>Time interval of single bit in microseconds. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">tolerance</td><td>Percent tolerance to be used in matching. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">excess</td><td>Extra useconds to add to Marks & removed from Spaces. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">delta</td><td>A non-scaling (+/-) error margin (in useconds). </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">maxwidth</td><td>Maximum number of successive levels to find in a single level (default is 3) </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>MARK, SPACE, or -1 for error. (The measured time interval is not a multiple of t1.) </dd></dl>
<p>Match & decode the typical data section of an IR message. The bytes are stored at result_ptr. The first byte in the result equates to the first byte encountered, and so on. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">data_ptr</td><td>A pointer to where we are at in the capture buffer. </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">result_ptr</td><td>A ptr to where to start storing the bytes we decoded. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">remaining</td><td>The size of the capture buffer remaining. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbytes</td><td>Nr. of data bytes we expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">onemark</td><td>Nr. of uSeconds in an expected mark signal for a '1' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">onespace</td><td>Nr. of uSecs in an expected space signal for a '1' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">zeromark</td><td>Nr. of uSecs in an expected mark signal for a '0' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">zerospace</td><td>Nr. of uSecs in an expected space signal for a '0' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">tolerance</td><td>Percentage error margin to allow. (Default: kUseDefTol) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">excess</td><td>Nr. of uSeconds. (Def: kMarkExcess) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">MSBfirst</td><td>Bit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>If successful, how many buffer entries were used. Otherwise 0. </dd></dl>
<p>Match & decode the typical data section of an IR message. The data value is stored in the least significant bits reguardless of the bit ordering requested. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">data_ptr</td><td>A pointer to where we are at in the capture buffer. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>Nr. of data bits we expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">onemark</td><td>Nr. of uSeconds in an expected mark signal for a '1' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">onespace</td><td>Nr. of uSecs in an expected space signal for a '1' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">zeromark</td><td>Nr. of uSecs in an expected mark signal for a '0' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">zerospace</td><td>Nr. of uSecs in an expected space signal for a '0' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">tolerance</td><td>Percentage error margin to allow. (Default: kUseDefTol) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">excess</td><td>Nr. of uSeconds. (Def: kMarkExcess) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">MSBfirst</td><td>Bit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A <aclass="el"href="structmatch__result__t.html"title="Results from a data match.">match_result_t</a> structure containing the success (or not), the data value, and how many buffer entries were used. </dd></dl>
<p>Match & decode a generic/typical <= 64bit IR message. The data is stored at result_ptr. </p>
<dlclass="section note"><dt>Note</dt><dd>Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement.</dd></dl>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">data_ptr</td><td>A pointer to where we are at in the capture buffer. </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">result_ptr</td><td>A ptr to where to start storing the bits we decoded. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">remaining</td><td>The size of the capture buffer remaining. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>Nr. of data bits we expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">hdrmark</td><td>Nr. of uSeconds for the expected header mark signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">hdrspace</td><td>Nr. of uSeconds for the expected header space signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">onemark</td><td>Nr. of uSeconds in an expected mark signal for a '1' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">onespace</td><td>Nr. of uSecs in an expected space signal for a '1' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">zeromark</td><td>Nr. of uSecs in an expected mark signal for a '0' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">zerospace</td><td>Nr. of uSecs in an expected space signal for a '0' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">footermark</td><td>Nr. of uSeconds for the expected footer mark signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">footerspace</td><td>Nr. of uSeconds for the expected footer space/gap signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">atleast</td><td>Is the match on the footerspace a matchAtLeast or matchSpace? </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">tolerance</td><td>Percentage error margin to allow. (Default: kUseDefTol) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">excess</td><td>Nr. of uSeconds. (Def: kMarkExcess) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">MSBfirst</td><td>Bit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>If successful, how many buffer entries were used. Otherwise 0. </dd></dl>
<p>Match & decode a generic/typical > 64bit IR message. The bytes are stored at result_ptr. The first byte in the result equates to the first byte encountered, and so on. </p>
<dlclass="section note"><dt>Note</dt><dd>Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement. </dd></dl>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">data_ptr</td><td>A pointer to where we are at in the capture buffer. </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">result_ptr</td><td>A ptr to where to start storing the bytes we decoded. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">remaining</td><td>The size of the capture buffer remaining. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>Nr. of data bits we expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">hdrmark</td><td>Nr. of uSeconds for the expected header mark signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">hdrspace</td><td>Nr. of uSeconds for the expected header space signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">onemark</td><td>Nr. of uSeconds in an expected mark signal for a '1' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">onespace</td><td>Nr. of uSecs in an expected space signal for a '1' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">zeromark</td><td>Nr. of uSecs in an expected mark signal for a '0' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">zerospace</td><td>Nr. of uSecs in an expected space signal for a '0' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">footermark</td><td>Nr. of uSeconds for the expected footer mark signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">footerspace</td><td>Nr. of uSeconds for the expected footer space/gap signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">atleast</td><td>Is the match on the footerspace a matchAtLeast or matchSpace? </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">tolerance</td><td>Percentage error margin to allow. (Default: kUseDefTol) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">excess</td><td>Nr. of uSeconds. (Def: kMarkExcess) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">MSBfirst</td><td>Bit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>If successful, how many buffer entries were used. Otherwise 0. </dd></dl>
<p>Match & decode a generic/typical constant bit time <= 64bit IR message. The data is stored at result_ptr. </p>
<dlclass="section note"><dt>Note</dt><dd>Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement. </dd></dl>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">data_ptr</td><td>A pointer to where we are at in the capture buffer. </td></tr>
</table>
</dd>
</dl>
<dlclass="section note"><dt>Note</dt><dd><code>data_ptr</code> is assumed to be pointing to a "Mark", not a "Space". </dd></dl>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">result_ptr</td><td>A ptr to where to start storing the bits we decoded. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">remaining</td><td>The size of the capture buffer remaining. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>Nr. of data bits we expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">hdrmark</td><td>Nr. of uSeconds for the expected header mark signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">hdrspace</td><td>Nr. of uSeconds for the expected header space signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">one</td><td>Nr. of uSeconds in an expected mark signal for a '1' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">zero</td><td>Nr. of uSeconds in an expected mark signal for a '0' bit. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">footermark</td><td>Nr. of uSeconds for the expected footer mark signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">footerspace</td><td>Nr. of uSeconds for the expected footer space/gap signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">atleast</td><td>Is the match on the footerspace a matchAtLeast or matchSpace? </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">tolerance</td><td>Percentage error margin to allow. (Default: kUseDefTol) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">excess</td><td>Nr. of uSeconds. (Def: kMarkExcess) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">MSBfirst</td><td>Bit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>If successful, how many buffer entries were used. Otherwise 0. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>Parameters one + zero add up to the total time for a bit. e.g. mark(one) + space(zero) is a <code>1</code>, mark(zero) + space(one) is a <code>0</code>. </dd></dl>
<p>Match & decode a Manchester Code <= 64bit IR message. The data is stored at result_ptr. </p>
<dlclass="section note"><dt>Note</dt><dd>Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement. </dd></dl>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">data_ptr</td><td>A pointer to where we are at in the capture buffer. </td></tr>
</table>
</dd>
</dl>
<dlclass="section note"><dt>Note</dt><dd><code>data_ptr</code> is assumed to be pointing to a "Mark", not a "Space". </dd></dl>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">result_ptr</td><td>A ptr to where to start storing the bits we decoded. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">remaining</td><td>The size of the capture buffer remaining. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>Nr. of data bits we expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">hdrmark</td><td>Nr. of uSeconds for the expected header mark signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">hdrspace</td><td>Nr. of uSeconds for the expected header space signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">half_period</td><td>Nr. of uSeconds for half the clock's period. i.e. 1/2 wavelength </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">footermark</td><td>Nr. of uSeconds for the expected footer mark signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">footerspace</td><td>Nr. of uSeconds for the expected footer space/gap signal. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">atleast</td><td>Is the match on the footerspace a matchAtLeast or matchSpace? </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">tolerance</td><td>Percentage error margin to allow. (Default: kUseDefTol) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">excess</td><td>Nr. of uSeconds. (Def: kMarkExcess) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">MSBfirst</td><td>Bit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">GEThomas</td><td>Use G.E. Thomas (true) or IEEE 802.3 (false) convention? </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>If successful, how many buffer entries were used. Otherwise 0. </dd></dl>
<p>Match & decode a Manchester Code data (<= 64bits. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">data_ptr</td><td>A pointer to where we are at in the capture buffer. </td></tr>
</table>
</dd>
</dl>
<dlclass="section note"><dt>Note</dt><dd><code>data_ptr</code> is assumed to be pointing to a "Mark", not a "Space". </dd></dl>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">result_ptr</td><td>A ptr to where to start storing the bits we decoded. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">remaining</td><td>The size of the capture buffer remaining. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nbits</td><td>Nr. of data bits we expect. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">half_period</td><td>Nr. of uSeconds for half the clock's period. i.e. 1/2 wavelength </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">tolerance</td><td>Percentage error margin to allow. (Default: kUseDefTol) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">starting_balance</td><td>Amount of uSeconds to assume exists prior to the current value pointed too. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">excess</td><td>Nr. of uSeconds. (Def: kMarkExcess) </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">MSBfirst</td><td>Bit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">GEThomas</td><td>Use G.E. Thomas (true) or IEEE 802.3 (false) convention? </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>If successful, how many buffer entries were used. Otherwise 0. </dd></dl>
<dlclass="todo"><dt><b><aclass="el"href="todo.html#_todo000010">Todo:</a></b></dt><dd>Clean up and optimise this. It is just "get it working code" atm. </dd></dl>
<dlclass="section note"><dt>Note</dt><dd>This is required if <code><aclass="el"href="classIRrecv.html#aeaa5c07a8b46f8fbb982f996cc1f9f4b"title="Decodes the received IR message. If the interrupt state is saved, we will immediately resume waiting ...">decode()</a></code> is successful and <code>save_buffer</code> was not set when the class was instanciated. </dd></dl>
<dlclass="section see"><dt>See also</dt><dd><aclass="el"href="classIRrecv.html"title="Class for receiving IR messages.">IRrecv</a> class constructor </dd></dl>