<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_group__buffer" xml:lang="en-US">
<title>Modbus Buffer Management</title>
<indexterm><primary>Modbus Buffer Management</primary></indexterm>
<simplesect>
    <title>Functions    </title>
        <itemizedlist>
            <listitem><para><link linkend="_class_timer">void</link> <link linkend="_group__buffer_1ga31da354e2d02145b8acb964adc1d4463">Modbus::buildException</link> (<link linkend="_class_timer">uint8_t</link> <link linkend="_class_timer">u8exception</link>)</para>

<para>This method builds an exception message. </para>
</listitem>
            <listitem><para><link linkend="_class_timer">uint16_t</link> <link linkend="_group__buffer_1ga29fedf508a0c8c795baf07949aa76c03">Modbus::calcCRC</link> (<link linkend="_class_timer">uint8_t</link> <link linkend="_class_timer">u8length</link>)</para>

<para>This method calculates CRC. </para>
</listitem>
            <listitem><para><link linkend="_class_timer">uint16_t</link> <link linkend="_group__buffer_1ga6883c7f3ff12f084ed56d559d4e06ed0">Modbus::getErrCnt</link> ()</para>

<para>error counter </para>
</listitem>
            <listitem><para><link linkend="_class_timer">uint16_t</link> <link linkend="_group__buffer_1ga4fa6ede8df85b7cc70b1282b9547378a">Modbus::getInCnt</link> ()</para>

<para>number of incoming messages </para>
</listitem>
            <listitem><para><link linkend="_class_timer">uint8_t</link> <link linkend="_group__buffer_1gace7f726db13adc8feeceab987b719531">Modbus::getLastError</link> ()</para>

<para>get last error message </para>
</listitem>
            <listitem><para><link linkend="_class_timer">uint16_t</link> <link linkend="_group__buffer_1ga6f831ecaf3678c27dafb663a28bf81f0">Modbus::getOutCnt</link> ()</para>

<para>number of outcoming messages </para>
</listitem>
            <listitem><para><link linkend="_class_timer">int8_t</link> <link linkend="_group__buffer_1gacdd8ac1b4e6283eb2adddaf182957d55">Modbus::getRxBuffer</link> ()</para>

<para>This method moves Serial buffer data to the <link linkend="_class_modbus">Modbus</link> au8Buffer. </para>
</listitem>
            <listitem><para><link linkend="_class_timer">uint8_t</link> <link linkend="_group__buffer_1ga2f39717d957a929af488c9120488fcdc">Modbus::getState</link> ()</para>
</listitem>
            <listitem><para><link linkend="_class_timer">void</link> <link linkend="_group__buffer_1gaea3cc68f4b7f9e0a5715fdbef60fc9fb">Modbus::sendTxBuffer</link> ()</para>

<para>This method transmits au8Buffer to Serial line. Only if u8txenpin != 0, there is a flow handling in order to keep the RS485 transceiver in output state as long as the message is being sent. This is done with UCSRxA register. The CRC is appended to the buffer before starting to send it. </para>
</listitem>
            <listitem><para><link linkend="_class_timer">uint8_t</link> <link linkend="_group__buffer_1ga3648d41197ad3656bbd69b6b00cd7ae4">Modbus::validateAnswer</link> ()</para>

<para>This method validates master incoming messages. </para>
</listitem>
            <listitem><para><link linkend="_class_timer">uint8_t</link> <link linkend="_group__buffer_1gad111ae134be3bf012fc86983c32edeff">Modbus::validateRequest</link> ()</para>

<para>This method validates slave incoming messages. </para>
</listitem>
        </itemizedlist>
</simplesect>
<section>
<title>Detailed Description</title>
</section>
<section>
<title>Function Documentation</title>
<anchor xml:id="_group__buffer_1ga31da354e2d02145b8acb964adc1d4463"/><section>
    <title>buildException()</title>
<indexterm><primary>buildException</primary><secondary>Modbus Buffer Management</secondary></indexterm>
<indexterm><primary>Modbus Buffer Management</primary><secondary>buildException</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">void</link> Modbus::buildException (<link linkend="_class_timer">uint8_t</link> u8exception)<computeroutput>[private]</computeroutput></computeroutput></para><para>

<para>This method builds an exception message. </para>
</para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l01244">1244</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">01245 {
01246 &#32;&#32;&#32;&#32;<link linkend="_class_timer">uint8_t</link>&#32;<link linkend="_class_timer">u8func</link>&#32;=&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa389e03ce61ac2d93fd54069187ab58af">FUNC</link>];&#32;<emphasis role="comment">//&#32;get&#32;the&#32;original&#32;FUNC&#32;code</emphasis>
01247 
01248 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa001479a58fb44c39a29b20d565081a68">ID</link>]&#32;=&#32;<link linkend="_class_modbus_1a9240505a875fee9236a95942f277314a">u8id</link>;
01249 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa389e03ce61ac2d93fd54069187ab58af">FUNC</link>]&#32;=&#32;<link linkend="_class_timer">u8func</link>&#32;+&#32;0x80;
01250 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[2]&#32;=&#32;<link linkend="_class_timer">u8exception</link>;
01251 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;=&#32;<link linkend="__modbus_rtu_8h_1a06fc87d81c62e9abb8790b6e5713c55ba4bf89c487b3f7e29d56eb3fe657d6c05">EXCEPTION_SIZE</link>;
01252 }
</programlisting></section>
<anchor xml:id="_group__buffer_1ga29fedf508a0c8c795baf07949aa76c03"/><section>
    <title>calcCRC()</title>
