FSM/vscode/manual/html/template_f_s_m_8c.html

378 lines
18 KiB
HTML
Raw 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.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/template/templateFSM.c File Reference</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="resize.js"></script>
<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/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</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="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('template_f_s_m_8c.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<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="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">templateFSM.c File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>重新实现几个必须实现的函数,并赋值到父类指针里
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;string.h&gt;</code><br />
<code>#include &quot;<a class="el" href="_f_s_m__protected_8h_source.html">FSM_protected.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="template_f_s_m_8h_source.html">templateFSM.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="template_f_s_m__private_8h_source.html">templateFSM_private.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a9e6eba3b03d1ff4c504705b2da864cb3" id="r_a9e6eba3b03d1ff4c504705b2da864cb3"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9e6eba3b03d1ff4c504705b2da864cb3">loadExternalData</a> (TemplateFSMData *data)</td></tr>
<tr class="separator:a9e6eba3b03d1ff4c504705b2da864cb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ae1c0974bb8e7f8b00f959a17d91f60" id="r_a7ae1c0974bb8e7f8b00f959a17d91f60"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7ae1c0974bb8e7f8b00f959a17d91f60">resetSignals</a> (<a class="el" href="struct_f_s_m_signals.html">FSMSignals</a> *signals, TemplateFSMData *data)</td></tr>
<tr class="memdesc:a7ae1c0974bb8e7f8b00f959a17d91f60"><td class="mdescLeft">&#160;</td><td class="mdescRight">根据条件重置信号 <br /></td></tr>
<tr class="separator:a7ae1c0974bb8e7f8b00f959a17d91f60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ebc219bfad056d35b189b8e6fa94896" id="r_a5ebc219bfad056d35b189b8e6fa94896"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5ebc219bfad056d35b189b8e6fa94896">initData</a> (TemplateFSM *pFSM)</td></tr>
<tr class="memdesc:a5ebc219bfad056d35b189b8e6fa94896"><td class="mdescLeft">&#160;</td><td class="mdescRight">给所有内部、外部数据分配堆空间 <br /></td></tr>
<tr class="separator:a5ebc219bfad056d35b189b8e6fa94896"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b945e9059bb82bf66884af5133eb898" id="r_a8b945e9059bb82bf66884af5133eb898"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8b945e9059bb82bf66884af5133eb898">initDataLoader</a> (TemplateFSM *pFSM)</td></tr>
<tr class="separator:a8b945e9059bb82bf66884af5133eb898"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48fc6ebf7882fb5d4437c4d64b96255b" id="r_a48fc6ebf7882fb5d4437c4d64b96255b"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a48fc6ebf7882fb5d4437c4d64b96255b">setupHandler</a> (<a class="el" href="struct_f_s_m_handler.html">FSMHandler</a> *fcns)</td></tr>
<tr class="memdesc:a48fc6ebf7882fb5d4437c4d64b96255b"><td class="mdescLeft">&#160;</td><td class="mdescRight">设置状态选择函数、状态内函数和状态转移函数 <br /></td></tr>
<tr class="separator:a48fc6ebf7882fb5d4437c4d64b96255b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac23edf7d09bf4b52ca0cfbc1224c4c0d" id="r_ac23edf7d09bf4b52ca0cfbc1224c4c0d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac23edf7d09bf4b52ca0cfbc1224c4c0d">step</a> (TemplateFSM *pFSM)</td></tr>
<tr class="memdesc:ac23edf7d09bf4b52ca0cfbc1224c4c0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">重新实现基类的step函数添加一些打印信息 <br /></td></tr>
<tr class="separator:ac23edf7d09bf4b52ca0cfbc1224c4c0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0fc4d91dbcaaffccd8f14e56173d696" id="r_ab0fc4d91dbcaaffccd8f14e56173d696"><td class="memItemLeft" align="right" valign="top">TemplateFSM *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab0fc4d91dbcaaffccd8f14e56173d696">createTemplateFSM</a> ()</td></tr>
<tr class="memdesc:ab0fc4d91dbcaaffccd8f14e56173d696"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a Template FSM object. <br /></td></tr>
<tr class="separator:ab0fc4d91dbcaaffccd8f14e56173d696"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>重新实现几个必须实现的函数,并赋值到父类指针里 </p>
<dl class="section author"><dt>Author</dt><dd>天神 (<a href="#" onclick="location.href='mai'+'lto:'+'dal'+'ao'+'shi'+'@s'+'tu.'+'xj'+'tu.'+'ed'+'u.c'+'n'; return false;">dalao<span class="obfuscator">.nosp@m.</span>shi@<span class="obfuscator">.nosp@m.</span>stu.x<span class="obfuscator">.nosp@m.</span>jtu.<span class="obfuscator">.nosp@m.</span>edu.c<span class="obfuscator">.nosp@m.</span>n</a>) </dd></dl>
<dl class="section version"><dt>Version</dt><dd>2.1 </dd></dl>
<dl class="section date"><dt>Date</dt><dd>2024-05-07</dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>天神创意无限公司 2024 </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a9e6eba3b03d1ff4c504705b2da864cb3" name="a9e6eba3b03d1ff4c504705b2da864cb3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e6eba3b03d1ff4c504705b2da864cb3">&#9670;&#160;</a></span>loadExternalData()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void loadExternalData </td>
<td>(</td>
<td class="paramtype">TemplateFSMData *</td> <td class="paramname"><span class="paramname"><em>data</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000016">Deprecated</a></b></dt><dd>暂时没用后续考虑data是否需要加锁再说 </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>主要是外部数据 </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a7ae1c0974bb8e7f8b00f959a17d91f60" name="a7ae1c0974bb8e7f8b00f959a17d91f60"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ae1c0974bb8e7f8b00f959a17d91f60">&#9670;&#160;</a></span>resetSignals()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void resetSignals </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_f_s_m_signals.html">FSMSignals</a> *</td> <td class="paramname"><span class="paramname"><em>signals</em>, </span></td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">TemplateFSMData *</td> <td class="paramname"><span class="paramname"><em>data</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>根据条件重置信号 </p>
<p>清除被响应信号和所有小于被响应信号优先级的信号具体可以参考notion </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">signals</td><td>状态机接收到的信号 </td></tr>
<tr><td class="paramname">data</td><td>状态机数据 </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a5ebc219bfad056d35b189b8e6fa94896" name="a5ebc219bfad056d35b189b8e6fa94896"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5ebc219bfad056d35b189b8e6fa94896">&#9670;&#160;</a></span>initData()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void initData </td>
<td>(</td>
<td class="paramtype">TemplateFSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>给所有内部、外部数据分配堆空间 </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8b945e9059bb82bf66884af5133eb898" name="a8b945e9059bb82bf66884af5133eb898"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b945e9059bb82bf66884af5133eb898">&#9670;&#160;</a></span>initDataLoader()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void initDataLoader </td>
<td>(</td>
<td class="paramtype">TemplateFSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000017">Deprecated</a></b></dt><dd>弃用 </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a48fc6ebf7882fb5d4437c4d64b96255b" name="a48fc6ebf7882fb5d4437c4d64b96255b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a48fc6ebf7882fb5d4437c4d64b96255b">&#9670;&#160;</a></span>setupHandler()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void setupHandler </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_f_s_m_handler.html">FSMHandler</a> *</td> <td class="paramname"><span class="paramname"><em>fcns</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>设置状态选择函数、状态内函数和状态转移函数 </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">fcns</td><td>状态机函数表 </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac23edf7d09bf4b52ca0cfbc1224c4c0d" name="ac23edf7d09bf4b52ca0cfbc1224c4c0d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac23edf7d09bf4b52ca0cfbc1224c4c0d">&#9670;&#160;</a></span>step()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void step </td>
<td>(</td>
<td class="paramtype">TemplateFSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>重新实现基类的step函数添加一些打印信息 </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td>子类状态机指针 </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ab0fc4d91dbcaaffccd8f14e56173d696" name="ab0fc4d91dbcaaffccd8f14e56173d696"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0fc4d91dbcaaffccd8f14e56173d696">&#9670;&#160;</a></span>createTemplateFSM()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">TemplateFSM * createTemplateFSM </td>
<td>(</td>
<td class="paramname"><span class="paramname"></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a Template FSM object. </p>
<p>子类状态机细节对外隐藏,外部只能访问基类的公有函数来操作子类变量 </p><dl class="section return"><dt>Returns</dt><dd>TemplateFSM* </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_7883619b7fc78d5d5f504b4a82c84a2d.html">template</a></li><li class="navelem"><a class="el" href="template_f_s_m_8c.html">templateFSM.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.10.0 </li>
</ul>
</div>
</body>
</html>