<?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__loop" xml:lang="en-US">
<title>Modbus Object Management</title>
<indexterm><primary>Modbus Object Management</primary></indexterm>
<simplesect>
    <title>Functions    </title>
        <itemizedlist>
            <listitem><para><link linkend="_class_timer">boolean</link> <link linkend="_group__loop_1gaf6dd413191ed8a833022046873e0a063">Modbus::getTimeOutState</link> ()</para>

<para>get communication watch-dog timer state </para>
</listitem>
            <listitem><para><link linkend="_class_timer">int8_t</link> <link linkend="_group__loop_1ga53bde78490c1cd8e3c070a676bdcfb0d">Modbus::poll</link> ()</para>

<para>cyclic poll for master </para>
</listitem>
            <listitem><para><link linkend="_class_timer">int8_t</link> <link linkend="_group__loop_1gab3ef20562fc8cee14fc85f7e276890b5">Modbus::poll</link> (<link linkend="_class_timer">uint16_t</link> *<link linkend="_class_timer">regs</link>, <link linkend="_class_timer">uint8_t</link> <link linkend="_class_timer">u8size</link>)</para>

<para>cyclic poll for slave </para>
</listitem>
            <listitem><para><link linkend="_class_timer">int8_t</link> <link linkend="_group__loop_1ga19398cabed57b6d085d014af6c149f54">Modbus::query</link> (<link linkend="_structmodbus__t">modbus_t</link> <link linkend="_class_timer">telegram</link>)</para>

<para>only for master </para>
</listitem>
        </itemizedlist>
</simplesect>
<section>
<title>Detailed Description</title>
</section>
<section>
<title>Function Documentation</title>
<anchor xml:id="_group__loop_1gaf6dd413191ed8a833022046873e0a063"/><section>
    <title>getTimeOutState()</title>
<indexterm><primary>getTimeOutState</primary><secondary>Modbus Object Management</secondary></indexterm>
<indexterm><primary>Modbus Object Management</primary><secondary>getTimeOutState</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">boolean</link> Modbus::getTimeOutState ( )</computeroutput></para><para>

<para>get communication watch-dog timer state </para>
</para>

<para>Return communication Watchdog state. It could be useful to reset outputs if the watchdog is fired.</para>

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