<indexterm><primary>calcCRC</primary><secondary>Modbus Buffer Management</secondary></indexterm>
<indexterm><primary>Modbus Buffer Management</primary><secondary>calcCRC</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">uint16_t</link> Modbus::calcCRC (<link linkend="_class_timer">uint8_t</link> u8length)<computeroutput>[private]</computeroutput></computeroutput></para><para>

<para>This method calculates CRC. </para>
</para>

<para><formalpara><title>Returns</title>

<para>uint16_t calculated CRC value for the message </para>
</formalpara>
</para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l01096">1096</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">01097 {
01098 &#32;&#32;&#32;&#32;<emphasis role="keywordtype">unsigned</emphasis>&#32;<emphasis role="keywordtype">int</emphasis>&#32;<link linkend="_class_timer">temp</link>,&#32;<link linkend="_class_timer">temp2</link>,&#32;<link linkend="_class_timer">flag</link>;
01099 &#32;&#32;&#32;&#32;<link linkend="_class_timer">temp</link>&#32;=&#32;0xFFFF;
01100 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">for</emphasis>&#32;(<emphasis role="keywordtype">unsigned</emphasis>&#32;<emphasis role="keywordtype">char</emphasis>&#32;<link linkend="_class_timer">i</link>&#32;=&#32;0;&#32;<link linkend="_class_timer">i</link>&#32;&lt;&#32;<link linkend="_class_timer">u8length</link>;&#32;<link linkend="_class_timer">i</link>++)
01101 &#32;&#32;&#32;&#32;{
01102 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">temp</link>&#32;=&#32;<link linkend="_class_timer">temp</link>&#32;^&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="_class_timer">i</link>];
01103 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;&#32;Serial.println(au8Buffer[i],&#32;DEC);</emphasis>
01104 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">for</emphasis>&#32;(<emphasis role="keywordtype">unsigned</emphasis>&#32;<emphasis role="keywordtype">char</emphasis>&#32;<link linkend="_class_timer">j</link>&#32;=&#32;1;&#32;<link linkend="_class_timer">j</link>&#32;&lt;=&#32;8;&#32;<link linkend="_class_timer">j</link>++)
01105 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;{
01106 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">flag</link>&#32;=&#32;<link linkend="_class_timer">temp</link>&#32;&amp;&#32;0x0001;
01107 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">temp</link>&#32;&gt;&gt;=&#32;1;
01108 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">flag</link>)
01109 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">temp</link>&#32;^=&#32;0xA001;
01110 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}
01111 &#32;&#32;&#32;&#32;}
01112 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;Reverse&#32;byte&#32;order.</emphasis>
01113 &#32;&#32;&#32;&#32;<link linkend="_class_timer">temp2</link>&#32;=&#32;<link linkend="_class_timer">temp</link>&#32;&gt;&gt;&#32;8;
01114 &#32;&#32;&#32;&#32;<link linkend="_class_timer">temp</link>&#32;=&#32;(<link linkend="_class_timer">temp</link>&#32;&lt;&lt;&#32;8)&#32;|&#32;<link linkend="_class_timer">temp2</link>;
01115 &#32;&#32;&#32;&#32;<link linkend="_class_timer">temp</link>&#32;&amp;=&#32;0xFFFF;
01116 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;the&#32;returned&#32;value&#32;is&#32;already&#32;swapped</emphasis>
01117 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;crcLo&#32;byte&#32;is&#32;first&#32;&amp;&#32;crcHi&#32;byte&#32;is&#32;last</emphasis>
01118 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_class_timer">temp</link>;
01119 }
</programlisting></section>
<anchor xml:id="_group__buffer_1ga6883c7f3ff12f084ed56d559d4e06ed0"/><section>
    <title>getErrCnt()</title>
<indexterm><primary>getErrCnt</primary><secondary>Modbus Buffer Management</secondary></indexterm>
<indexterm><primary>Modbus Buffer Management</primary><secondary>getErrCnt</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">uint16_t</link> Modbus::getErrCnt ( )</computeroutput></para><para>

<para>error counter </para>
</para>

<para>Get errors counter value This can be useful to diagnose communication.</para>

<para><formalpara><title>Returns</title>

<para>errors counter </para>
</formalpara>
</para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l00545">545</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">00546 {
00547 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_class_modbus_1a862d944031133b170634809b94f35987">u16errCnt</link>;
00548 }
</programlisting></section>
<anchor xml:id="_group__buffer_1ga4fa6ede8df85b7cc70b1282b9547378a"/><section>
    <title>getInCnt()</title>
<indexterm><primary>getInCnt</primary><secondary>Modbus Buffer Management</secondary></indexterm>
<indexterm><primary>Modbus Buffer Management</primary><secondary>getInCnt</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">uint16_t</link> Modbus::getInCnt ( )</computeroutput></para><para>

<para>number of incoming messages </para>
</para>

<para>Get input messages counter value This can be useful to diagnose communication.</para>

<para><formalpara><title>Returns</title>

<para>input messages counter </para>
</formalpara>
</para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l00519">519</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">00520 {
00521 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_class_modbus_1a779648af69bddfaa6a4f4bf503bba9fb">u16InCnt</link>;
00522 }
</programlisting></section>
<anchor xml:id="_group__buffer_1gace7f726db13adc8feeceab987b719531"/><section>
    <title>getLastError()</title>
<indexterm><primary>getLastError</primary><secondary>Modbus Buffer Management</secondary></indexterm>
<indexterm><primary>Modbus Buffer Management</primary><secondary>getLastError</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">uint8_t</link> Modbus::getLastError ( )</computeroutput></para><para>

<para>get last error message </para>
</para>

<para>Get the last error in the protocol processor</para>

<para>@returnreturn NO_REPLY = 255 Time-out <formalpara><title>Returns</title>

