Files
UKSI_TEST/AllLibs/Modbus/Doc/html/modbus__slave_8c_source.html
2025-12-16 17:57:59 +03:00

654 lines
128 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Modbus: E:/.WORK/STM32/Diod_Test/diode_tester/Core/Modbus/Src/modbus_slave.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js"></script>
<script type="text/javascript" src="darkmode_toggle.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">Modbus<span id="projectnumber">&#160;0.3</span>
</div>
<div id="projectbrief">Библиотека Modbus для STM</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(function(){initNavTree('modbus__slave_8c_source.html','',''); });
</script>
<div id="container">
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">modbus_slave.c</div></div>
</div><!--header-->
<div class="contents">
<a href="modbus__slave_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/** </span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">*******************************************************************************</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">* @file modbus_slave.c</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">* @brief Модуль для реализации слейв MODBUS.</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">******************************************************************************* </span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">* @details </span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">Файл содержит реализацию функций для работы Modbus в режиме слейва.</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"></span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">@section slave Функции и макросы</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"></span> </div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">- MB_Slave_Response() — Ответ на запрос</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">- MB_Slave_Collect_Message() — Сбор сообщения в режиме слейва.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">- MB_Slave_Parse_Message() — Парс сообщения в режиме слейва.</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">******************************************************************************/</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;<a class="code" href="modbus_8h.html">modbus.h</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#ifdef MODBUS_ENABLE_SLAVE</span><span class="comment"></span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">/** </span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"> * @brief Ответ на сообщение в режиме слейва.</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> * @param hmodbus Указатель на хендлер RS.</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> * @param modbus_msg Указатель на структуру сообщения.</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"> * @return RS_RES Статус о результате ответа на комманду.</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"> */</span><span class="preprocessor"></span></div>
<div class="foldopen" id="foldopen00024" data-start="{" data-end="}">
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___s_l_a_v_e.html#gacb44db7ef6ef32b08f4ffe0178eabee8"> 24</a></span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___m_o_d_b_u_s___s_l_a_v_e.html#gacb44db7ef6ef32b08f4ffe0178eabee8">MB_Slave_Response</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hmodbus, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *modbus_msg)</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span>{</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> MB_RES = 0;</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a> = 0;</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a5f8d7960b41717c6edb84fc7bfc06d41">EchoResponse</a> = 0;</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> RS_Reset_TX_Flags(hmodbus); <span class="comment">// reset flag for correct transmit</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gae379458fa9cea50d5e313a68e716cb83">MB_Diagnostics_BusMessageCnt</a>();</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a01e2c95a23aa3eed1f002e2329a10942">ID</a> == 0 || modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a277ed439b65aedbf03bd112c073e6a32">MbAddr</a> == 0)</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gabf80c0e24a0ed3736338218c003d001d">MB_Diagnostics_SlaveNoResponseCnt</a>(); <span class="comment">// &lt;-- Устройство не отвечает на широковещательные сообщения</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9">RS_STATUS</a> = RS_SKIP;</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#gab43a3b93c85adee5e3c561922d7ea2ef">RS_Handle_Receive_Start</a>(hmodbus, modbus_msg);</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> }</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga22a48a04ef64f74b5974c4fdb1445936">MB_Diagnostics_SlaveMessageCnt</a>();</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">if</span>(modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> &lt; <a class="code hl_define" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga822b0fd9ae9ff25dfa6748473e8e8627">FC_ERR_VALUES_START</a>)<span class="comment">// if no errors after parsing</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> {</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordflow">switch</span> (modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a>)</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> {</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// Read Coils</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a399bcd53bc32faca81bbc3d1ff8b5bb6">FC_R_COILS</a>: </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a> = <a class="code hl_function" href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga39a02e8e4911a74a619d2ef29adcbad8">MB_Process_Read_Coils</a>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">pMessagePtr</a>);</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// Read Hodling Registers</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2ae03921b16750ef290fdd7d19a08a29a2">FC_R_HOLD_REGS</a>:</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a> = <a class="code hl_function" href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gac28127757ba25fe0b611612a785f663b">MB_Process_Read_Hold_Regs</a>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">pMessagePtr</a>);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a76139e9b7ae78856fd3a297c9f751944">FC_R_IN_REGS</a>: </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a> = <a class="code hl_function" href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gad13d010f43c7ab08a85667b9e1906b7d">MB_Process_Read_Input_Regs</a>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">pMessagePtr</a>);</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// Write Single Coils</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a832b94af2c427d0daae721da2528f44a">FC_W_COIL</a>: </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a> = <a class="code hl_function" href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga918102931c9125a5e44a30e103d17e14">MB_Process_Write_Single_Coil</a>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">pMessagePtr</a>); </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a>) </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> {</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a4f26eda2d03a726d98fa6623f1abb814">DataUpdated</a> = 1;</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a5f8d7960b41717c6edb84fc7bfc06d41">EchoResponse</a> = 1; </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a495a29011412451e53459f9e1513814d">RS_Message_Size</a> -= 2; <span class="comment">// echo response if write ok (minus 2 cause of two CRC bytes)</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> }</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a1b66683f704ef9072329e997312e3b83">FC_W_HOLD_REG</a>: </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a> = <a class="code hl_function" href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga02e192a3d9f31737c45f074a04b37648">MB_Process_Write_Single_Reg</a>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">pMessagePtr</a>); </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a>) </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> {</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a4f26eda2d03a726d98fa6623f1abb814">DataUpdated</a> = 1;</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a5f8d7960b41717c6edb84fc7bfc06d41">EchoResponse</a> = 1;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a495a29011412451e53459f9e1513814d">RS_Message_Size</a> -= 2; <span class="comment">// echo response if write ok (minus 2 cause of two CRC bytes)</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> }</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// Write Multiple Coils</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a43a1b810697ea15ef91008dbc0187127">FC_W_COILS</a>: </div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a> = <a class="code hl_function" href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga6f4498cec8634820025aaa9c4623ba55">MB_Process_Write_Miltuple_Coils</a>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">pMessagePtr</a>);</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a>) </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> {</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a4f26eda2d03a726d98fa6623f1abb814">DataUpdated</a> = 1;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a5f8d7960b41717c6edb84fc7bfc06d41">EchoResponse</a> = 1; </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a495a29011412451e53459f9e1513814d">RS_Message_Size</a> = 6; <span class="comment">// echo response if write ok (withous data bytes)</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> }</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// Write Multiple Registers</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2affa24c54ee0b59e9810f1dbdc949e684">FC_W_HOLD_REGS</a>:</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a> = <a class="code hl_function" href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga9c6ab159edb8dda6548b2228773ce919">MB_Process_Write_Miltuple_Regs</a>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">pMessagePtr</a>);</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a>) </div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> {</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a4f26eda2d03a726d98fa6623f1abb814">DataUpdated</a> = 1;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a5f8d7960b41717c6edb84fc7bfc06d41">EchoResponse</a> = 1; </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a495a29011412451e53459f9e1513814d">RS_Message_Size</a> = 6; <span class="comment">// echo response if write ok (withous data bytes)</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> }</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> </div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a37ddf147e08b6d205319c31e6750d47c">FC_R_DEVICE_ID</a>:</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a> = <a class="code hl_function" href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga279ce6d9d175a43714862dc6661e7096">MB_Process_Read_Device_Identifications</a>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">pMessagePtr</a>);</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// Добавить в switch-case после других case:</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2aa6423de9e908dc38ce9f1c8027ad72ec">FC_R_DIAGNOSTICS</a>:</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a> = <a class="code hl_function" href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga6bbfc53b20b4698a08d79851b5db65f0">MB_Process_Diagnostics</a>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">pMessagePtr</a>);</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="comment">/* unknown func code */</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordflow">default</span>: </div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a3dab5eaf3a1dd5719b8bfec1adad0d39">Except_Code</a> = 0x01; <span class="comment">/* set exception code: illegal function */</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> } </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> </div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="comment">// Проверяем режим устройства - если Listen Only, не обрабатываем команды</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gae7b613f24e9e3d9d95a789c404a3a485">MB_GetDeviceMode</a>() == MODBUS_LISTEN_ONLY_MODE)</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> {</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gabf80c0e24a0ed3736338218c003d001d">MB_Diagnostics_SlaveNoResponseCnt</a>();</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9">RS_STATUS</a> = RS_SKIP;</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#gab43a3b93c85adee5e3c561922d7ea2ef">RS_Handle_Receive_Start</a>(hmodbus, modbus_msg);;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> }</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="comment">// Проверяем статус обработки запроса</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a> == 0)</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> {</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga82e0bf0c4452c25bf3f05a20abb7cc74">MB_Diagnostics_ExceptionErrorCnt</a>();</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <a class="code hl_define" href="group___r_s___d_e_b_u_g.html#ga8017fb05a56a1b667244f1f786fa9c57">TrackerCnt_Warn</a>(hmodbus-&gt;rs_err);</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> |= <a class="code hl_define" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga822b0fd9ae9ff25dfa6748473e8e8627">FC_ERR_VALUES_START</a>;</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> }</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> {</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <a class="code hl_define" href="group___r_s___d_e_b_u_g.html#ga23de0006aa08984cfeddb6aa5e512fa1">TrackerCnt_Ok</a>(hmodbus-&gt;rs_err);</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> }</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> }</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="comment">// if we need response - check that transmit isnt busy</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keywordflow">if</span>( RS_Is_TX_Busy(hmodbus) ) </div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga1ffe808b3640f253b1783295d6990962">RS_Abort</a>(hmodbus, <a class="code hl_enumvalue" href="group___r_s___t_o_o_l_s.html#ggab7c55bd8bb15b0eecc8c525019d4a1cca95c6ce0fee466ba98e43213d001ecc16">ABORT_TX</a>); <span class="comment">// if tx busy - set it free</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="comment">// Transmit right there, or sets (fDeferredResponse) to transmit response in main code </span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a63ea1ac11725b29af72afb2942766633">DeferredResponse</a> == 0)</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> {</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> MB_RES = <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga330f6cfcdaab1f239054c0d91be3c5bc">RS_Handle_Transmit_Start</a>(hmodbus, modbus_msg);</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> }</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> {</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#gab43a3b93c85adee5e3c561922d7ea2ef">RS_Handle_Receive_Start</a>(hmodbus, modbus_msg);</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a63ea1ac11725b29af72afb2942766633">DeferredResponse</a> = 0;</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> }</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9">RS_STATUS</a> = MB_RES;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="keywordflow">return</span> MB_RES;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span>}</div>
</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="comment"></span> </div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="comment">/** </span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="comment"> * @brief Сбор сообщения в буфер UART в режиме слейв (фрейм слейва из msg -&gt; uart).</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="comment"> * @param hmodbus Указатель на хендлер RS.</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="comment"> * @param modbus_msg Указатель на структуру сообщения.</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="comment"> * @param modbus_uart_buff Указатель на буффер UART.</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="comment"> * @return RS_RES Статус о результате заполнения буфера.</span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00167" data-start="{" data-end="}">
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___s_l_a_v_e.html#ga1c73cfdcbe7bc6076f62a4ec9c211eee"> 167</a></span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___m_o_d_b_u_s___s_l_a_v_e.html#ga1c73cfdcbe7bc6076f62a4ec9c211eee">MB_Slave_Collect_Message</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hmodbus, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *modbus_msg, uint8_t *modbus_uart_buff)</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span>{</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="keywordtype">int</span> ind = 0; <span class="comment">// ind for modbus-uart buffer</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a5f8d7960b41717c6edb84fc7bfc06d41">EchoResponse</a> &amp;&amp; hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">MessageHandled</a>) <span class="comment">// if echo response need</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> ind = hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a495a29011412451e53459f9e1513814d">RS_Message_Size</a>;</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> {</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="comment">//------INFO ABOUT DATA/MESSAGE------</span></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="preprocessor">#ifdef MODBUS_PROTOCOL_TCP</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> modbus_uart_buff[ind++] = modbus_msg-&gt;TransactionID &gt;&gt; 8;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> modbus_uart_buff[ind++] = modbus_msg-&gt;TransactionID&amp; 0xFF;</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> </div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> modbus_uart_buff[ind++] = modbus_msg-&gt;ProtocolID &gt;&gt; 8;</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> modbus_uart_buff[ind++] = modbus_msg-&gt;ProtocolID&amp; 0xFF;</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> modbus_uart_buff[ind++] = modbus_msg-&gt;PDULength &gt;&gt; 8;</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> modbus_uart_buff[ind++] = modbus_msg-&gt;PDULength&amp; 0xFF;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="comment">//-----------[first bytes]-----------</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="comment">// set ID of message/user</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> modbus_uart_buff[ind++] = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a277ed439b65aedbf03bd112c073e6a32">MbAddr</a>; </div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> </div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="comment">// set dat or err response</span></div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> modbus_uart_buff[ind++] = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a>; </div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> </div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keywordflow">if</span> (modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> &lt; <a class="code hl_define" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga822b0fd9ae9ff25dfa6748473e8e8627">FC_ERR_VALUES_START</a>) <span class="comment">// if no error occur</span></div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> {</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="comment">// fill modbus header</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="keywordflow">if</span>(0) {}</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span><span class="preprocessor">#ifdef MODBUS_ENABLE_DEVICE_IDENTIFICATIONS</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> == <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a37ddf147e08b6d205319c31e6750d47c">FC_R_DEVICE_ID</a>) <span class="comment">// devide identifications header</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> {</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> modbus_uart_buff[ind++] = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a51c020dacb24e4ffcff28b1d3c6a01ae">DevId</a>.<a class="code hl_variable" href="struct_m_b___dev_id_msg_type_def.html#aefb693da9f6b86a6da833c4177302092">MEI_Type</a>;</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> modbus_uart_buff[ind++] = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a51c020dacb24e4ffcff28b1d3c6a01ae">DevId</a>.ReadDevId;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> modbus_uart_buff[ind++] = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a51c020dacb24e4ffcff28b1d3c6a01ae">DevId</a>.<a class="code hl_variable" href="struct_m_b___dev_id_msg_type_def.html#a1ef4b6db2785f723b26b0d9abe6f371e">Conformity</a>;</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> modbus_uart_buff[ind++] = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a51c020dacb24e4ffcff28b1d3c6a01ae">DevId</a>.MoreFollows;</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> modbus_uart_buff[ind++] = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a51c020dacb24e4ffcff28b1d3c6a01ae">DevId</a>.NextObjId;</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> modbus_uart_buff[ind++] = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a51c020dacb24e4ffcff28b1d3c6a01ae">DevId</a>.NumbOfObj;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> </div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="keywordflow">if</span> (modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> &gt; <a class="code hl_define" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gaf55149bc1f05cf18af067a302e31e3f9">DATA_SIZE</a>*2) <span class="comment">// if ByteCnt less than DATA_SIZE</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> {</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <a class="code hl_define" href="group___r_s___d_e_b_u_g.html#ga49af29ab3927cad105c1d2b018a767e9">TrackerCnt_Err</a>(hmodbus-&gt;rs_err);</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="keywordflow">return</span> RS_COLLECT_MSG_ERR;</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> }</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> </div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> </div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="comment">//---------------DATA----------------</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="comment">//-----------[data bytes]------------</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> uint8_t *tmp_data_addr = (uint8_t *)modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>;</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a>; i++) <span class="comment">// filling buffer with data</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> { <span class="comment">// set data</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> modbus_uart_buff[ind++] = *tmp_data_addr;</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> tmp_data_addr++;</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> }</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> </div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> }</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="preprocessor">#endif </span><span class="comment">//MODBUS_ENABLE_DEVICE_IDENTIFICATIONS</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="preprocessor">#ifdef MODBUS_ENABLE_DIAGNOSTICS</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> == <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2aa6423de9e908dc38ce9f1c8027ad72ec">FC_R_DIAGNOSTICS</a>)</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> {</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="comment">// Diagnostics special format: [SubFunc_HI][SubFunc_LO][Data_HI][Data_LO]</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> modbus_uart_buff[ind++] = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] &gt;&gt; 8; <span class="comment">// Sub-function HI</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> modbus_uart_buff[ind++] = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] &amp; 0xFF; <span class="comment">// Sub-function LO</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> modbus_uart_buff[ind++] = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] &gt;&gt; 8; <span class="comment">// Data HI</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> modbus_uart_buff[ind++] = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] &amp; 0xFF; <span class="comment">// Data LO</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> }</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span><span class="preprocessor">#endif </span><span class="comment">//MODBUS_ENABLE_DIAGNOSTICS</span></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="keywordflow">else</span> <span class="comment">// modbus data header</span></div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> {</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="comment">// set size of received data</span></div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="keywordflow">if</span> (modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> &lt;= <a class="code hl_define" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gaf55149bc1f05cf18af067a302e31e3f9">DATA_SIZE</a>*2) <span class="comment">// if ByteCnt less than DATA_SIZE</span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> modbus_uart_buff[ind++] = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a>;</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <span class="keywordflow">else</span> <span class="comment">// otherwise return data_size err</span></div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> {</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <a class="code hl_define" href="group___r_s___d_e_b_u_g.html#ga49af29ab3927cad105c1d2b018a767e9">TrackerCnt_Err</a>(hmodbus-&gt;rs_err);</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="keywordflow">return</span> RS_COLLECT_MSG_ERR;</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> } </div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> </div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <span class="comment">//---------------DATA----------------</span></div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> <span class="comment">//-----------[data bytes]------------</span></div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> uint16_t *tmp_data_addr = (uint16_t *)modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>;</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a>; i++) <span class="comment">// filling buffer with data</span></div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> { <span class="comment">// set data</span></div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="keywordflow">if</span> (i%2 == 0) <span class="comment">// HI byte</span></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> modbus_uart_buff[ind++] = (*tmp_data_addr)&gt;&gt;8;</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="keywordflow">else</span> <span class="comment">// LO byte</span></div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> {</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> modbus_uart_buff[ind++] = *tmp_data_addr;</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> tmp_data_addr++;</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> }</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> }</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> </div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> }</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> </div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> }</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keywordflow">else</span> <span class="comment">// if some error occur</span></div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> { <span class="comment">// send expection code</span></div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> modbus_uart_buff[ind++] = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a3dab5eaf3a1dd5719b8bfec1adad0d39">Except_Code</a>;</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> }</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> }</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="keywordflow">if</span>(ind &lt; 0)</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <span class="keywordflow">return</span> RS_COLLECT_MSG_ERR;</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> </div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <span class="comment">//---------------CRC----------------</span></div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="comment">//---------[last 16 bytes]----------</span></div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span><span class="preprocessor">#ifndef MODBUS_PROTOCOL_TCP</span></div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="comment">// calc crc of received data</span></div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> uint16_t CRC_VALUE = crc16(modbus_uart_buff, ind);</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="comment">// write crc to message structure and modbus-uart buffer</span></div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a423ab838d4c113fd6392452fd44dc1c0">MbCRC</a> = CRC_VALUE;</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> modbus_uart_buff[ind++] = CRC_VALUE;</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> modbus_uart_buff[ind++] = CRC_VALUE &gt;&gt; 8;</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> </div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a495a29011412451e53459f9e1513814d">RS_Message_Size</a> = ind;</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> </div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="keywordflow">return</span> RS_OK; <span class="comment">// returns ok</span></div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span>}</div>
</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span><span class="comment"></span> </div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span><span class="comment">/** </span></div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span><span class="comment"> * @brief Определить размер модбас запроса (СЛЕЙВ версия).</span></div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span><span class="comment"> * @param hRS Указатель на хендлер RS.</span></div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span><span class="comment"> * @param rx_data_size Указатель на переменную для записи кол-ва байт для принятия.</span></div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span><span class="comment"> * @return RS_RES Статус о корректности рассчета кол-ва байт для принятия.</span></div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span><span class="comment"> * @details Определение сколько байтов надо принять по протоколу.</span></div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00294" data-start="{" data-end="}">
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"><a class="line" href="modbus__slave_8c.html#a79e3f84b9daba8a42c8ca6026133acc5"> 294</a></span><span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_function" href="modbus__slave_8c.html#a79e3f84b9daba8a42c8ca6026133acc5">MB_Define_Size_of_Function</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hmodbus, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *modbus_msg)</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span>{ </div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> MB_RES = 0;</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <span class="keywordtype">int</span> mb_func_size = 0;</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> </div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="keywordflow">if</span> (modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> == <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2aa6423de9e908dc38ce9f1c8027ad72ec">FC_R_DIAGNOSTICS</a>)</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> {</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> mb_func_size = 1;</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> } </div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> == <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a37ddf147e08b6d205319c31e6750d47c">FC_R_DEVICE_ID</a>)</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> {</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> mb_func_size = 0;</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> }</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> &amp; ~<a class="code hl_define" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga822b0fd9ae9ff25dfa6748473e8e8627">FC_ERR_VALUES_START</a>) &lt; 0x0F)</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> {</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> mb_func_size = 1;</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> }</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> {</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> mb_func_size = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> + 2;</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> }</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> </div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> </div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> mb_func_size = <a class="code hl_define" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga18eb6d0d9fdb6274341e892e2b41d88b">RX_FIRST_PART_SIZE</a> + mb_func_size; <span class="comment">// size of whole message</span></div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <span class="keywordflow">return</span> mb_func_size;</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span>}</div>
</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> </div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span><span class="comment"></span> </div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span><span class="comment">/** </span></div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span><span class="comment"> * @brief Парс сообщения в режиме слейв (фрейм мастера из uart -&gt; msg).</span></div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span><span class="comment"> * @param hmodbus Указатель на хендлер RS.</span></div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span><span class="comment"> * @param modbus_msg Указатель на структуру сообщения.</span></div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span><span class="comment"> * @param modbus_uart_buff Указатель на буффер UART.</span></div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span><span class="comment"> * @return RS_RES Статус о результате заполнения структуры.</span></div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span><span class="comment"> * @details Заполнение структуры сообщения из буффера UART.</span></div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00330" data-start="{" data-end="}">
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___s_l_a_v_e.html#gadc281b1044c4ae345d10db6497846cef"> 330</a></span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___m_o_d_b_u_s___s_l_a_v_e.html#gadc281b1044c4ae345d10db6497846cef">MB_Slave_Parse_Message</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hmodbus, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *modbus_msg, uint8_t *modbus_uart_buff)</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span>{</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> uint32_t check_empty_buff;</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> <span class="keywordtype">int</span> ind = 0; <span class="comment">// ind for modbus-uart buffer</span></div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a1513dc1265334c20a82b55b1090024c8">RX_Continue</a> = 0;</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> <span class="keywordtype">int</span> expected_size = 0;</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> <span class="comment">//-----INFO ABOUT DATA/MESSAGE-------</span></div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span><span class="preprocessor">#ifdef MODBUS_PROTOCOL_TCP</span></div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> modbus_msg-&gt;TransactionID =modbus_uart_buff[ind++]&lt;&lt;8;</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> modbus_msg-&gt;TransactionID |=modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> </div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> modbus_msg-&gt;ProtocolID =modbus_uart_buff[ind++]&lt;&lt;8;</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> modbus_msg-&gt;ProtocolID |=modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> </div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> modbus_msg-&gt;PDULength =modbus_uart_buff[ind++]&lt;&lt;8;</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> modbus_msg-&gt;PDULength |=modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span><span class="preprocessor">#endif </span></div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> <span class="comment">//-----------[first bits]------------</span></div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> <span class="comment">// get ID of message/user</span></div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <span class="keywordflow">if</span>(modbus_uart_buff[ind] != hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a01e2c95a23aa3eed1f002e2329a10942">ID</a>)</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> {</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a277ed439b65aedbf03bd112c073e6a32">MbAddr</a> = 0;</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> ind++;</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> }</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> {</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a277ed439b65aedbf03bd112c073e6a32">MbAddr</a> = modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> }</div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> </div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> <span class="comment">// get func code</span></div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> = modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> <span class="keywordflow">if</span>(modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> &amp; <a class="code hl_define" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga822b0fd9ae9ff25dfa6748473e8e8627">FC_ERR_VALUES_START</a>) <span class="comment">// явная херня</span></div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> {</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga2585ebac184f7fa56059c81419c614b9">MB_Diagnostics_SlaveNAKCnt</a>();</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a277ed439b65aedbf03bd112c073e6a32">MbAddr</a> = 0;</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keywordflow">return</span> RS_SKIP;</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> }</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> </div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> <span class="keywordflow">if</span>(0) {}</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span><span class="preprocessor">#ifdef MODBUS_ENABLE_DEVICE_IDENTIFICATIONS</span></div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> == <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a37ddf147e08b6d205319c31e6750d47c">FC_R_DEVICE_ID</a>) <span class="comment">// if it device identifications request</span></div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> {</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a51c020dacb24e4ffcff28b1d3c6a01ae">DevId</a>.<a class="code hl_variable" href="struct_m_b___dev_id_msg_type_def.html#aefb693da9f6b86a6da833c4177302092">MEI_Type</a> = modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a51c020dacb24e4ffcff28b1d3c6a01ae">DevId</a>.ReadDevId = modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a51c020dacb24e4ffcff28b1d3c6a01ae">DevId</a>.NextObjId = modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 0;</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> }</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span><span class="preprocessor">#endif </span><span class="comment">//MODBUS_ENABLE_DEVICE_IDENTIFICATIONS</span></div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span><span class="preprocessor">#ifdef MODBUS_ENABLE_DIAGNOSTICS</span></div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> == <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2aa6423de9e908dc38ce9f1c8027ad72ec">FC_R_DIAGNOSTICS</a>)</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> {</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> <span class="comment">// Diagnostics: читаем 4 байта в MbData[0] и MbData[1]</span></div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> <span class="comment">// Sub-function</span></div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] = modbus_uart_buff[ind++] &lt;&lt; 8; </div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] |= modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> <span class="comment">// Data</span></div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] = modbus_uart_buff[ind++] &lt;&lt; 8; </div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] |= modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#af99048a71119ba4c17772bd5544b3eef">Addr</a> = 0; <span class="comment">// не использует Addr</span></div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a1ccb2bf492218a6ae3a5b6ad5cd4c82f">Qnt</a> = 0; <span class="comment">// не использует Qnt</span></div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> }</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span><span class="preprocessor">#endif </span><span class="comment">//MODBUS_ENABLE_DIAGNOSTICS</span></div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> <span class="keywordflow">else</span> <span class="comment">// if its classic modbus request</span></div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> {</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <span class="comment">// get address from CMD</span></div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#af99048a71119ba4c17772bd5544b3eef">Addr</a> = modbus_uart_buff[ind++] &lt;&lt; 8;</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#af99048a71119ba4c17772bd5544b3eef">Addr</a> |= modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> </div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> <span class="comment">// get address from CMD</span></div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a1ccb2bf492218a6ae3a5b6ad5cd4c82f">Qnt</a> = modbus_uart_buff[ind++] &lt;&lt; 8;</div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a1ccb2bf492218a6ae3a5b6ad5cd4c82f">Qnt</a> |= modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> }</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> </div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> <span class="keywordflow">if</span>((hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">pMessagePtr</a>-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> == 0x0F) || (hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">pMessagePtr</a>-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> == 0x10))</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">pMessagePtr</a>-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">pMessagePtr</a>-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 0;</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> </div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> expected_size = <a class="code hl_function" href="modbus__slave_8c.html#a79e3f84b9daba8a42c8ca6026133acc5">MB_Define_Size_of_Function</a>(hmodbus, modbus_msg);</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> <span class="comment">// если размер меньше ожидаемого - продолжаем принимать</span></div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a495a29011412451e53459f9e1513814d">RS_Message_Size</a> &lt; expected_size)</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> {</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a1513dc1265334c20a82b55b1090024c8">RX_Continue</a> = 1;</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> <span class="keywordflow">return</span> RS_SKIP;</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> }</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> <span class="comment">// если больше Ошибка</span></div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a495a29011412451e53459f9e1513814d">RS_Message_Size</a> &gt; expected_size)</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> {</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga10f9e4dd9f3dda4bb0f66c323d6b29d7">MB_Diagnostics_CommunicationErrorCnt</a>();</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> <span class="keywordflow">return</span> RS_PARSE_MSG_ERR;</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> }</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> </div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> <span class="comment">//---------------DATA----------------</span></div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> <span class="comment">// (optional)</span></div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> <span class="keywordflow">if</span> (modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> != 0)</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> {</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> <span class="comment">//check that data size is correct</span></div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> <span class="keywordflow">if</span> (modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> &gt; <a class="code hl_define" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gaf55149bc1f05cf18af067a302e31e3f9">DATA_SIZE</a>*2)</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> {</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> <a class="code hl_define" href="group___r_s___d_e_b_u_g.html#ga49af29ab3927cad105c1d2b018a767e9">TrackerCnt_Err</a>(hmodbus-&gt;rs_err);</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> |= <a class="code hl_define" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga822b0fd9ae9ff25dfa6748473e8e8627">FC_ERR_VALUES_START</a>;</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga10f9e4dd9f3dda4bb0f66c323d6b29d7">MB_Diagnostics_CommunicationErrorCnt</a>();</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> <span class="keywordflow">return</span> RS_PARSE_MSG_ERR;</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> }</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> uint16_t *tmp_data_addr = (uint16_t *)modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>;</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a>; i++)</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> { <span class="comment">// set data</span></div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <span class="keywordflow">if</span> (i%2 == 0)</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> *tmp_data_addr = ((uint16_t)modbus_uart_buff[ind++] &lt;&lt; 8);</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> {</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> *tmp_data_addr |= modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> tmp_data_addr++;</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> }</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> }</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> }</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> </div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <span class="comment">//---------------CRC----------------</span></div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <span class="comment">//----------[last 16 bits]----------</span></div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span><span class="preprocessor">#ifndef MODBUS_PROTOCOL_TCP</span></div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> <span class="comment">// calc crc of received data</span></div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> uint16_t CRC_VALUE = crc16(modbus_uart_buff, ind);</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> <span class="comment">// get crc of received data</span></div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a423ab838d4c113fd6392452fd44dc1c0">MbCRC</a> = modbus_uart_buff[ind++];</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a423ab838d4c113fd6392452fd44dc1c0">MbCRC</a> |= modbus_uart_buff[ind++] &lt;&lt; 8;</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> <span class="comment">// compare crc</span></div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="keywordflow">if</span> (modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a423ab838d4c113fd6392452fd44dc1c0">MbCRC</a> != CRC_VALUE)</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> {</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga10f9e4dd9f3dda4bb0f66c323d6b29d7">MB_Diagnostics_CommunicationErrorCnt</a>();</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <a class="code hl_define" href="group___r_s___d_e_b_u_g.html#ga49af29ab3927cad105c1d2b018a767e9">TrackerCnt_Err</a>(hmodbus-&gt;rs_err);</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> |= <a class="code hl_define" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga822b0fd9ae9ff25dfa6748473e8e8627">FC_ERR_VALUES_START</a>;</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> } </div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> </div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <span class="keywordflow">return</span> RS_OK;</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span>}</div>
</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> </div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span><span class="preprocessor">#endif </span><span class="comment">//MODBUS_ENABLE_SLAVE</span></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga02e192a3d9f31737c45f074a04b37648"><div class="ttname"><a href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga02e192a3d9f31737c45f074a04b37648">MB_Process_Write_Single_Reg</a></div><div class="ttdeci">uint8_t MB_Process_Write_Single_Reg(RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Обработать функцию Write Single Register (06 - 0x06).</div><div class="ttdef"><b>Definition</b> <a href="modbus__holdregs_8c_source.html#l00120">modbus_holdregs.c:120</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga279ce6d9d175a43714862dc6661e7096"><div class="ttname"><a href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga279ce6d9d175a43714862dc6661e7096">MB_Process_Read_Device_Identifications</a></div><div class="ttdeci">uint8_t MB_Process_Read_Device_Identifications(RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Обработать функцию Read Device Identifications (43/14 - 0x2B/0E).</div><div class="ttdef"><b>Definition</b> <a href="modbus__devid_8c_source.html#l00112">modbus_devid.c:112</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga39a02e8e4911a74a619d2ef29adcbad8"><div class="ttname"><a href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga39a02e8e4911a74a619d2ef29adcbad8">MB_Process_Read_Coils</a></div><div class="ttdeci">uint8_t MB_Process_Read_Coils(RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Обработать функцию Read Coils (01 - 0x01).</div><div class="ttdef"><b>Definition</b> <a href="modbus__coils_8c_source.html#l00103">modbus_coils.c:103</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga6bbfc53b20b4698a08d79851b5db65f0"><div class="ttname"><a href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga6bbfc53b20b4698a08d79851b5db65f0">MB_Process_Diagnostics</a></div><div class="ttdeci">uint8_t MB_Process_Diagnostics(RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Обработать функцию Diagnostics (Serial Line only) (0x08)</div><div class="ttdef"><b>Definition</b> <a href="modbus__diag_8c_source.html#l00075">modbus_diag.c:75</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga6f4498cec8634820025aaa9c4623ba55"><div class="ttname"><a href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga6f4498cec8634820025aaa9c4623ba55">MB_Process_Write_Miltuple_Coils</a></div><div class="ttdeci">uint8_t MB_Process_Write_Miltuple_Coils(RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Обработать функцию Write Multiple Coils (15 - 0x0F).</div><div class="ttdef"><b>Definition</b> <a href="modbus__coils_8c_source.html#l00187">modbus_coils.c:187</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga918102931c9125a5e44a30e103d17e14"><div class="ttname"><a href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga918102931c9125a5e44a30e103d17e14">MB_Process_Write_Single_Coil</a></div><div class="ttdeci">uint8_t MB_Process_Write_Single_Coil(RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Обработать функцию Write Single Coils (05 - 0x05).</div><div class="ttdef"><b>Definition</b> <a href="modbus__coils_8c_source.html#l00156">modbus_coils.c:156</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga9c6ab159edb8dda6548b2228773ce919"><div class="ttname"><a href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga9c6ab159edb8dda6548b2228773ce919">MB_Process_Write_Miltuple_Regs</a></div><div class="ttdeci">uint8_t MB_Process_Write_Miltuple_Regs(RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Обработать функцию Write Multiple Registers (16 - 0x10).</div><div class="ttdef"><b>Definition</b> <a href="modbus__holdregs_8c_source.html#l00139">modbus_holdregs.c:139</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s_html_gac28127757ba25fe0b611612a785f663b"><div class="ttname"><a href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gac28127757ba25fe0b611612a785f663b">MB_Process_Read_Hold_Regs</a></div><div class="ttdeci">uint8_t MB_Process_Read_Hold_Regs(RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Обработать функцию Read Holding Registers (03 - 0x03).</div><div class="ttdef"><b>Definition</b> <a href="modbus__holdregs_8c_source.html#l00092">modbus_holdregs.c:92</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s_html_gad13d010f43c7ab08a85667b9e1906b7d"><div class="ttname"><a href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gad13d010f43c7ab08a85667b9e1906b7d">MB_Process_Read_Input_Regs</a></div><div class="ttdeci">uint8_t MB_Process_Read_Input_Regs(RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Обработать функцию Read Input Registers (04 - 0x04).</div><div class="ttdef"><b>Definition</b> <a href="modbus__inputregs_8c_source.html#l00087">modbus_inputregs.c:87</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga10f9e4dd9f3dda4bb0f66c323d6b29d7"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga10f9e4dd9f3dda4bb0f66c323d6b29d7">MB_Diagnostics_CommunicationErrorCnt</a></div><div class="ttdeci">void MB_Diagnostics_CommunicationErrorCnt(void)</div><div class="ttdoc">Увеличивает счетчик ошибок связи</div><div class="ttdef"><b>Definition</b> <a href="modbus__diag_8c_source.html#l00223">modbus_diag.c:223</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga22a48a04ef64f74b5974c4fdb1445936"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga22a48a04ef64f74b5974c4fdb1445936">MB_Diagnostics_SlaveMessageCnt</a></div><div class="ttdeci">void MB_Diagnostics_SlaveMessageCnt(void)</div><div class="ttdoc">Увеличивает счетчик отсутствия ответов</div><div class="ttdef"><b>Definition</b> <a href="modbus__diag_8c_source.html#l00254">modbus_diag.c:254</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga2585ebac184f7fa56059c81419c614b9"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga2585ebac184f7fa56059c81419c614b9">MB_Diagnostics_SlaveNAKCnt</a></div><div class="ttdeci">void MB_Diagnostics_SlaveNAKCnt(void)</div><div class="ttdoc">Увеличивает счетчик NAK ответов</div><div class="ttdef"><b>Definition</b> <a href="modbus__diag_8c_source.html#l00272">modbus_diag.c:272</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga82e0bf0c4452c25bf3f05a20abb7cc74"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga82e0bf0c4452c25bf3f05a20abb7cc74">MB_Diagnostics_ExceptionErrorCnt</a></div><div class="ttdeci">void MB_Diagnostics_ExceptionErrorCnt(void)</div><div class="ttdoc">Увеличивает счетчик исключений</div><div class="ttdef"><b>Definition</b> <a href="modbus__diag_8c_source.html#l00232">modbus_diag.c:232</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_gabf80c0e24a0ed3736338218c003d001d"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gabf80c0e24a0ed3736338218c003d001d">MB_Diagnostics_SlaveNoResponseCnt</a></div><div class="ttdeci">void MB_Diagnostics_SlaveNoResponseCnt(void)</div><div class="ttdoc">Увеличивает счетчик отсутствия ответов</div><div class="ttdef"><b>Definition</b> <a href="modbus__diag_8c_source.html#l00263">modbus_diag.c:263</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_gae379458fa9cea50d5e313a68e716cb83"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gae379458fa9cea50d5e313a68e716cb83">MB_Diagnostics_BusMessageCnt</a></div><div class="ttdeci">void MB_Diagnostics_BusMessageCnt(void)</div><div class="ttdoc">Увеличивает счетчик сообщений на шине</div><div class="ttdef"><b>Definition</b> <a href="modbus__diag_8c_source.html#l00215">modbus_diag.c:215</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_gae7b613f24e9e3d9d95a789c404a3a485"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gae7b613f24e9e3d9d95a789c404a3a485">MB_GetDeviceMode</a></div><div class="ttdeci">MB_DeviceModeTypeDef MB_GetDeviceMode(void)</div><div class="ttdoc">Получение текущего режима устройства</div><div class="ttdef"><b>Definition</b> <a href="modbus__diag_8c_source.html#l00291">modbus_diag.c:291</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_html_ga18eb6d0d9fdb6274341e892e2b41d88b"><div class="ttname"><a href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga18eb6d0d9fdb6274341e892e2b41d88b">RX_FIRST_PART_SIZE</a></div><div class="ttdeci">#define RX_FIRST_PART_SIZE</div><div class="ttdoc">Size of first part of message that will be received first receive info part of message,...</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00066">modbus_core.h:66</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_html_ga822b0fd9ae9ff25dfa6748473e8e8627"><div class="ttname"><a href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga822b0fd9ae9ff25dfa6748473e8e8627">FC_ERR_VALUES_START</a></div><div class="ttdeci">#define FC_ERR_VALUES_START</div><div class="ttdoc">from this value starts error func codes</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00088">modbus_core.h:88</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_html_gaf55149bc1f05cf18af067a302e31e3f9"><div class="ttname"><a href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gaf55149bc1f05cf18af067a302e31e3f9">DATA_SIZE</a></div><div class="ttdeci">#define DATA_SIZE</div><div class="ttdoc">maximum number of data: DWORD (NOT MESSAGE SIZE)</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00053">modbus_core.h:53</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_html_gga38d42495bf262b70048e6d6a7af175d2a1b66683f704ef9072329e997312e3b83"><div class="ttname"><a href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a1b66683f704ef9072329e997312e3b83">FC_W_HOLD_REG</a></div><div class="ttdeci">@ FC_W_HOLD_REG</div><div class="ttdoc">Запись одиночного регистра</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00109">modbus_core.h:109</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_html_gga38d42495bf262b70048e6d6a7af175d2a37ddf147e08b6d205319c31e6750d47c"><div class="ttname"><a href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a37ddf147e08b6d205319c31e6750d47c">FC_R_DEVICE_ID</a></div><div class="ttdeci">@ FC_R_DEVICE_ID</div><div class="ttdoc">Чтение информации об устройстве</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00114">modbus_core.h:114</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_html_gga38d42495bf262b70048e6d6a7af175d2a399bcd53bc32faca81bbc3d1ff8b5bb6"><div class="ttname"><a href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a399bcd53bc32faca81bbc3d1ff8b5bb6">FC_R_COILS</a></div><div class="ttdeci">@ FC_R_COILS</div><div class="ttdoc">Чтение битовых ячеек</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00097">modbus_core.h:97</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_html_gga38d42495bf262b70048e6d6a7af175d2a43a1b810697ea15ef91008dbc0187127"><div class="ttname"><a href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a43a1b810697ea15ef91008dbc0187127">FC_W_COILS</a></div><div class="ttdeci">@ FC_W_COILS</div><div class="ttdoc">Запись нескольких битовых ячеек</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00110">modbus_core.h:110</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_html_gga38d42495bf262b70048e6d6a7af175d2a76139e9b7ae78856fd3a297c9f751944"><div class="ttname"><a href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a76139e9b7ae78856fd3a297c9f751944">FC_R_IN_REGS</a></div><div class="ttdeci">@ FC_R_IN_REGS</div><div class="ttdoc">Чтение регистров хранения</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00101">modbus_core.h:101</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_html_gga38d42495bf262b70048e6d6a7af175d2a832b94af2c427d0daae721da2528f44a"><div class="ttname"><a href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2a832b94af2c427d0daae721da2528f44a">FC_W_COIL</a></div><div class="ttdeci">@ FC_W_COIL</div><div class="ttdoc">Запись битовой ячейки</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00108">modbus_core.h:108</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_html_gga38d42495bf262b70048e6d6a7af175d2aa6423de9e908dc38ce9f1c8027ad72ec"><div class="ttname"><a href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2aa6423de9e908dc38ce9f1c8027ad72ec">FC_R_DIAGNOSTICS</a></div><div class="ttdeci">@ FC_R_DIAGNOSTICS</div><div class="ttdoc">Чтение диагностической информации устройства</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00113">modbus_core.h:113</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_html_gga38d42495bf262b70048e6d6a7af175d2ae03921b16750ef290fdd7d19a08a29a2"><div class="ttname"><a href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2ae03921b16750ef290fdd7d19a08a29a2">FC_R_HOLD_REGS</a></div><div class="ttdeci">@ FC_R_HOLD_REGS</div><div class="ttdoc">Чтение входных регистров</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00100">modbus_core.h:100</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_html_gga38d42495bf262b70048e6d6a7af175d2affa24c54ee0b59e9810f1dbdc949e684"><div class="ttname"><a href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga38d42495bf262b70048e6d6a7af175d2affa24c54ee0b59e9810f1dbdc949e684">FC_W_HOLD_REGS</a></div><div class="ttdeci">@ FC_W_HOLD_REGS</div><div class="ttdoc">Запись нескольких регистров</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00111">modbus_core.h:111</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___s_l_a_v_e_html_ga1c73cfdcbe7bc6076f62a4ec9c211eee"><div class="ttname"><a href="group___m_o_d_b_u_s___s_l_a_v_e.html#ga1c73cfdcbe7bc6076f62a4ec9c211eee">MB_Slave_Collect_Message</a></div><div class="ttdeci">RS_StatusTypeDef MB_Slave_Collect_Message(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg, uint8_t *modbus_uart_buff)</div><div class="ttdoc">Сбор сообщения в буфер UART в режиме слейв (фрейм слейва из msg -&gt; uart).</div><div class="ttdef"><b>Definition</b> <a href="#l00167">modbus_slave.c:167</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___s_l_a_v_e_html_gacb44db7ef6ef32b08f4ffe0178eabee8"><div class="ttname"><a href="group___m_o_d_b_u_s___s_l_a_v_e.html#gacb44db7ef6ef32b08f4ffe0178eabee8">MB_Slave_Response</a></div><div class="ttdeci">RS_StatusTypeDef MB_Slave_Response(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Ответ на сообщение в режиме слейва.</div><div class="ttdef"><b>Definition</b> <a href="#l00024">modbus_slave.c:24</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___s_l_a_v_e_html_gadc281b1044c4ae345d10db6497846cef"><div class="ttname"><a href="group___m_o_d_b_u_s___s_l_a_v_e.html#gadc281b1044c4ae345d10db6497846cef">MB_Slave_Parse_Message</a></div><div class="ttdeci">RS_StatusTypeDef MB_Slave_Parse_Message(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg, uint8_t *modbus_uart_buff)</div><div class="ttdoc">Парс сообщения в режиме слейв (фрейм мастера из uart -&gt; msg).</div><div class="ttdef"><b>Definition</b> <a href="#l00330">modbus_slave.c:330</a></div></div>
<div class="ttc" id="agroup___r_s___d_e_b_u_g_html_ga23de0006aa08984cfeddb6aa5e512fa1"><div class="ttname"><a href="group___r_s___d_e_b_u_g.html#ga23de0006aa08984cfeddb6aa5e512fa1">TrackerCnt_Ok</a></div><div class="ttdeci">#define TrackerCnt_Ok(_cntstruct_)</div><div class="ttdoc">Инкрементировать переменную - успешных событий</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00106">rs_message.h:106</a></div></div>
<div class="ttc" id="agroup___r_s___d_e_b_u_g_html_ga49af29ab3927cad105c1d2b018a767e9"><div class="ttname"><a href="group___r_s___d_e_b_u_g.html#ga49af29ab3927cad105c1d2b018a767e9">TrackerCnt_Err</a></div><div class="ttdeci">#define TrackerCnt_Err(_cntstruct_)</div><div class="ttdoc">Инкрементировать переменную - ошибок</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00108">rs_message.h:108</a></div></div>
<div class="ttc" id="agroup___r_s___d_e_b_u_g_html_ga8017fb05a56a1b667244f1f786fa9c57"><div class="ttname"><a href="group___r_s___d_e_b_u_g.html#ga8017fb05a56a1b667244f1f786fa9c57">TrackerCnt_Warn</a></div><div class="ttdeci">#define TrackerCnt_Warn(_cntstruct_)</div><div class="ttdoc">Инкрементировать переменную - предупреждений</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00110">rs_message.h:110</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga1ffe808b3640f253b1783295d6990962"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga1ffe808b3640f253b1783295d6990962">RS_Abort</a></div><div class="ttdeci">RS_StatusTypeDef RS_Abort(RS_HandleTypeDef *hRS, RS_AbortTypeDef AbortMode)</div><div class="ttdoc">Отменить прием/передачу RS/UART.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00193">rs_message.c:193</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga330f6cfcdaab1f239054c0d91be3c5bc"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga330f6cfcdaab1f239054c0d91be3c5bc">RS_Handle_Transmit_Start</a></div><div class="ttdeci">RS_StatusTypeDef RS_Handle_Transmit_Start(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)</div><div class="ttdoc">Обработчик для начала передачи.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00269">rs_message.c:269</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga727154b368397b4796aa892de12a2289"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a></div><div class="ttdeci">RS_StatusTypeDef</div><div class="ttdoc">Enums for respond CMD about RS status.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00163">rs_message.h:164</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gab43a3b93c85adee5e3c561922d7ea2ef"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gab43a3b93c85adee5e3c561922d7ea2ef">RS_Handle_Receive_Start</a></div><div class="ttdeci">RS_StatusTypeDef RS_Handle_Receive_Start(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)</div><div class="ttdoc">Обработчик для начала приема.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00237">rs_message.c:237</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ggab7c55bd8bb15b0eecc8c525019d4a1cca95c6ce0fee466ba98e43213d001ecc16"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ggab7c55bd8bb15b0eecc8c525019d4a1cca95c6ce0fee466ba98e43213d001ecc16">ABORT_TX</a></div><div class="ttdeci">@ ABORT_TX</div><div class="ttdoc">Отменить передачу</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00194">rs_message.h:194</a></div></div>
<div class="ttc" id="amodbus_8h_html"><div class="ttname"><a href="modbus_8h.html">modbus.h</a></div><div class="ttdoc">Главный заголовочный файл Modbus библиотеки</div></div>
<div class="ttc" id="amodbus__slave_8c_html_a79e3f84b9daba8a42c8ca6026133acc5"><div class="ttname"><a href="modbus__slave_8c.html#a79e3f84b9daba8a42c8ca6026133acc5">MB_Define_Size_of_Function</a></div><div class="ttdeci">static int MB_Define_Size_of_Function(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Определить размер модбас запроса (СЛЕЙВ версия).</div><div class="ttdef"><b>Definition</b> <a href="#l00294">modbus_slave.c:294</a></div></div>
<div class="ttc" id="astruct_m_b___dev_id_msg_type_def_html_a1ef4b6db2785f723b26b0d9abe6f371e"><div class="ttname"><a href="struct_m_b___dev_id_msg_type_def.html#a1ef4b6db2785f723b26b0d9abe6f371e">MB_DevIdMsgTypeDef::Conformity</a></div><div class="ttdeci">uint8_t Conformity</div><div class="ttdoc">Identification conformity level of the device and type of supported access MODBUS_DEVICE_CONFORMITY.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00168">modbus_core.h:168</a></div></div>
<div class="ttc" id="astruct_m_b___dev_id_msg_type_def_html_aefb693da9f6b86a6da833c4177302092"><div class="ttname"><a href="struct_m_b___dev_id_msg_type_def.html#aefb693da9f6b86a6da833c4177302092">MB_DevIdMsgTypeDef::MEI_Type</a></div><div class="ttdeci">MB_MEITypeDef MEI_Type</div><div class="ttdoc">MEI Type assigned number for Device Identifications Interface.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00166">modbus_core.h:166</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a1513dc1265334c20a82b55b1090024c8"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a1513dc1265334c20a82b55b1090024c8">RS_FlagsTypeDef::RX_Continue</a></div><div class="ttdeci">unsigned RX_Continue</div><div class="ttdoc">0 - Продолжить принимать, 0 - Начать прием сначала</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00214">rs_message.h:214</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a4f26eda2d03a726d98fa6623f1abb814"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a4f26eda2d03a726d98fa6623f1abb814">RS_FlagsTypeDef::DataUpdated</a></div><div class="ttdeci">unsigned DataUpdated</div><div class="ttdoc">1 - Данные были обновлены</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00218">rs_message.h:218</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a5f8d7960b41717c6edb84fc7bfc06d41"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a5f8d7960b41717c6edb84fc7bfc06d41">RS_FlagsTypeDef::EchoResponse</a></div><div class="ttdeci">unsigned EchoResponse</div><div class="ttdoc">1 - Ответить эхом, 0 - Ответить своим сообщением</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00216">rs_message.h:216</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a63ea1ac11725b29af72afb2942766633"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a63ea1ac11725b29af72afb2942766633">RS_FlagsTypeDef::DeferredResponse</a></div><div class="ttdeci">unsigned DeferredResponse</div><div class="ttdoc">1 - Не начинать передачу в IT, 0 - Ответить в прерывании</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00217">rs_message.h:217</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a98c9a17358406818f3017a2997787c3f"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a98c9a17358406818f3017a2997787c3f">RS_FlagsTypeDef::MessageHandled</a></div><div class="ttdeci">unsigned MessageHandled</div><div class="ttdoc">1 - Обработка запроса успешна, 0 - Обработка запроса в процессе или ошибка</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00215">rs_message.h:215</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html"><div class="ttname"><a href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a></div><div class="ttdoc">Handle for RS communication.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00227">rs_message.h:228</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a01e2c95a23aa3eed1f002e2329a10942"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a01e2c95a23aa3eed1f002e2329a10942">RS_HandleTypeDef::ID</a></div><div class="ttdeci">uint8_t ID</div><div class="ttdoc">ID хендла</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00230">rs_message.h:230</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a495a29011412451e53459f9e1513814d"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a495a29011412451e53459f9e1513814d">RS_HandleTypeDef::RS_Message_Size</a></div><div class="ttdeci">int32_t RS_Message_Size</div><div class="ttdoc">size of whole message, not only data</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00233">rs_message.h:233</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a6a3f47a1a3476d6e9df997e1dc9da8c4"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a6a3f47a1a3476d6e9df997e1dc9da8c4">RS_HandleTypeDef::pMessagePtr</a></div><div class="ttdeci">RS_MsgTypeDef * pMessagePtr</div><div class="ttdoc">Указатель на структуру протокола</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00231">rs_message.h:231</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a6fa98c2955d01e07dc59f73d072bb37e"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">RS_HandleTypeDef::f</a></div><div class="ttdeci">RS_FlagsTypeDef f</div><div class="ttdoc">Флаги для контроля приема/передачи</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00243">rs_message.h:243</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a8bbcb263ae7a61790b559bcb55cd9aa9"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9">RS_HandleTypeDef::RS_STATUS</a></div><div class="ttdeci">RS_StatusTypeDef RS_STATUS</div><div class="ttdoc">Статус RS.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00247">rs_message.h:247</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html"><div class="ttname"><a href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a></div><div class="ttdoc">Structure for modbus messsage.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00176">modbus_core.h:177</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html_a176d779ab0d7fd06a4303e6e6acb6ca9"><div class="ttname"><a href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">RS_MsgTypeDef::FuncCode</a></div><div class="ttdeci">MB_FunctonTypeDef FuncCode</div><div class="ttdoc">Modbus Function Code.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00185">modbus_core.h:185</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html_a1ccb2bf492218a6ae3a5b6ad5cd4c82f"><div class="ttname"><a href="struct_r_s___msg_type_def.html#a1ccb2bf492218a6ae3a5b6ad5cd4c82f">RS_MsgTypeDef::Qnt</a></div><div class="ttdeci">uint16_t Qnt</div><div class="ttdoc">Quantity of modbus data.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00188">modbus_core.h:188</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html_a277ed439b65aedbf03bd112c073e6a32"><div class="ttname"><a href="struct_r_s___msg_type_def.html#a277ed439b65aedbf03bd112c073e6a32">RS_MsgTypeDef::MbAddr</a></div><div class="ttdeci">uint8_t MbAddr</div><div class="ttdoc">Modbus Slave Address.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00184">modbus_core.h:184</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html_a3dab5eaf3a1dd5719b8bfec1adad0d39"><div class="ttname"><a href="struct_r_s___msg_type_def.html#a3dab5eaf3a1dd5719b8bfec1adad0d39">RS_MsgTypeDef::Except_Code</a></div><div class="ttdeci">MB_ExceptionTypeDef Except_Code</div><div class="ttdoc">Exception Code for the command.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00192">modbus_core.h:192</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html_a423ab838d4c113fd6392452fd44dc1c0"><div class="ttname"><a href="struct_r_s___msg_type_def.html#a423ab838d4c113fd6392452fd44dc1c0">RS_MsgTypeDef::MbCRC</a></div><div class="ttdeci">uint16_t MbCRC</div><div class="ttdoc">Modbus CRC.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00194">modbus_core.h:194</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html_a51c020dacb24e4ffcff28b1d3c6a01ae"><div class="ttname"><a href="struct_r_s___msg_type_def.html#a51c020dacb24e4ffcff28b1d3c6a01ae">RS_MsgTypeDef::DevId</a></div><div class="ttdeci">MB_DevIdMsgTypeDef DevId</div><div class="ttdoc">Read Device Identifications Header struct.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00186">modbus_core.h:186</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html_a5c69bf212dc5e7dc2eaa50971e27e2a6"><div class="ttname"><a href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">RS_MsgTypeDef::ByteCnt</a></div><div class="ttdeci">uint8_t ByteCnt</div><div class="ttdoc">Quantity of bytes of data in message to transmit/receive.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00189">modbus_core.h:189</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html_aacbc6754621bd84742cd6c2ba65ad094"><div class="ttname"><a href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">RS_MsgTypeDef::MbData</a></div><div class="ttdeci">uint16_t MbData[DATA_SIZE]</div><div class="ttdoc">Modbus Data.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00191">modbus_core.h:191</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html_af99048a71119ba4c17772bd5544b3eef"><div class="ttname"><a href="struct_r_s___msg_type_def.html#af99048a71119ba4c17772bd5544b3eef">RS_MsgTypeDef::Addr</a></div><div class="ttdeci">uint16_t Addr</div><div class="ttdoc">Modbus Address of data.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00187">modbus_core.h:187</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a href="dir_413f4e031a85da0d68269c6fd2f76e1c.html">Src</a></li><li class="navelem"><a href="modbus__slave_8c.html">modbus_slave.c</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
</ul>
</div>
</body>
</html>