<para>TRUE if millis() &gt; u32timeOut </para>
</formalpara>
</para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l00506">506</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">00507 {
00508 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;(<link linkend="_class_timer">millis</link>()&#32;&gt;&#32;<link linkend="_class_modbus_1af7e891747f68eb03ba11e4cbe9110b3d">u32timeOut</link>);
00509 }
</programlisting></section>
<anchor xml:id="_group__loop_1ga53bde78490c1cd8e3c070a676bdcfb0d"/><section>
    <title>poll()<computeroutput>[1/2]</computeroutput></title>
<indexterm><primary>poll</primary><secondary>Modbus Object Management</secondary></indexterm>
<indexterm><primary>Modbus Object Management</primary><secondary>poll</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">int8_t</link> Modbus::poll ( )</computeroutput></para><para>

<para>cyclic poll for master </para>
</para>

<para>*** Only for <link linkend="_class_modbus">Modbus</link> Master *** This method checks if there is any incoming answer if pending. If there is no answer, it would change Master state to COM_IDLE. This method must be called only at loop section. Avoid any delay() function.</para>

<para>Any incoming data would be redirected to au16regs pointer, as defined in its <link linkend="_structmodbus__t">modbus_t</link> query telegram.</para>

<para>@params nothing <formalpara><title>Returns</title>

<para>errors counter </para>
</formalpara>
</para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l00691">691</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">00692 {
00693 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;check&#32;if&#32;there&#32;is&#32;any&#32;incoming&#32;frame</emphasis>
00694 &#32;&#32;&#32;&#32;<link linkend="_class_timer">uint8_t</link>&#32;<link linkend="_class_timer">u8current</link>;
00695 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_modbus_1ab85bd5f2f1a838e8fcab90c33f3f1413">u8serno</link>&#32;&lt;&#32;4)
00696 &#32;&#32;&#32;&#32;{
00697 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u8current</link>&#32;=&#32;<link linkend="_class_modbus_1a70c1c3792bdae6467fee49c11d4e02cd">port</link>-&gt;available();
00698 &#32;&#32;&#32;&#32;}
00699 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">else</emphasis>
00700 &#32;&#32;&#32;&#32;{
00701 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u8current</link>&#32;=&#32;<link linkend="_class_modbus_1ac3d0425298a68c9d8d0c393fe0dde93e">softPort</link>-&gt;available();
00702 &#32;&#32;&#32;&#32;}
00703 
00704 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">millis</link>()&#32;&gt;&#32;<link linkend="_class_modbus_1af7e891747f68eb03ba11e4cbe9110b3d">u32timeOut</link>)
00705 &#32;&#32;&#32;&#32;{
00706 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a42196587df5634599b015d1e627f0f29">u8state</link>&#32;=&#32;<link linkend="__modbus_rtu_8h_1a4f165b5bd333856a84635b2594013982a3e262bfb13968e43ab8ea55a03ba8b20">COM_IDLE</link>;
00707 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a3f64a088bb97e0c4ed84f14c4d9b35c6">u8lastError</link>&#32;=&#32;<link linkend="__modbus_rtu_8h_1adf764cbdea00d65edcd07bb9953ad2b7aa04c58a8cc2e7777f6f781e8d51524ae">NO_REPLY</link>;
00708 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a862d944031133b170634809b94f35987">u16errCnt</link>++;
00709 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;
00710 &#32;&#32;&#32;&#32;}
00711 
00712 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">u8current</link>&#32;==&#32;0)
00713 &#32;&#32;&#32;&#32;{
00714 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;
00715 &#32;&#32;&#32;&#32;}
00716 
00717 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;check&#32;T35&#32;after&#32;frame&#32;end&#32;or&#32;still&#32;no&#32;frame&#32;end</emphasis>
00718 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">u8current</link>&#32;!=&#32;<link linkend="_class_modbus_1ad6c116df75d8076ba5ad81741a168853">u8lastRec</link>)
00719 &#32;&#32;&#32;&#32;{
00720 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ad6c116df75d8076ba5ad81741a168853">u8lastRec</link>&#32;=&#32;<link linkend="_class_timer">u8current</link>;
00721 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a4fa2698d046b56b6b8ebb17d2279804f">u32time</link>&#32;=&#32;<link linkend="_class_timer">millis</link>()&#32;+&#32;<link linkend="__modbus_rtu_8h_1ac5a7c6ee8dea0ccb09dfc611bd08a0ac">T35</link>;
00722 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;
00723 &#32;&#32;&#32;&#32;}
00724 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">millis</link>()&#32;&lt;&#32;<link linkend="_class_modbus_1a4fa2698d046b56b6b8ebb17d2279804f">u32time</link>)
00725 &#32;&#32;&#32;&#32;{
00726 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;
00727 &#32;&#32;&#32;&#32;};
00728 
00729 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;transfer&#32;Serial&#32;buffer&#32;frame&#32;to&#32;auBuffer</emphasis>
00730 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ad6c116df75d8076ba5ad81741a168853">u8lastRec</link>&#32;=&#32;0;
00731 &#32;&#32;&#32;&#32;<link linkend="_class_timer">int8_t</link>&#32;<link linkend="_class_timer">i8state</link>&#32;=&#32;<link linkend="_group__buffer_1gacdd8ac1b4e6283eb2adddaf182957d55">getRxBuffer</link>();
00732 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">i8state</link>&#32;&lt;&#32;7)
00733 &#32;&#32;&#32;&#32;{
00734 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a42196587df5634599b015d1e627f0f29">u8state</link>&#32;=&#32;<link linkend="__modbus_rtu_8h_1a4f165b5bd333856a84635b2594013982a3e262bfb13968e43ab8ea55a03ba8b20">COM_IDLE</link>;
00735 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a862d944031133b170634809b94f35987">u16errCnt</link>++;
00736 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">Log</link>.verboseln(<emphasis role="stringliteral">&quot;Add&#32;error&#32;:&#32;%d&#32;-&#32;RX-Buffer&#32;&lt;&#32;7&quot;</emphasis>,&#32;<link linkend="_class_timer">i8state</link>);
00737 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_utils_8cpp_1ad06ffcb09e20e109f03035fc3b27b2de">printHex</link>(<link linkend="_class_modbus_1a9b4c31171da45967a0fed3cf2bb3550a">rxBuffer</link>,&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>);
00738 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_class_timer">i8state</link>;
00739 &#32;&#32;&#32;&#32;}
00740 
00741 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;validate&#32;message:&#32;id,&#32;CRC,&#32;FCT,&#32;exception</emphasis>
00742 &#32;&#32;&#32;&#32;<link linkend="_class_timer">uint8_t</link>&#32;<link linkend="_class_timer">u8exception</link>&#32;=&#32;<link linkend="_group__buffer_1ga3648d41197ad3656bbd69b6b00cd7ae4">validateAnswer</link>();
00743 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">u8exception</link>&#32;!=&#32;0)
00744 &#32;&#32;&#32;&#32;{
00745 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">Log</link>.verboseln(<emphasis role="stringliteral">&quot;ModbusRTU::poll&#32;:&#32;exception&#32;:&#32;%d&quot;</emphasis>,&#32;<link linkend="_class_timer">u8exception</link>);
00746 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a42196587df5634599b015d1e627f0f29">u8state</link>&#32;=&#32;<link linkend="__modbus_rtu_8h_1a4f165b5bd333856a84635b2594013982a3e262bfb13968e43ab8ea55a03ba8b20">COM_IDLE</link>;
00747 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_class_timer">u8exception</link>;
00748 &#32;&#32;&#32;&#32;}
00749 
00750 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;process&#32;answer</emphasis>
00751 &#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>])
00752 &#32;&#32;&#32;&#32;{
00753 &#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>:
00754 &#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>:
00755 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;call&#32;get_FC1&#32;to&#32;transfer&#32;the&#32;incoming&#32;message&#32;to&#32;au16regs&#32;buffer</emphasis>
00756 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_group__register_1ga2a7a9e939cff1116b994169c5f9bd8b3">get_FC1</link>();
00757 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00758 &#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>:
00759 &#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>:
00760 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;call&#32;get_FC3&#32;to&#32;transfer&#32;the&#32;incoming&#32;message&#32;to&#32;au16regs&#32;buffer</emphasis>
00761 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_group__register_1ga514a0d8e5c7092eb37feafff5f88c32d">get_FC3</link>();
00762 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00763 &#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>:
00764 &#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>:
00765 &#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>:
00766 &#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>:
00767 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;nothing&#32;to&#32;do</emphasis>
00768 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00769 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">default</emphasis>:
00770 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00771 &#32;&#32;&#32;&#32;}
00772 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a42196587df5634599b015d1e627f0f29">u8state</link>&#32;=&#32;<link linkend="__modbus_rtu_8h_1a4f165b5bd333856a84635b2594013982a3e262bfb13968e43ab8ea55a03ba8b20">COM_IDLE</link>;
00773 &#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_1a3d97fc2e877973a0407bf1f83dbb29b1a573a5236b3180667caa39ebb99d89a53">QUERY_STATE::RESPONDED</link>;
00774 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>;
00775 }
</programlisting></section>
<anchor xml:id="_group__loop_1gab3ef20562fc8cee14fc85f7e276890b5"/><section>
    <title>poll()<computeroutput>[2/2]</computeroutput></title>
<indexterm><primary>poll</primary><secondary>Modbus Object Management</secondary></indexterm>
<indexterm><primary>Modbus Object Management</primary><secondary>poll</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">int8_t</link> Modbus::poll (<link linkend="_class_timer">uint16_t</link> * regs, <link linkend="_class_timer">uint8_t</link> u8size)</computeroutput></para><para>

<para>cyclic poll for slave </para>
</para>

<para>*** Only for <link linkend="_class_modbus">Modbus</link> Slave *** This method checks if there is any incoming query Afterwards, it would shoot a validation routine plus a register query Avoid any delay() function !!!! After a successful frame between the Master and the Slave, the time-out timer is reset.</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>*regs</entry><entry>
<para>register table for communication exchange </para>
</entry>
                            </row>
                            <row>
<entry>u8size</entry><entry>
<para>size of the register table </para>
</entry>
                            </row>
                        </tbody>
                        </tgroup>
                    </table>
                    </para>
                </formalpara>
                <formalpara><title>Returns</title>

<para>0 if no query, 1..4 if communication error, &gt;4 if correct query processed </para>
</formalpara>
</para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l00790">790</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">00791 {
00792 
00793 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aad1f17271ce90543cac627d0ebe5a5c4">au16regs</link>&#32;=&#32;<link linkend="_class_timer">regs</link>;
00794 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1abb7977cba25a0d19800b4f7251295211">u8regsize</link>&#32;=&#32;<link linkend="_class_timer">u8size</link>;
00795 &#32;&#32;&#32;&#32;<link linkend="_class_timer">uint8_t</link>&#32;<link linkend="_class_timer">u8current</link>;
00796 
00797 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;check&#32;if&#32;there&#32;is&#32;any&#32;incoming&#32;frame</emphasis>
00798 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_modbus_1ab85bd5f2f1a838e8fcab90c33f3f1413">u8serno</link>&#32;&lt;&#32;4)
00799 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u8current</link>&#32;=&#32;<link linkend="_class_modbus_1a70c1c3792bdae6467fee49c11d4e02cd">port</link>-&gt;available();
00800 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">else</emphasis>
00801 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u8current</link>&#32;=&#32;<link linkend="_class_modbus_1ac3d0425298a68c9d8d0c393fe0dde93e">softPort</link>-&gt;available();
00802 
00803 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">u8current</link>&#32;==&#32;0)
00804 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;
00805 
00806 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;check&#32;T35&#32;after&#32;frame&#32;end&#32;or&#32;still&#32;no&#32;frame&#32;end</emphasis>
00807 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">u8current</link>&#32;!=&#32;<link linkend="_class_modbus_1ad6c116df75d8076ba5ad81741a168853">u8lastRec</link>)
00808 &#32;&#32;&#32;&#32;{
00809 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ad6c116df75d8076ba5ad81741a168853">u8lastRec</link>&#32;=&#32;<link linkend="_class_timer">u8current</link>;
00810 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a4fa2698d046b56b6b8ebb17d2279804f">u32time</link>&#32;=&#32;<link linkend="_class_timer">millis</link>()&#32;+&#32;<link linkend="__modbus_rtu_8h_1ac5a7c6ee8dea0ccb09dfc611bd08a0ac">T35</link>;
00811 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;
00812 &#32;&#32;&#32;&#32;}
00813 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">millis</link>()&#32;&lt;&#32;<link linkend="_class_modbus_1a4fa2698d046b56b6b8ebb17d2279804f">u32time</link>)
00814 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;
00815 
00816 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ad6c116df75d8076ba5ad81741a168853">u8lastRec</link>&#32;=&#32;0;
00817 &#32;&#32;&#32;&#32;<link linkend="_class_timer">int8_t</link>&#32;<link linkend="_class_timer">i8state</link>&#32;=&#32;<link linkend="_group__buffer_1gacdd8ac1b4e6283eb2adddaf182957d55">getRxBuffer</link>();
00818 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a3f64a088bb97e0c4ed84f14c4d9b35c6">u8lastError</link>&#32;=&#32;<link linkend="_class_timer">i8state</link>;
00819 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">i8state</link>&#32;&lt;&#32;7)
00820 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_class_timer">i8state</link>;
00821 
00822 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;check&#32;slave&#32;id</emphasis>
00823 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#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>)
00824 &#32;&#32;&#32;&#32;{
00825 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;
00826 &#32;&#32;&#32;&#32;}
00827 
00828 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;validate&#32;message:&#32;CRC,&#32;FCT,&#32;address&#32;and&#32;size</emphasis>
00829 &#32;&#32;&#32;&#32;<link linkend="_class_timer">uint8_t</link>&#32;<link linkend="_class_timer">u8exception</link>&#32;=&#32;<link linkend="_group__buffer_1gad111ae134be3bf012fc86983c32edeff">validateRequest</link>();
00830 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">u8exception</link>&#32;&gt;&#32;0)
00831 &#32;&#32;&#32;&#32;{
00832 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">Serial</link>.println(<emphasis role="stringliteral">&quot;exception&#32;:&#32;1&quot;</emphasis>);
00833 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_timer">u8exception</link>&#32;!=&#32;<link linkend="__modbus_rtu_8h_1adf764cbdea00d65edcd07bb9953ad2b7aa04c58a8cc2e7777f6f781e8d51524ae">NO_REPLY</link>)
00834 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;{
00835 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_group__buffer_1ga31da354e2d02145b8acb964adc1d4463">buildException</link>(<link linkend="_class_timer">u8exception</link>);
00836 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_group__buffer_1gaea3cc68f4b7f9e0a5715fdbef60fc9fb">sendTxBuffer</link>();
00837 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}
00838 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a3f64a088bb97e0c4ed84f14c4d9b35c6">u8lastError</link>&#32;=&#32;<link linkend="_class_timer">u8exception</link>;
00839 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_class_timer">u8exception</link>;
00840 &#32;&#32;&#32;&#32;}
00841 
00842 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1af7e891747f68eb03ba11e4cbe9110b3d">u32timeOut</link>&#32;=&#32;<link linkend="_class_timer">millis</link>()&#32;+&#32;<link linkend="_class_timer">long</link>(<link linkend="_class_modbus_1afd8d4dd6e6108795fb96d453e55cb973">u16timeOut</link>);
00843 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a3f64a088bb97e0c4ed84f14c4d9b35c6">u8lastError</link>&#32;=&#32;0;
00844 
00845 &#32;&#32;&#32;&#32;<link linkend="_class_timer">Log</link>.verboseln(<emphasis role="stringliteral">&quot;mb&#32;:&#32;process&#32;message&#32;:&#32;%d&quot;</emphasis>,&#32;<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa389e03ce61ac2d93fd54069187ab58af">FUNC</link>);
00846 
00847 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;process&#32;message</emphasis>
00848 &#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>])
00849 &#32;&#32;&#32;&#32;{
00850 &#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>:
00851 &#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>:
00852 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_group__discrete_1ga59249a64ac68f7256e0c7216a31c5f26">process_FC1</link>(<link linkend="_class_timer">regs</link>,&#32;<link linkend="_class_timer">u8size</link>);
00853 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00854 &#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>:
00855 &#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>:
00856 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_group__register_1ga702307c8fd1e30cae8496b3319e31e1b">process_FC3</link>(<link linkend="_class_timer">regs</link>,&#32;<link linkend="_class_timer">u8size</link>);
00857 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00858 &#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>:
00859 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_group__discrete_1gabfcb69dd487f493ecf2ef508ff933f5f">process_FC5</link>(<link linkend="_class_timer">regs</link>,&#32;<link linkend="_class_timer">u8size</link>);
00860 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00861 &#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>:
00862 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_group__register_1ga4d97e559e05393f7d65cd3d548da4d78">process_FC6</link>(<link linkend="_class_timer">regs</link>,&#32;<link linkend="_class_timer">u8size</link>);
00863 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00864 &#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>:
00865 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_group__discrete_1ga5096136ca893481f7007cf82693f655c">process_FC15</link>(<link linkend="_class_timer">regs</link>,&#32;<link linkend="_class_timer">u8size</link>);
00866 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00867 &#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>:
00868 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_group__register_1ga4f33c9700ab5a7b05a711641d612ec70">process_FC16</link>(<link linkend="_class_timer">regs</link>,&#32;<link linkend="_class_timer">u8size</link>);
00869 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00870 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">default</emphasis>:
00871 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00872 &#32;&#32;&#32;&#32;}
00873 &#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_1a3d97fc2e877973a0407bf1f83dbb29b1a573a5236b3180667caa39ebb99d89a53">RESPONDED</link>;
00874 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;<link linkend="_class_timer">i8state</link>;
00875 }
</programlisting></section>
<anchor xml:id="_group__loop_1ga19398cabed57b6d085d014af6c149f54"/><section>
    <title>query()</title>
<indexterm><primary>query</primary><secondary>Modbus Object Management</secondary></indexterm>
<indexterm><primary>Modbus Object Management</primary><secondary>query</secondary></indexterm>
<para><computeroutput><link linkend="_class_timer">int8_t</link> Modbus::query (<link linkend="_structmodbus__t">modbus_t</link> telegram)</computeroutput></para><para>

<para>only for master </para>
</para>

<para>*** Only <link linkend="_class_modbus">Modbus</link> Master *** Generate a query to an slave with a <link linkend="_structmodbus__t">modbus_t</link> telegram structure The Master must be in COM_IDLE mode. After it, its state would be COM_WAITING. This method has to be called only in loop() section.</para>

<para><formalpara><title>See also</title>

<para><link linkend="_structmodbus__t">modbus_t</link> </para>
</formalpara>

                <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><link linkend="_structmodbus__t">modbus_t</link></entry><entry>
<para>modbus telegram structure (id, fct, ...)</para>
</entry>
                            </row>
                        </tbody>
                        </tgroup>
                    </table>
                    </para>
                </formalpara>
                <para><link linkend="_todo_1_todo000001">Todo</link> 
<para>finish function 15 </para>
</para></para>
<para>
Definition at line <link linkend="__modbus_rtu_8h_source_1l00592">592</link> of file <link linkend="__modbus_rtu_8h_source">ModbusRtu.h</link>.</para>
<programlisting linenumbering="unnumbered">00593 {
00594 
00595 &#32;&#32;&#32;&#32;<link linkend="_class_timer">uint8_t</link>&#32;<link linkend="_class_timer">u8regsno</link>,&#32;<link linkend="_class_timer">u8bytesno</link>;
00596 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_modbus_1a9240505a875fee9236a95942f277314a">u8id</link>&#32;!=&#32;0)
00597 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;-2;
00598 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_class_modbus_1a42196587df5634599b015d1e627f0f29">u8state</link>&#32;!=&#32;<link linkend="__modbus_rtu_8h_1a4f165b5bd333856a84635b2594013982a3e262bfb13968e43ab8ea55a03ba8b20">COM_IDLE</link>)
00599 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;-1;
00600 
00601 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;((<link linkend="_class_timer">telegram</link>.u8id&#32;==&#32;0)&#32;||&#32;(<link linkend="_class_timer">telegram</link>.u8id&#32;&gt;&#32;247))
00602 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;-3;
00603 
00604 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aad1f17271ce90543cac627d0ebe5a5c4">au16regs</link>&#32;=&#32;<link linkend="_class_timer">telegram</link>.au16reg;
00605 &#32;&#32;&#32;&#32;<link linkend="_class_timer">telegram</link>.flags&#32;=&#32;<link linkend="_firmware__v2__cm_2enums_8h_1a3d97fc2e877973a0407bf1f83dbb29b1ae6b930c6e3d5d7213f59d118b8221a67">QUEUED</link>;
00606 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ac0a0991490a3f8a62b0221dd708847f5">currentQuery</link>&#32;=&#32;&amp;<link linkend="_class_timer">telegram</link>;
00607 
00608 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;telegram&#32;header</emphasis>
00609 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa001479a58fb44c39a29b20d565081a68">ID</link>]&#32;=&#32;<link linkend="_class_timer">telegram</link>.u8id;
00610 &#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">telegram</link>.u8fct;
00611 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baad19e7653c9276b91fb590af017de192c">ADD_HI</link>]&#32;=&#32;<link linkend="_class_timer">highByte</link>(<link linkend="_class_timer">telegram</link>.u16RegAdd);
00612 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa2cbdff2e20e58233096845bf42acc97c">ADD_LO</link>]&#32;=&#32;<link linkend="_class_timer">lowByte</link>(<link linkend="_class_timer">telegram</link>.u16RegAdd);
00613 
00614 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">switch</emphasis>&#32;(<link linkend="_class_timer">telegram</link>.u8fct)
00615 &#32;&#32;&#32;&#32;{
00616 &#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>:
00617 &#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>:
00618 &#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>:
00619 &#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>:
00620 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa61f961bb4614db2fc51125331f79a9d6">NB_HI</link>]&#32;=&#32;<link linkend="_class_timer">highByte</link>(<link linkend="_class_timer">telegram</link>.u16CoilsNo);
00621 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa22b2a3a58501a5bbe69ef569aa7fb30f">NB_LO</link>]&#32;=&#32;<link linkend="_class_timer">lowByte</link>(<link linkend="_class_timer">telegram</link>.u16CoilsNo);
00622 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;=&#32;6;
00623 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00624 &#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>:
00625 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa61f961bb4614db2fc51125331f79a9d6">NB_HI</link>]&#32;=&#32;((<link linkend="_class_timer">telegram</link>.u16CoilsNo&#32;&gt;&#32;0)&#32;?&#32;0xff&#32;:&#32;0);
00626 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa22b2a3a58501a5bbe69ef569aa7fb30f">NB_LO</link>]&#32;=&#32;0;
00627 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;=&#32;6;
00628 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00629 &#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>:
00630 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa61f961bb4614db2fc51125331f79a9d6">NB_HI</link>]&#32;=&#32;<link linkend="_class_timer">highByte</link>(<link linkend="_class_timer">telegram</link>.u16CoilsNo);
00631 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa22b2a3a58501a5bbe69ef569aa7fb30f">NB_LO</link>]&#32;=&#32;<link linkend="_class_timer">lowByte</link>(<link linkend="_class_timer">telegram</link>.u16CoilsNo);
00632 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;=&#32;6;
00633 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00634 &#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>:&#32;<emphasis role="comment">//&#32;TODO:&#32;implement&#32;&quot;sending&#32;coils&quot;</emphasis>
00635 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u8regsno</link>&#32;=&#32;<link linkend="_class_timer">telegram</link>.u16CoilsNo&#32;/&#32;16;
00636 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u8bytesno</link>&#32;=&#32;<link linkend="_class_timer">u8regsno</link>&#32;*&#32;2;
00637 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;((<link linkend="_class_timer">telegram</link>.u16CoilsNo&#32;%&#32;16)&#32;!=&#32;0)
00638 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;{
00639 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u8bytesno</link>++;
00640 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u8regsno</link>++;
00641 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}
00642 
00643 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa61f961bb4614db2fc51125331f79a9d6">NB_HI</link>]&#32;=&#32;<link linkend="_class_timer">highByte</link>(<link linkend="_class_timer">telegram</link>.u16CoilsNo);
00644 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa22b2a3a58501a5bbe69ef569aa7fb30f">NB_LO</link>]&#32;=&#32;<link linkend="_class_timer">lowByte</link>(<link linkend="_class_timer">telegram</link>.u16CoilsNo);
00645 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa22b2a3a58501a5bbe69ef569aa7fb30f">NB_LO</link>&#32;+&#32;1]&#32;=&#32;<link linkend="_class_timer">u8bytesno</link>;
00646 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;=&#32;7;
00647 
00648 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_timer">u8regsno</link>&#32;=&#32;<link linkend="_class_timer">u8bytesno</link>&#32;=&#32;0;
00649 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00650 
00651 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">case</emphasis>&#32;<link linkend="_firmware__v2__cm_2enums_8h_1a282bf4bd0a873ff3c851f10d76dbd1c4">ku8MBLinkTestOmronMX2Only</link>:
00652 &#32;&#32;&#32;&#32;{
00653 
00654 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00655 &#32;&#32;&#32;&#32;}
00656 &#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>:
00657 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa61f961bb4614db2fc51125331f79a9d6">NB_HI</link>]&#32;=&#32;<link linkend="_class_timer">highByte</link>(<link linkend="_class_timer">telegram</link>.u16CoilsNo);
00658 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa22b2a3a58501a5bbe69ef569aa7fb30f">NB_LO</link>]&#32;=&#32;<link linkend="_class_timer">lowByte</link>(<link linkend="_class_timer">telegram</link>.u16CoilsNo);
00659 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1ab3145a748946de0efd307d4ed426568a">au8Buffer</link>[<link linkend="__modbus_rtu_8h_1aa9996e8b4648c78acf6cde2401e230baa22b2a3a58501a5bbe69ef569aa7fb30f">NB_LO</link>&#32;+&#32;1]&#32;=&#32;(<link linkend="_class_timer">uint8_t</link>)(<link linkend="_class_timer">telegram</link>.u16CoilsNo&#32;*&#32;2);
00660 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>&#32;=&#32;7;
00661 
00662 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">for</emphasis>&#32;(<link linkend="_class_timer">uint16_t</link>&#32;<link linkend="_class_timer">i</link>&#32;=&#32;0;&#32;<link linkend="_class_timer">i</link>&#32;&lt;&#32;<link linkend="_class_timer">telegram</link>.u16CoilsNo;&#32;<link linkend="_class_timer">i</link>++)
00663 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;{
00664 &#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_timer">highByte</link>(<link linkend="_class_modbus_1aad1f17271ce90543cac627d0ebe5a5c4">au16regs</link>[<link linkend="_class_timer">i</link>]);
00665 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>++;
00666 &#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_timer">lowByte</link>(<link linkend="_class_modbus_1aad1f17271ce90543cac627d0ebe5a5c4">au16regs</link>[<link linkend="_class_timer">i</link>]);
00667 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_class_modbus_1aedd76072b826bf9aa8054e4dc2b46c13">u8BufferSize</link>++;
00668 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}
00669 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">break</emphasis>;
00670 &#32;&#32;&#32;&#32;}
00671 
00672 &#32;&#32;&#32;&#32;<link linkend="_group__buffer_1gaea3cc68f4b7f9e0a5715fdbef60fc9fb">sendTxBuffer</link>();
00673 &#32;&#32;&#32;&#32;<link linkend="_class_modbus_1a42196587df5634599b015d1e627f0f29">u8state</link>&#32;=&#32;<link linkend="__modbus_rtu_8h_1a4f165b5bd333856a84635b2594013982ad70b4cc84cc2f21d8b46f73f186dae6b">COM_WAITING</link>;
00674 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;
00675 }
</programlisting></section>
</section>
</section>