<para>EXC_FUNC_CODE = 1 Function code not available </para>

<para>EXC_ADDR_RANGE = 2 Address beyond available space for <link linkend="_class_modbus">Modbus</link> registers </para>

<para>EXC_REGS_QUANT = 3 Coils or registers number beyond the available space </para>
</formalpara>
</para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l00575">575</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">00576 {
00577 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_class_modbus_1a3f64a088bb97e0c4ed84f14c4d9b35c6">u8lastError</link>;
00578 }
</programlisting></section>
<anchor xml:id="_group__buffer_1ga6f831ecaf3678c27dafb663a28bf81f0"/><section>
    <title>getOutCnt()</title>
<indexterm><primary>getOutCnt</primary><secondary>Modbus Buffer Management</secondary></indexterm>
<indexterm><primary>Modbus Buffer Management</primary><secondary>getOutCnt</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">uint16_t</link> Modbus::getOutCnt ( )</computeroutput></para><para>

<para>number of outcoming messages </para>
</para>

<para>Get transmitted messages counter value This can be useful to diagnose communication.</para>

<para><formalpara><title>Returns</title>

<para>transmitted messages counter </para>
</formalpara>
</para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l00532">532</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">00533 {
00534 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_class_modbus_1a8530422c299c3b458e5a47c25daf0d08">u16OutCnt</link>;
00535 }
</programlisting></section>
<anchor xml:id="_group__buffer_1gacdd8ac1b4e6283eb2adddaf182957d55"/><section>
    <title>getRxBuffer()</title>
<indexterm><primary>getRxBuffer</primary><secondary>Modbus Buffer Management</secondary></indexterm>
<indexterm><primary>Modbus Buffer Management</primary><secondary>getRxBuffer</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">int8_t</link> Modbus::getRxBuffer ( )<computeroutput>[private]</computeroutput></computeroutput></para><para>

<para>This method moves Serial buffer data to the <link linkend="_class_modbus">Modbus</link> au8Buffer. </para>
</para>

<para><formalpara><title>Returns</title>

<para>buffer size if OK, ERR_BUFF_OVERFLOW if u8BufferSize &gt;= MAX_BUFFER </para>
</formalpara>
</para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l00905">905</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">00906 {
00907 &#32;&#32;&#32;&#32;<emphasis role="keywordtype">boolean</emphasis>&#32;<link linkend="_class_timer">bBuffOverflow</link>&#32;=&#32;<emphasis role="keyword">false</emphasis>;
00908 
00909 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_modbus_1abe18dfae3b794dda457cf13da721f140">u8txenpin</link>&#32;&gt;&#32;1)
00910 &#32;&#32;&#32;&#32;{
00911 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="__modbus_rtu_8h_1a7a4ce14de878ebc5d1e687b319458e53">RS485_CLEAR_DE</link>;
00912 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="__modbus_rtu_8h_1ad9547801da1fccbd6b02f992c76240ed">RS485_CLEAR_RE</link>;
00913 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;digitalWrite(&#32;u8txenpin,&#32;LOW&#32;);</emphasis>
00914 &#32;&#32;&#32;&#32;}
00915 
00916 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;=&#32;0;
00917 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_modbus_1ab85bd5f2f1a838e8fcab90c33f3f1413">u8serno</link>&#32;&lt;&#32;4)
00918 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">while</emphasis>&#32;(<link linkend="_class_modbus_1a70c1c3792bdae6467fee49c11d4e02cd">port</link>-&gt;available())
00919 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;{
00920 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>]&#32;=&#32;<link linkend="_class_modbus_1a70c1c3792bdae6467fee49c11d4e02cd">port</link>-&gt;read();
00921 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a9b4c31171da45967a0fed3cf2bb3550a">rxBuffer</link>[<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>]&#32;=&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>];
00922 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>++;
00923 
00924 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;&gt;=&#32;<link linkend="__modbus_rtu_8h_1a1d5dab30b404fab91608086105afc78c">MAX_BUFFER</link>)
00925 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">bBuffOverflow</link>&#32;=&#32;<emphasis role="keyword">true</emphasis>;
00926 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}
00927 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">else</emphasis>
00928 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">while</emphasis>&#32;(<link linkend="_class_modbus_1ac3d0425298a68c9d8d0c393fe0dde93e">softPort</link>-&gt;available())
00929 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;{
00930 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>]&#32;=&#32;<link linkend="_class_modbus_1ac3d0425298a68c9d8d0c393fe0dde93e">softPort</link>-&gt;read();
00931 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>++;
00932 
00933 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;&gt;=&#32;<link linkend="__modbus_rtu_8h_1a1d5dab30b404fab91608086105afc78c">MAX_BUFFER</link>)
00934 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">bBuffOverflow</link>&#32;=&#32;<emphasis role="keyword">true</emphasis>;
00935 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}
00936 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a779648af69bddfaa6a4f4bf503bba9fb">u16InCnt</link>++;
00937 
00938 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">bBuffOverflow</link>)
00939 &#32;&#32;&#32;&#32;{
00940 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">Log</link>.verboseln(<emphasis role="stringliteral">&quot;buffer&#32;overflow:&#32;%d&quot;</emphasis>,&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>);
00941 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a862d944031133b170634809b94f35987">u16errCnt</link>++;
00942 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="__modbus_rtu_8h_1a792f00821300f1c7c768db990db646c1aafd42890a0ce129e23977fc1aca4044b">ERR_BUFF_OVERFLOW</link>;
00943 &#32;&#32;&#32;&#32;}
00944 &#32;&#32;&#32;&#32;<emphasis role="comment">//Log.verboseln(&quot;getRX-Buffer&#32;:&#32;%d&quot;,u8BufferSize);</emphasis>
00945 &#32;&#32;&#32;&#32;<emphasis role="comment">//printHex(rxBuffer,&#32;u8BufferSize);</emphasis>
00946 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a91f834220d86a5b275cedf5e355e1b31">rxSize</link>&#32;=&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>;
00947 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>;
00948 }
</programlisting></section>
<anchor xml:id="_group__buffer_1ga2f39717d957a929af488c9120488fcdc"/><section>
    <title>getState()</title>
<indexterm><primary>getState</primary><secondary>Modbus Buffer Management</secondary></indexterm>
<indexterm><primary>Modbus Buffer Management</primary><secondary>getState</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">uint8_t</link> Modbus::getState ( )</computeroutput></para>
<para>Get modbus master state</para>

<para><formalpara><title>Returns</title>

<para>= 0 IDLE, = 1 WAITING FOR ANSWER </para>
</formalpara>
</para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l00561">561</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">00562 {
00563 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_class_modbus_1a42196587df5634599b015d1e627f0f29">u8state</link>;
00564 }
</programlisting></section>
<anchor xml:id="_group__buffer_1gaea3cc68f4b7f9e0a5715fdbef60fc9fb"/><section>
    <title>sendTxBuffer()</title>
<indexterm><primary>sendTxBuffer</primary><secondary>Modbus Buffer Management</secondary></indexterm>
<indexterm><primary>Modbus Buffer Management</primary><secondary>sendTxBuffer</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">void</link> Modbus::sendTxBuffer ( )<computeroutput>[private]</computeroutput></computeroutput></para><para>

<para>This method transmits au8Buffer to Serial line. Only if u8txenpin != 0, there is a flow handling in order to keep the RS485 transceiver in output state as long as the message is being sent. This is done with UCSRxA register. The CRC is appended to the buffer before starting to send it. </para>
</para>

<para>
                <formalpara>
                    <title>
Parameters</title>
                    <para>
                    <table frame="all">
                        <tgroup cols="2" align="left" colsep="1" rowsep="1">
                        <colspec colwidth="1*"/>
                        <colspec colwidth="4*"/>
                        <tbody>
                            <row>
<entry>nothing</entry><entry>
<para></para>
</entry>
                            </row>
                        </tbody>
                        </tgroup>
                    </table>
                    </para>
                </formalpara>
                <formalpara><title>Returns</title>

<para>nothing </para>
</formalpara>
</para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l00962">962</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">00963 {
00964 &#32;&#32;&#32;&#32;<link linkend="_class_timer">uint8_t</link>&#32;<link linkend="_class_timer">i</link>&#32;=&#32;0;
00965 
00966 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;append&#32;CRC&#32;to&#32;message</emphasis>
00967 &#32;&#32;&#32;&#32;<link linkend="_class_timer">uint16_t</link>&#32;<link linkend="_class_timer">u16crc</link>&#32;=&#32;<link linkend="_group__buffer_1ga29fedf508a0c8c795baf07949aa76c03">calcCRC</link>(<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>);
00968 <emphasis role="comment">/*</emphasis>
00969 <emphasis role="comment">&#32;&#32;&#32;&#32;Serial.print(&quot;----&#32;calc&#32;CRC&#32;:&#32;HEX&#32;:&#32;&#32;&quot;);</emphasis>
00970 <emphasis role="comment">&#32;&#32;&#32;&#32;Serial.print(u16crc,&#32;DEC);</emphasis>
00971 <emphasis role="comment">&#32;&#32;&#32;&#32;Serial.print(&quot;&#32;-&#32;HEX&#32;:&#32;&quot;);</emphasis>
00972 <emphasis role="comment">&#32;&#32;&#32;&#32;Serial.print(u16crc,&#32;HEX);</emphasis>
00973 <emphasis role="comment">&#32;&#32;&#32;&#32;Serial.print(&quot;&#32;-&#32;&quot;);</emphasis>
00974 <emphasis role="comment">&#32;&#32;&#32;&#32;Serial.print(u8BufferSize);</emphasis>
00975 <emphasis role="comment">&#32;&#32;&#32;&#32;Serial.print(&quot;\n&quot;);</emphasis>
00976 <emphasis role="comment">&#32;&#32;&#32;&#32;*/</emphasis>
00977 
00978 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>]&#32;=&#32;<link linkend="_class_timer">u16crc</link>&#32;&gt;&gt;&#32;8;
00979 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>++;
00980 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>]&#32;=&#32;<link linkend="_class_timer">u16crc</link>&#32;&amp;&#32;0x00ff;
00981 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>++;
00982 
00983 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_modbus_1a95d1ecc7954d18bc163e37a11825903c">debugSend</link>)
00984 &#32;&#32;&#32;&#32;{
00985 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">Serial</link>.print(<emphasis role="stringliteral">&quot;Send&#32;Hex&#32;:&#32;\t&quot;</emphasis>);
00986 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">for</emphasis>&#32;(<emphasis role="keywordtype">int</emphasis>&#32;<link linkend="_class_timer">i</link>&#32;=&#32;0;&#32;<link linkend="_class_timer">i</link>&#32;&lt;&#32;8;&#32;<link linkend="_class_timer">i</link>++)
00987 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;{
00988 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">Serial</link>.print(<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="_class_timer">i</link>],&#32;<link linkend="_class_timer">HEX</link>);
00989 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">Serial</link>.print(<emphasis role="stringliteral">&quot;&#32;:&#32;&quot;</emphasis>);
00990 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}
00991 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">Serial</link>.println(<emphasis role="stringliteral">&quot;---------------&#32;\n&quot;</emphasis>);
00992 &#32;&#32;&#32;&#32;}
00993 
00994 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;set&#32;RS485&#32;transceiver&#32;to&#32;transmit&#32;mode</emphasis>
00995 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_modbus_1abe18dfae3b794dda457cf13da721f140">u8txenpin</link>&#32;&gt;&#32;1)
00996 &#32;&#32;&#32;&#32;{
00997 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">switch</emphasis>&#32;(<link linkend="_class_modbus_1ab85bd5f2f1a838e8fcab90c33f3f1413">u8serno</link>)
00998 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;{
00999 <emphasis role="preprocessor">#if&#32;defined(UBRR1H)</emphasis>
01000 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;1:
01001 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">UCSR1A</link>&#32;=&#32;<link linkend="_class_timer">UCSR1A</link>&#32;|&#32;(1&#32;&lt;&lt;&#32;<link linkend="_class_timer">TXC1</link>);
01002 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
01003 <emphasis role="preprocessor">#endif</emphasis>
01004 
01005 <emphasis role="preprocessor">#if&#32;defined(UBRR2H)</emphasis>
01006 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;2:
01007 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">UCSR2A</link>&#32;=&#32;<link linkend="_class_timer">UCSR2A</link>&#32;|&#32;(1&#32;&lt;&lt;&#32;<link linkend="_class_timer">TXC2</link>);
01008 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
01009 <emphasis role="preprocessor">#endif</emphasis>
01010 
01011 <emphasis role="preprocessor">#if&#32;defined(UBRR3H)</emphasis>
01012 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;3:
01013 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">UCSR3A</link>&#32;=&#32;<link linkend="_class_timer">UCSR3A</link>&#32;|&#32;(1&#32;&lt;&lt;&#32;<link linkend="_class_timer">TXC3</link>);
01014 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
01015 <emphasis role="preprocessor">#endif</emphasis>
01016 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;0:
01017 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">default</emphasis>:
01018 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">UCSR0A</link>&#32;=&#32;<link linkend="_class_timer">UCSR0A</link>&#32;|&#32;(1&#32;&lt;&lt;&#32;<link linkend="_class_timer">TXC0</link>);
01019 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
01020 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}
01021 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="__modbus_rtu_8h_1ac99ebda4c7676e3dc5dbd8c7c6db0023">RS485_SET_DE</link>;
01022 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="__modbus_rtu_8h_1a0018224623b5a9cdd60739aff9801341">RS485_SET_RE</link>;
01023 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;digitalWrite(&#32;u8txenpin,&#32;HIGH&#32;);</emphasis>
01024 &#32;&#32;&#32;&#32;}
01025 
01026 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;transfer&#32;buffer&#32;to&#32;serial&#32;line</emphasis>
01027 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_modbus_1ab85bd5f2f1a838e8fcab90c33f3f1413">u8serno</link>&#32;&lt;&#32;4)
01028 &#32;&#32;&#32;&#32;{
01029 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a70c1c3792bdae6467fee49c11d4e02cd">port</link>-&gt;write(<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>,&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>);
01030 &#32;&#32;&#32;&#32;}
01031 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">else</emphasis>
01032 &#32;&#32;&#32;&#32;{
01033 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ac3d0425298a68c9d8d0c393fe0dde93e">softPort</link>-&gt;write(<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>,&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>);
01034 &#32;&#32;&#32;&#32;}
01035 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;keep&#32;RS485&#32;transceiver&#32;in&#32;transmit&#32;mode&#32;as&#32;long&#32;as&#32;sending</emphasis>
01036 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_modbus_1abe18dfae3b794dda457cf13da721f140">u8txenpin</link>&#32;&gt;&#32;1)
01037 &#32;&#32;&#32;&#32;{
01038 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">switch</emphasis>&#32;(<link linkend="_class_modbus_1ab85bd5f2f1a838e8fcab90c33f3f1413">u8serno</link>)
01039 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;{
01040 <emphasis role="preprocessor">#if&#32;defined(UBRR1H)</emphasis>
01041 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;1:
01042 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">while</emphasis>&#32;(!(<link linkend="_class_timer">UCSR1A</link>&#32;&amp;&#32;(1&#32;&lt;&lt;&#32;<link linkend="_class_timer">TXC1</link>)))
01043 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;;
01044 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
01045 <emphasis role="preprocessor">#endif</emphasis>
01046 
01047 <emphasis role="preprocessor">#if&#32;defined(UBRR2H)</emphasis>
01048 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;2:
01049 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">while</emphasis>&#32;(!(<link linkend="_class_timer">UCSR2A</link>&#32;&amp;&#32;(1&#32;&lt;&lt;&#32;<link linkend="_class_timer">TXC2</link>)))
01050 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;;
01051 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
01052 <emphasis role="preprocessor">#endif</emphasis>
01053 
01054 <emphasis role="preprocessor">#if&#32;defined(UBRR3H)</emphasis>
01055 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;3:
01056 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">while</emphasis>&#32;(!(<link linkend="_class_timer">UCSR3A</link>&#32;&amp;&#32;(1&#32;&lt;&lt;&#32;<link linkend="_class_timer">TXC3</link>)))
01057 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;;
01058 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
01059 <emphasis role="preprocessor">#endif</emphasis>
01060 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;0:
01061 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">default</emphasis>:
01062 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">while</emphasis>&#32;(!(<link linkend="_class_timer">UCSR0A</link>&#32;&amp;&#32;(1&#32;&lt;&lt;&#32;<link linkend="_class_timer">TXC0</link>)))
01063 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;;
01064 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
01065 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}
01066 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;return&#32;RS485&#32;transceiver&#32;to&#32;receive&#32;mode</emphasis>
01067 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="__modbus_rtu_8h_1a7a4ce14de878ebc5d1e687b319458e53">RS485_CLEAR_DE</link>;
01068 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="__modbus_rtu_8h_1ad9547801da1fccbd6b02f992c76240ed">RS485_CLEAR_RE</link>;
01069 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;digitalWrite(&#32;u8txenpin,&#32;LOW&#32;);</emphasis>
01070 &#32;&#32;&#32;&#32;}
01071 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_modbus_1ab85bd5f2f1a838e8fcab90c33f3f1413">u8serno</link>&#32;&lt;&#32;4)
01072 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">while</emphasis>&#32;(<link linkend="_class_modbus_1a70c1c3792bdae6467fee49c11d4e02cd">port</link>-&gt;read()&#32;&gt;=&#32;0)
01073 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;;
01074 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">else</emphasis>
01075 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">while</emphasis>&#32;(<link linkend="_class_modbus_1ac3d0425298a68c9d8d0c393fe0dde93e">softPort</link>-&gt;read()&#32;&gt;=&#32;0)
01076 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;;
01077 
01078 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;=&#32;0;
01079 
01080 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;set&#32;time-out&#32;for&#32;master</emphasis>
01081 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1af7e891747f68eb03ba11e4cbe9110b3d">u32timeOut</link>&#32;=&#32;<link linkend="_class_timer">millis</link>()&#32;+&#32;(<emphasis role="keywordtype">unsigned</emphasis>&#32;<link linkend="_class_timer">long</link>)<link linkend="_class_modbus_1afd8d4dd6e6108795fb96d453e55cb973">u16timeOut</link>;
01082 
01083 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;increase&#32;message&#32;counter</emphasis>
01084 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a8530422c299c3b458e5a47c25daf0d08">u16OutCnt</link>++;
01085 
01086 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ac0a0991490a3f8a62b0221dd708847f5">currentQuery</link>-&gt;<link linkend="_structmodbus__t_1a4d2dcba18b650e92afaf993f02682359">flags</link>&#32;=&#32;<link linkend="_firmware__v2__cm_2enums_8h_1a3d97fc2e877973a0407bf1f83dbb29b1af29619d9240b20155ab50bc3beb3947b">QUERY_STATE::SENT</link>;
01087 }
</programlisting></section>
<anchor xml:id="_group__buffer_1ga3648d41197ad3656bbd69b6b00cd7ae4"/><section>
    <title>validateAnswer()</title>
<indexterm><primary>validateAnswer</primary><secondary>Modbus Buffer Management</secondary></indexterm>
<indexterm><primary>Modbus Buffer Management</primary><secondary>validateAnswer</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">uint8_t</link> Modbus::validateAnswer ( )<computeroutput>[private]</computeroutput></computeroutput></para><para>

<para>This method validates master incoming messages. </para>
</para>

<para><formalpara><title>Returns</title>

<para>0 if OK, EXCEPTION if anything fails </para>
</formalpara>
</para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l01201">1201</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">01202 {
01203 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;check&#32;message&#32;crc&#32;vs&#32;calculated&#32;crc</emphasis>
01204 &#32;&#32;&#32;&#32;<link linkend="_class_timer">uint16_t</link>&#32;<link linkend="_class_timer">u16MsgCRC</link>&#32;=
01205 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;((<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;-&#32;2]&#32;&lt;&lt;&#32;8)&#32;|&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;-&#32;1]);&#32;<emphasis role="comment">//&#32;combine&#32;the&#32;crc&#32;Low&#32;&amp;&#32;High&#32;bytes</emphasis>
01206 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_group__buffer_1ga29fedf508a0c8c795baf07949aa76c03">calcCRC</link>(<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;-&#32;2)&#32;!=&#32;<link linkend="_class_timer">u16MsgCRC</link>)
01207 &#32;&#32;&#32;&#32;{
01208 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a862d944031133b170634809b94f35987">u16errCnt</link>++;
01209 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="__modbus_rtu_8h_1adf764cbdea00d65edcd07bb9953ad2b7aa04c58a8cc2e7777f6f781e8d51524ae">NO_REPLY</link>;
01210 &#32;&#32;&#32;&#32;}
01211 
01212 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;check&#32;exception</emphasis>
01213 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;((<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa389e03ce61ac2d93fd54069187ab58af">FUNC</link>]&#32;&amp;&#32;0x80)&#32;!=&#32;0)
01214 &#32;&#32;&#32;&#32;{
01215 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a862d944031133b170634809b94f35987">u16errCnt</link>++;
01216 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="__modbus_rtu_8h_1a792f00821300f1c7c768db990db646c1ab4be9b5f7e8905633a3c045157f1dd0a">ERR_EXCEPTION</link>;
01217 &#32;&#32;&#32;&#32;}
01218 
01219 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;check&#32;fct&#32;code</emphasis>
01220 &#32;&#32;&#32;&#32;<emphasis role="keywordtype">boolean</emphasis>&#32;<link linkend="_class_timer">isSupported</link>&#32;=&#32;<emphasis role="keyword">false</emphasis>;
01221 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">for</emphasis>&#32;(<link linkend="_class_timer">uint8_t</link>&#32;<link linkend="_class_timer">i</link>&#32;=&#32;0;&#32;<link linkend="_class_timer">i</link>&#32;&lt;&#32;<emphasis role="keyword">sizeof</emphasis>(<link linkend="__modbus_rtu_8h_1aede21762dc4aa80a14df8dd40ef105f0">fctsupported</link>);&#32;<link linkend="_class_timer">i</link>++)
01222 &#32;&#32;&#32;&#32;{
01223 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="__modbus_rtu_8h_1aede21762dc4aa80a14df8dd40ef105f0">fctsupported</link>[<link linkend="_class_timer">i</link>]&#32;==&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa389e03ce61ac2d93fd54069187ab58af">FUNC</link>])
01224 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;{
01225 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">isSupported</link>&#32;=&#32;1;
01226 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
01227 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}
01228 &#32;&#32;&#32;&#32;}
01229 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(!<link linkend="_class_timer">isSupported</link>)
01230 &#32;&#32;&#32;&#32;{
01231 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a862d944031133b170634809b94f35987">u16errCnt</link>++;
01232 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="__modbus_rtu_8h_1adf764cbdea00d65edcd07bb9953ad2b7ad82ec66545269170f1401af6e418e8f2">EXC_FUNC_CODE</link>;
01233 &#32;&#32;&#32;&#32;}
01234 
01235 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;&#32;<emphasis role="comment">//&#32;OK,&#32;no&#32;exception&#32;code&#32;thrown</emphasis>
01236 }
</programlisting></section>
<anchor xml:id="_group__buffer_1gad111ae134be3bf012fc86983c32edeff"/><section>
    <title>validateRequest()</title>
<indexterm><primary>validateRequest</primary><secondary>Modbus Buffer Management</secondary></indexterm>
<indexterm><primary>Modbus Buffer Management</primary><secondary>validateRequest</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">uint8_t</link> Modbus::validateRequest ( )<computeroutput>[private]</computeroutput></computeroutput></para><para>

<para>This method validates slave incoming messages. </para>
</para>

<para><formalpara><title>Returns</title>

<para>0 if OK, EXCEPTION if anything fails </para>
</formalpara>
</para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l01128">1128</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">01129 {
01130 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;check&#32;message&#32;crc&#32;vs&#32;calculated&#32;crc</emphasis>
01131 &#32;&#32;&#32;&#32;<link linkend="_class_timer">uint16_t</link>&#32;<link linkend="_class_timer">u16MsgCRC</link>&#32;=
01132 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;((<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;-&#32;2]&#32;&lt;&lt;&#32;8)&#32;|&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;-&#32;1]);&#32;<emphasis role="comment">//&#32;combine&#32;the&#32;crc&#32;Low&#32;&amp;&#32;High&#32;bytes</emphasis>
01133 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_group__buffer_1ga29fedf508a0c8c795baf07949aa76c03">calcCRC</link>(<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;-&#32;2)&#32;!=&#32;<link linkend="_class_timer">u16MsgCRC</link>)
01134 &#32;&#32;&#32;&#32;{
01135 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a862d944031133b170634809b94f35987">u16errCnt</link>++;
01136 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="__modbus_rtu_8h_1adf764cbdea00d65edcd07bb9953ad2b7aa04c58a8cc2e7777f6f781e8d51524ae">NO_REPLY</link>;
01137 &#32;&#32;&#32;&#32;}
01138 
01139 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;check&#32;fct&#32;code</emphasis>
01140 &#32;&#32;&#32;&#32;<emphasis role="keywordtype">boolean</emphasis>&#32;<link linkend="_class_timer">isSupported</link>&#32;=&#32;<emphasis role="keyword">false</emphasis>;
01141 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">for</emphasis>&#32;(<link linkend="_class_timer">uint8_t</link>&#32;<link linkend="_class_timer">i</link>&#32;=&#32;0;&#32;<link linkend="_class_timer">i</link>&#32;&lt;&#32;<emphasis role="keyword">sizeof</emphasis>(<link linkend="__modbus_rtu_8h_1aede21762dc4aa80a14df8dd40ef105f0">fctsupported</link>);&#32;<link linkend="_class_timer">i</link>++)
01142 &#32;&#32;&#32;&#32;{
01143 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="__modbus_rtu_8h_1aede21762dc4aa80a14df8dd40ef105f0">fctsupported</link>[<link linkend="_class_timer">i</link>]&#32;==&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa389e03ce61ac2d93fd54069187ab58af">FUNC</link>])
01144 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;{
01145 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">isSupported</link>&#32;=&#32;1;
01146 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
01147 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}
01148 &#32;&#32;&#32;&#32;}
01149 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(!<link linkend="_class_timer">isSupported</link>)
01150 &#32;&#32;&#32;&#32;{
01151 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a862d944031133b170634809b94f35987">u16errCnt</link>++;
01152 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="__modbus_rtu_8h_1adf764cbdea00d65edcd07bb9953ad2b7ad82ec66545269170f1401af6e418e8f2">EXC_FUNC_CODE</link>;
01153 &#32;&#32;&#32;&#32;}
01154 
01155 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;check&#32;start&#32;address&#32;&amp;&#32;nb&#32;range</emphasis>
01156 &#32;&#32;&#32;&#32;<link linkend="_class_timer">uint16_t</link>&#32;<link linkend="_class_timer">u16regs</link>&#32;=&#32;0;
01157 &#32;&#32;&#32;&#32;<link linkend="_class_timer">uint8_t</link>&#32;<link linkend="_class_timer">u8regs</link>;
01158 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">switch</emphasis>&#32;(<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa389e03ce61ac2d93fd54069187ab58af">FUNC</link>])
01159 &#32;&#32;&#32;&#32;{
01160 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;<link linkend="_osr-fw-base_2examples_2pid_2enums_8h_1aff1341ea5077cc6097a0d7db89be4cf6a0b2250567e3e0e43522a64cdce637ce0">MB_FC_READ_COILS</link>:
01161 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;<link linkend="_osr-fw-base_2examples_2pid_2enums_8h_1aff1341ea5077cc6097a0d7db89be4cf6ac2b52680d6c0bbe3d3e0e9ec7a88fc2e">MB_FC_READ_DISCRETE_INPUT</link>:
01162 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;<link linkend="_osr-fw-base_2examples_2pid_2enums_8h_1aff1341ea5077cc6097a0d7db89be4cf6ac69c42d25cbc0ef303de57bd3d0e2304">MB_FC_WRITE_MULTIPLE_COILS</link>:
01163 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u16regs</link>&#32;=&#32;<link linkend="_class_timer">word</link>(<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baad19e7653c9276b91fb590af017de192c">ADD_HI</link>],&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa2cbdff2e20e58233096845bf42acc97c">ADD_LO</link>])&#32;/&#32;16;
01164 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u16regs</link>&#32;+=&#32;<link linkend="_class_timer">word</link>(<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa61f961bb4614db2fc51125331f79a9d6">NB_HI</link>],&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa22b2a3a58501a5bbe69ef569aa7fb30f">NB_LO</link>])&#32;/&#32;16;
01165 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u8regs</link>&#32;=&#32;(<link linkend="_class_timer">uint8_t</link>)<link linkend="_class_timer">u16regs</link>;
01166 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">u8regs</link>&#32;&gt;&#32;<link linkend="_class_modbus_1abb7977cba25a0d19800b4f7251295211">u8regsize</link>)
01167 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="__modbus_rtu_8h_1adf764cbdea00d65edcd07bb9953ad2b7ad3899b13b2069997f5db7f18e9978280">EXC_ADDR_RANGE</link>;
01168 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
01169 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;<link linkend="_osr-fw-base_2examples_2pid_2enums_8h_1aff1341ea5077cc6097a0d7db89be4cf6a90126d6c25fb5711c103e819ccda01c7">MB_FC_WRITE_COIL</link>:
01170 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u16regs</link>&#32;=&#32;<link linkend="_class_timer">word</link>(<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baad19e7653c9276b91fb590af017de192c">ADD_HI</link>],&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa2cbdff2e20e58233096845bf42acc97c">ADD_LO</link>])&#32;/&#32;16;
01171 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u8regs</link>&#32;=&#32;(<link linkend="_class_timer">uint8_t</link>)<link linkend="_class_timer">u16regs</link>;
01172 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">u8regs</link>&#32;&gt;&#32;<link linkend="_class_modbus_1abb7977cba25a0d19800b4f7251295211">u8regsize</link>)
01173 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="__modbus_rtu_8h_1adf764cbdea00d65edcd07bb9953ad2b7ad3899b13b2069997f5db7f18e9978280">EXC_ADDR_RANGE</link>;
01174 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
01175 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;<link linkend="_osr-fw-base_2examples_2pid_2enums_8h_1aff1341ea5077cc6097a0d7db89be4cf6a74e1ffd48177f0e7e33c2c968a1bd86f">MB_FC_WRITE_REGISTER</link>:
01176 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u16regs</link>&#32;=&#32;<link linkend="_class_timer">word</link>(<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baad19e7653c9276b91fb590af017de192c">ADD_HI</link>],&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa2cbdff2e20e58233096845bf42acc97c">ADD_LO</link>]);
01177 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u8regs</link>&#32;=&#32;(<link linkend="_class_timer">uint8_t</link>)<link linkend="_class_timer">u16regs</link>;
01178 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">u8regs</link>&#32;&gt;&#32;<link linkend="_class_modbus_1abb7977cba25a0d19800b4f7251295211">u8regsize</link>)
01179 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="__modbus_rtu_8h_1adf764cbdea00d65edcd07bb9953ad2b7ad3899b13b2069997f5db7f18e9978280">EXC_ADDR_RANGE</link>;
01180 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
01181 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;<link linkend="_osr-fw-base_2examples_2pid_2enums_8h_1aff1341ea5077cc6097a0d7db89be4cf6a0c6066cf0a67a1bb349da35ef31e4e8f">MB_FC_READ_REGISTERS</link>:
01182 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;<link linkend="_osr-fw-base_2examples_2pid_2enums_8h_1aff1341ea5077cc6097a0d7db89be4cf6a9b2d4a3fb96e4af559d5330ad0c01c07">MB_FC_READ_INPUT_REGISTER</link>:
01183 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;<link linkend="_osr-fw-base_2examples_2pid_2enums_8h_1aff1341ea5077cc6097a0d7db89be4cf6a2ccdcde4f07865ffb47fbea0a01026bb">MB_FC_WRITE_MULTIPLE_REGISTERS</link>:
01184 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u16regs</link>&#32;=&#32;<link linkend="_class_timer">word</link>(<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baad19e7653c9276b91fb590af017de192c">ADD_HI</link>],&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa2cbdff2e20e58233096845bf42acc97c">ADD_LO</link>]);
01185 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u16regs</link>&#32;+=&#32;<link linkend="_class_timer">word</link>(<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa61f961bb4614db2fc51125331f79a9d6">NB_HI</link>],&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa22b2a3a58501a5bbe69ef569aa7fb30f">NB_LO</link>]);
01186 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u8regs</link>&#32;=&#32;(<link linkend="_class_timer">uint8_t</link>)<link linkend="_class_timer">u16regs</link>;
01187 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">u8regs</link>&#32;&gt;&#32;<link linkend="_class_modbus_1abb7977cba25a0d19800b4f7251295211">u8regsize</link>)
01188 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="__modbus_rtu_8h_1adf764cbdea00d65edcd07bb9953ad2b7ad3899b13b2069997f5db7f18e9978280">EXC_ADDR_RANGE</link>;
01189 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
01190 &#32;&#32;&#32;&#32;}
01191 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;&#32;<emphasis role="comment">//&#32;OK,&#32;no&#32;exception&#32;code&#32;thrown</emphasis>
01192 }
</programlisting></section>
</section>
</section>
