MCB1700_Welcome/Doxygen/html/_fsm_framework_8h_source.html

239 lines
39 KiB
HTML

<!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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Labor04: FsmFramework.h 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>
<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>
<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>
<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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Labor04
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</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">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('_fsm_framework_8h_source.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">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">FsmFramework.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="_fsm_framework_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"><a class="line" href="group___s_m.html#ga34d0c615f7d75bcc90aa5d7c1cf10cef"> 1</a></span>&#160; </div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#ifndef __STATEMACHINE_H_</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#define __STATEMACHINE_H_</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;stdbool.h&gt;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#ifndef SW_USE_ONENTRY</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="group___s_m.html#ga93e9842e7c9687f925c76ff8af80be52"> 37</a></span>&#160;<span class="preprocessor">#define SW_USE_ONENTRY 1</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; </div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#ifndef SW_USE_ONDO</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="group___s_m.html#ga76d63e26773fc165d8636a2705a273dd"> 44</a></span>&#160;<span class="preprocessor">#define SW_USE_ONDO 0</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#ifndef SW_USE_ONEXIT</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="group___s_m.html#ga57a889c2e6dc4812a3c70d2c0bad58e5"> 51</a></span>&#160;<span class="preprocessor">#define SW_USE_ONEXIT 1</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#ifndef SW_USE_TRANSITIONFUNCTION</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="group___s_m.html#ga3c5e2b453a27b11e20009ab92cd7cd3f"> 58</a></span>&#160;<span class="preprocessor">#define SW_USE_TRANSITIONFUNCTION 1</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="group___s_m.html#ga99da34e4a92dfc63c2082d9657b44345"> 65</a></span>&#160;<span class="preprocessor">#define IS_IN(statemachine, state) (statemachine.s32ActualState == state)</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structstate_table_events.html">stateTableEvents</a> <a class="code" href="structstate_table_events.html">sStateTable_t</a>;</div>
<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="group___s_m.html#ga427446bc212fb5561c7ff2859300cff2"> 69</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="structstate_table_events.html">sStateTable_t</a>* <a class="code" href="group___s_m.html#ga427446bc212fb5561c7ff2859300cff2">psStateTable_t</a>;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="group___s_m.html#gaf7b00b5277ad6c0ca1739bacdffceece"> 74</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="group___s_m.html#gaf7b00b5277ad6c0ca1739bacdffceece">specialStates</a></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;{</div>
<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="group___s_m.html#ggaf7b00b5277ad6c0ca1739bacdffceeceaa369585a250430e128ba0ef57a8e2692"> 76</a></span>&#160; <a class="code" href="group___s_m.html#ggaf7b00b5277ad6c0ca1739bacdffceeceaa369585a250430e128ba0ef57a8e2692">FAULT_STATE</a> = -1, <span class="comment">// Used in sStateTransitions_t as nextStateId for not allowed events.</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="group___s_m.html#ggaf7b00b5277ad6c0ca1739bacdffceecea1b5757828d7b174efa07d686e5d5acac">FINAL_STATE</a> = -2 <span class="comment">// Used in sStateTransitions_t as nextStateId for the final state.</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="group___s_m.html#ggaf7b00b5277ad6c0ca1739bacdffceecea1b5757828d7b174efa07d686e5d5acac"> 78</a></span>&#160;} <a class="code" href="group___s_m.html#ga432e71548de6e4886f439fec3fd92f77">eSpecialStates_t</a>;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="group___s_m.html#ga1a0a4be3c30aa4d0baf63ae33525e790"> 83</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="group___s_m.html#ga1a0a4be3c30aa4d0baf63ae33525e790">specialEvents</a></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;{</div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="group___s_m.html#gga1a0a4be3c30aa4d0baf63ae33525e790a5856f037cd70ecf6fca11999c11a4a0d"> 85</a></span>&#160; <a class="code" href="group___s_m.html#gga1a0a4be3c30aa4d0baf63ae33525e790a5856f037cd70ecf6fca11999c11a4a0d">NO_EVENT</a> = -1, <span class="comment">// Can be used, if there is no event, but the state machine should be called.</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="group___s_m.html#gga1a0a4be3c30aa4d0baf63ae33525e790adbe18484536257cc0966f0a0df05863e">TIME_EVENT</a> = -2 <span class="comment">// Should be used for timer events, especially elapsing timers.</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="group___s_m.html#gga1a0a4be3c30aa4d0baf63ae33525e790adbe18484536257cc0966f0a0df05863e"> 87</a></span>&#160;} <a class="code" href="group___s_m.html#ga12e350b317b5d24209b09a63a2293386">eSpecialEvents_t</a>;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="group___s_m.html#gae68e0cf14cb8d6332c29de697a4c7a2d"> 92</a></span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="group___s_m.html#gae68e0cf14cb8d6332c29de697a4c7a2d">vCallback_t</a>)(void);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="group___s_m.html#ga7957141d271ecc40ed63ac9fb308be57"> 97</a></span>&#160;<span class="keyword">typedef</span> _Bool (*<a class="code" href="group___s_m.html#ga7957141d271ecc40ed63ac9fb308be57">bCallbackGuard_t</a>)(void);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; </div>
<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="structstate_transition.html"> 110</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structstate_transition.html">stateTransition</a></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;{</div>
<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="group___s_m.html#ga5cdc2c9f58e42e1c10c43dff82706129"> 112</a></span>&#160; int32_t <a class="code" href="group___s_m.html#ga5cdc2c9f58e42e1c10c43dff82706129">s32EventId</a>; <span class="comment">// Associated event id for this transition.</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="group___s_m.html#ga823a0b98f2bf81fb078373a776efe79c"> 113</a></span>&#160; <a class="code" href="group___s_m.html#ga7957141d271ecc40ed63ac9fb308be57">bCallbackGuard_t</a> <a class="code" href="group___s_m.html#ga823a0b98f2bf81fb078373a776efe79c">bGuardCb</a>; <span class="comment">// Guard function, returns either true or false</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="group___s_m.html#ga1ac8558ca920bf24327003a266e56c2b"> 114</a></span>&#160; <a class="code" href="group___s_m.html#gae68e0cf14cb8d6332c29de697a4c7a2d">vCallback_t</a> <a class="code" href="group___s_m.html#ga1ac8558ca920bf24327003a266e56c2b">vTransitionCb</a>; <span class="comment">// Transition function callback.</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="group___s_m.html#ga084f33ee7b046c6c52467c63a92ebc2b"> 115</a></span>&#160; int32_t <a class="code" href="group___s_m.html#ga084f33ee7b046c6c52467c63a92ebc2b">s32NextStateId</a>; <span class="comment">// ID of next state.</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="group___s_m.html#ga1e701e95a7ec78e5d709fff3ed827915"> 116</a></span>&#160;} <a class="code" href="group___s_m.html#ga1e701e95a7ec78e5d709fff3ed827915">sStateTransitions_t</a>;</div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="group___s_m.html#ga6ccf076843ee9ea9429f8bb27c1a2fd7"> 117</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="structstate_transition.html">sStateTransitions_t</a>* <a class="code" href="group___s_m.html#ga6ccf076843ee9ea9429f8bb27c1a2fd7">psStateTransitions_t</a>;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; </div>
<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="structstate_table_events.html"> 127</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structstate_table_events.html">stateTableEvents</a></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;{</div>
<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="group___s_m.html#ga3a3bc923e2ded28e806ca2d04d0b1774"> 129</a></span>&#160; int32_t <a class="code" href="group___s_m.html#ga3a3bc923e2ded28e806ca2d04d0b1774">s32StateId</a>; <span class="comment">// ID of this state.</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="group___s_m.html#gacd39a5c1f85b2f88bb31de1758b9339d"> 130</a></span>&#160; <a class="code" href="group___s_m.html#gae68e0cf14cb8d6332c29de697a4c7a2d">vCallback_t</a> <a class="code" href="group___s_m.html#gacd39a5c1f85b2f88bb31de1758b9339d">vOnEntry</a>; <span class="comment">// onEntry function callback.</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="group___s_m.html#gaf401a845f0df48e5ed312d31316b0867"> 131</a></span>&#160; <a class="code" href="group___s_m.html#gae68e0cf14cb8d6332c29de697a4c7a2d">vCallback_t</a> <a class="code" href="group___s_m.html#gaf401a845f0df48e5ed312d31316b0867">vOnDo</a>; <span class="comment">// While in the state function callback.</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="group___s_m.html#gade3ee808674432465d4fe132a7b38569"> 132</a></span>&#160; <a class="code" href="group___s_m.html#gae68e0cf14cb8d6332c29de697a4c7a2d">vCallback_t</a> <a class="code" href="group___s_m.html#gade3ee808674432465d4fe132a7b38569">vOnExit</a>; <span class="comment">// onExit function callback.</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="group___s_m.html#gae6cb6ab5a5c3a79b92e7872cc1ee1601"> 133</a></span>&#160; <a class="code" href="structstate_transition.html">psStateTransitions_t</a> <a class="code" href="group___s_m.html#gae6cb6ab5a5c3a79b92e7872cc1ee1601">psStateEvents</a>; <span class="comment">// Event table for this state.</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="group___s_m.html#ga0efffa2b6c35891664891ba15ffc7abf"> 134</a></span>&#160; <a class="code" href="structstate_table_events.html">psStateTable_t</a> <a class="code" href="group___s_m.html#ga0efffa2b6c35891664891ba15ffc7abf">psNestedStateTable</a>; <span class="comment">// If this state machine has a nested state machine</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="group___s_m.html#ga26eb90ada77cafb97019d7e9247cca00"> 135</a></span>&#160;} <a class="code" href="group___s_m.html#ga26eb90ada77cafb97019d7e9247cca00">sStateTableEvents_t</a>;</div>
<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="group___s_m.html#gaede16ffacd18615753ae97768d232e75"> 136</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="structstate_table_events.html">sStateTableEvents_t</a>* <a class="code" href="group___s_m.html#gaede16ffacd18615753ae97768d232e75">psStateTableEvents_t</a>;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; </div>
<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="structstate_machine.html"> 144</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structstate_machine.html">stateMachine</a></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;{</div>
<div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="group___s_m.html#ga8c38634e13a564a3a2cd28c7ebf9dde7"> 146</a></span>&#160; uint32_t <a class="code" href="group___s_m.html#ga8c38634e13a564a3a2cd28c7ebf9dde7">u32StateMachineId</a>; <span class="comment">// ID of the state machine, set by init.</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; </div>
<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="group___s_m.html#gae46d0848e5bf7496e27f4b6c355bc86b"> 148</a></span>&#160; int32_t <a class="code" href="group___s_m.html#gae46d0848e5bf7496e27f4b6c355bc86b">s32ActualState</a>; <span class="comment">// Holds the actual state.</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="group___s_m.html#ga197f9575f7a3a8638622e7dc5fc7be58"> 149</a></span>&#160; int32_t <a class="code" href="group___s_m.html#ga197f9575f7a3a8638622e7dc5fc7be58">s32NextState</a>; <span class="comment">// Holds the next state after a transition.</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
<div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="group___s_m.html#gab465e2b8a2f0ef43b549a66a0e91245a"> 151</a></span>&#160; uint32_t <a class="code" href="group___s_m.html#gab465e2b8a2f0ef43b549a66a0e91245a">u32StateCount</a>; <span class="comment">// Number of states in this state machine.</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="group___s_m.html#gac0ab152443940c2fcd919e59b9ee87a7"> 152</a></span>&#160; uint32_t <a class="code" href="group___s_m.html#gac0ab152443940c2fcd919e59b9ee87a7">u32EventCount</a>; <span class="comment">// Number of events in this state machine.</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="group___s_m.html#ga7d48771d20211e9a6405911d8e41db8c"> 154</a></span>&#160; _Bool <a class="code" href="group___s_m.html#ga7d48771d20211e9a6405911d8e41db8c">bStateChanged</a>; <span class="comment">// Holds if the fsm changed its state after last transition.</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
<div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="group___s_m.html#gae7907afecdc76d8302dad95d713aef07"> 156</a></span>&#160; <a class="code" href="structstate_table_events.html">psStateTable_t</a> <a class="code" href="group___s_m.html#gae7907afecdc76d8302dad95d713aef07">psStateTable</a>; <span class="comment">// Table with all states and transitions.</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="group___s_m.html#gafe60fa549ca239452b192bd58fa0a262"> 157</a></span>&#160;} <a class="code" href="group___s_m.html#gafe60fa549ca239452b192bd58fa0a262">sStateMachine_t</a>;</div>
<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="group___s_m.html#ga10bfa3198b48a517ad5a59dab2bc5149"> 158</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="structstate_machine.html">sStateMachine_t</a>* <a class="code" href="group___s_m.html#ga10bfa3198b48a517ad5a59dab2bc5149">psStateMachine_t</a>;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; </div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;_Bool <a class="code" href="group___s_m.html#gaacfab84b89a33fb81412b97c8cf089eb">bFsmframeworkInitialize</a>(<a class="code" href="structstate_machine.html">psStateMachine_t</a> psStateMachine, <a class="code" href="structstate_table_events.html">psStateTable_t</a> psStateTable, \</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; int32_t s32StartState, uint32_t u32StateCount, \</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; uint32_t u32EventCount, <a class="code" href="group___s_m.html#gae68e0cf14cb8d6332c29de697a4c7a2d">vCallback_t</a> vInitCallback);</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;_Bool <a class="code" href="group___s_m.html#gab37c7b983ce34de002616a0607371c69">bFsmframeworkDispatchEvent</a>(<a class="code" href="structstate_machine.html">psStateMachine_t</a> psStateMachine, int32_t s32Event);</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; </div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; </div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;int32_t <a class="code" href="group___s_m.html#ga1647cf225f639c7336518153c8a5ea85">s32FsmframeworkGetState</a>(<a class="code" href="structstate_machine.html">psStateMachine_t</a> psStateMachine);</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; </div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;_Bool <a class="code" href="group___s_m.html#ga6e0454440b6c4435def62aa706c9f8b3">bFsmframeworkIsStateChanged</a>(<a class="code" href="structstate_machine.html">psStateMachine_t</a> psStateMachine);</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; </div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; </div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="preprocessor">#endif // __STATEMACHINE_H_</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="agroup___s_m_html_ga5cdc2c9f58e42e1c10c43dff82706129"><div class="ttname"><a href="group___s_m.html#ga5cdc2c9f58e42e1c10c43dff82706129">stateTransition::s32EventId</a></div><div class="ttdeci">int32_t s32EventId</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:112</div></div>
<div class="ttc" id="agroup___s_m_html_gab37c7b983ce34de002616a0607371c69"><div class="ttname"><a href="group___s_m.html#gab37c7b983ce34de002616a0607371c69">bFsmframeworkDispatchEvent</a></div><div class="ttdeci">_Bool bFsmframeworkDispatchEvent(psStateMachine_t psStateMachine, int32_t s32Event)</div><div class="ttdoc">Dispatch Event.</div><div class="ttdef"><b>Definition:</b> FsmFramework.c:47</div></div>
<div class="ttc" id="agroup___s_m_html_ga12e350b317b5d24209b09a63a2293386"><div class="ttname"><a href="group___s_m.html#ga12e350b317b5d24209b09a63a2293386">eSpecialEvents_t</a></div><div class="ttdeci">enum specialEvents eSpecialEvents_t</div><div class="ttdoc">Special events that can occur while the state machine is running.</div></div>
<div class="ttc" id="agroup___s_m_html_gaf7b00b5277ad6c0ca1739bacdffceece"><div class="ttname"><a href="group___s_m.html#gaf7b00b5277ad6c0ca1739bacdffceece">specialStates</a></div><div class="ttdeci">specialStates</div><div class="ttdoc">Special states to use with nextStateId in sStateTransitions_t.</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:75</div></div>
<div class="ttc" id="agroup___s_m_html_gga1a0a4be3c30aa4d0baf63ae33525e790a5856f037cd70ecf6fca11999c11a4a0d"><div class="ttname"><a href="group___s_m.html#gga1a0a4be3c30aa4d0baf63ae33525e790a5856f037cd70ecf6fca11999c11a4a0d">NO_EVENT</a></div><div class="ttdeci">@ NO_EVENT</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:85</div></div>
<div class="ttc" id="agroup___s_m_html_ga8c38634e13a564a3a2cd28c7ebf9dde7"><div class="ttname"><a href="group___s_m.html#ga8c38634e13a564a3a2cd28c7ebf9dde7">stateMachine::u32StateMachineId</a></div><div class="ttdeci">uint32_t u32StateMachineId</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:146</div></div>
<div class="ttc" id="agroup___s_m_html_ga99da34e4a92dfc63c2082d9657b44345"><div class="ttname"><a href="group___s_m.html#ga99da34e4a92dfc63c2082d9657b44345">IS_IN</a></div><div class="ttdeci">#define IS_IN(statemachine, state)</div><div class="ttdoc">MACRO checking if statemachine is in state.</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:65</div></div>
<div class="ttc" id="a_e_s2___v4__app_8h_html"><div class="ttname"><a href="_e_s2___v4__app_8h.html">ES2_V4_app.h</a></div><div class="ttdoc">global header file for project</div></div>
<div class="ttc" id="astructstate_machine_html"><div class="ttname"><a href="structstate_machine.html">stateMachine</a></div><div class="ttdoc">All nesseccary data for a state machine.</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:145</div></div>
<div class="ttc" id="agroup___s_m_html_ga3a3bc923e2ded28e806ca2d04d0b1774"><div class="ttname"><a href="group___s_m.html#ga3a3bc923e2ded28e806ca2d04d0b1774">stateTableEvents::s32StateId</a></div><div class="ttdeci">int32_t s32StateId</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:129</div></div>
<div class="ttc" id="agroup___s_m_html_ga1647cf225f639c7336518153c8a5ea85"><div class="ttname"><a href="group___s_m.html#ga1647cf225f639c7336518153c8a5ea85">s32FsmframeworkGetState</a></div><div class="ttdeci">int32_t s32FsmframeworkGetState(psStateMachine_t psStateMachine)</div><div class="ttdoc">Get the actual state of a statemachine.</div><div class="ttdef"><b>Definition:</b> FsmFramework.c:134</div></div>
<div class="ttc" id="agroup___s_m_html_ga10bfa3198b48a517ad5a59dab2bc5149"><div class="ttname"><a href="group___s_m.html#ga10bfa3198b48a517ad5a59dab2bc5149">psStateMachine_t</a></div><div class="ttdeci">sStateMachine_t * psStateMachine_t</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:158</div></div>
<div class="ttc" id="agroup___s_m_html_ggaf7b00b5277ad6c0ca1739bacdffceecea1b5757828d7b174efa07d686e5d5acac"><div class="ttname"><a href="group___s_m.html#ggaf7b00b5277ad6c0ca1739bacdffceecea1b5757828d7b174efa07d686e5d5acac">FINAL_STATE</a></div><div class="ttdeci">@ FINAL_STATE</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:77</div></div>
<div class="ttc" id="agroup___s_m_html_gaede16ffacd18615753ae97768d232e75"><div class="ttname"><a href="group___s_m.html#gaede16ffacd18615753ae97768d232e75">psStateTableEvents_t</a></div><div class="ttdeci">sStateTableEvents_t * psStateTableEvents_t</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:136</div></div>
<div class="ttc" id="agroup___s_m_html_ga1a0a4be3c30aa4d0baf63ae33525e790"><div class="ttname"><a href="group___s_m.html#ga1a0a4be3c30aa4d0baf63ae33525e790">specialEvents</a></div><div class="ttdeci">specialEvents</div><div class="ttdoc">Special events that can occur while the state machine is running.</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:84</div></div>
<div class="ttc" id="agroup___s_m_html_ga432e71548de6e4886f439fec3fd92f77"><div class="ttname"><a href="group___s_m.html#ga432e71548de6e4886f439fec3fd92f77">eSpecialStates_t</a></div><div class="ttdeci">enum specialStates eSpecialStates_t</div><div class="ttdoc">Special states to use with nextStateId in sStateTransitions_t.</div></div>
<div class="ttc" id="agroup___s_m_html_ggaf7b00b5277ad6c0ca1739bacdffceeceaa369585a250430e128ba0ef57a8e2692"><div class="ttname"><a href="group___s_m.html#ggaf7b00b5277ad6c0ca1739bacdffceeceaa369585a250430e128ba0ef57a8e2692">FAULT_STATE</a></div><div class="ttdeci">@ FAULT_STATE</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:76</div></div>
<div class="ttc" id="agroup___s_m_html_ga0efffa2b6c35891664891ba15ffc7abf"><div class="ttname"><a href="group___s_m.html#ga0efffa2b6c35891664891ba15ffc7abf">stateTableEvents::psNestedStateTable</a></div><div class="ttdeci">psStateTable_t psNestedStateTable</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:134</div></div>
<div class="ttc" id="agroup___s_m_html_gae46d0848e5bf7496e27f4b6c355bc86b"><div class="ttname"><a href="group___s_m.html#gae46d0848e5bf7496e27f4b6c355bc86b">stateMachine::s32ActualState</a></div><div class="ttdeci">int32_t s32ActualState</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:148</div></div>
<div class="ttc" id="agroup___s_m_html_ga084f33ee7b046c6c52467c63a92ebc2b"><div class="ttname"><a href="group___s_m.html#ga084f33ee7b046c6c52467c63a92ebc2b">stateTransition::s32NextStateId</a></div><div class="ttdeci">int32_t s32NextStateId</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:115</div></div>
<div class="ttc" id="agroup___s_m_html_gae68e0cf14cb8d6332c29de697a4c7a2d"><div class="ttname"><a href="group___s_m.html#gae68e0cf14cb8d6332c29de697a4c7a2d">vCallback_t</a></div><div class="ttdeci">void(* vCallback_t)(void)</div><div class="ttdoc">Callback typedef for better readable code.</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:92</div></div>
<div class="ttc" id="agroup___s_m_html_gac0ab152443940c2fcd919e59b9ee87a7"><div class="ttname"><a href="group___s_m.html#gac0ab152443940c2fcd919e59b9ee87a7">stateMachine::u32EventCount</a></div><div class="ttdeci">uint32_t u32EventCount</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:152</div></div>
<div class="ttc" id="agroup___s_m_html_gaf401a845f0df48e5ed312d31316b0867"><div class="ttname"><a href="group___s_m.html#gaf401a845f0df48e5ed312d31316b0867">stateTableEvents::vOnDo</a></div><div class="ttdeci">vCallback_t vOnDo</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:131</div></div>
<div class="ttc" id="agroup___s_m_html_gae6cb6ab5a5c3a79b92e7872cc1ee1601"><div class="ttname"><a href="group___s_m.html#gae6cb6ab5a5c3a79b92e7872cc1ee1601">stateTableEvents::psStateEvents</a></div><div class="ttdeci">psStateTransitions_t psStateEvents</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:133</div></div>
<div class="ttc" id="astructstate_table_events_html"><div class="ttname"><a href="structstate_table_events.html">stateTableEvents</a></div><div class="ttdoc">State table holds states and corresponding event tables.</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:128</div></div>
<div class="ttc" id="agroup___s_m_html_ga1ac8558ca920bf24327003a266e56c2b"><div class="ttname"><a href="group___s_m.html#ga1ac8558ca920bf24327003a266e56c2b">stateTransition::vTransitionCb</a></div><div class="ttdeci">vCallback_t vTransitionCb</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:114</div></div>
<div class="ttc" id="agroup___s_m_html_gab465e2b8a2f0ef43b549a66a0e91245a"><div class="ttname"><a href="group___s_m.html#gab465e2b8a2f0ef43b549a66a0e91245a">stateMachine::u32StateCount</a></div><div class="ttdeci">uint32_t u32StateCount</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:151</div></div>
<div class="ttc" id="a_fsm_framework_8c_html_a5f91f49eb1a06d5e2c9a6c6eb4010001"><div class="ttname"><a href="_fsm_framework_8c.html#a5f91f49eb1a06d5e2c9a6c6eb4010001">u32StateMachineCount</a></div><div class="ttdeci">static uint32_t u32StateMachineCount</div><div class="ttdef"><b>Definition:</b> FsmFramework.c:4</div></div>
<div class="ttc" id="astructstate_transition_html"><div class="ttname"><a href="structstate_transition.html">stateTransition</a></div><div class="ttdoc">Event table holds events that can generate a state transition.</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:111</div></div>
<div class="ttc" id="agroup___s_m_html_gga1a0a4be3c30aa4d0baf63ae33525e790adbe18484536257cc0966f0a0df05863e"><div class="ttname"><a href="group___s_m.html#gga1a0a4be3c30aa4d0baf63ae33525e790adbe18484536257cc0966f0a0df05863e">TIME_EVENT</a></div><div class="ttdeci">@ TIME_EVENT</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:86</div></div>
<div class="ttc" id="agroup___s_m_html_gade3ee808674432465d4fe132a7b38569"><div class="ttname"><a href="group___s_m.html#gade3ee808674432465d4fe132a7b38569">stateTableEvents::vOnExit</a></div><div class="ttdeci">vCallback_t vOnExit</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:132</div></div>
<div class="ttc" id="agroup___s_m_html_ga7d48771d20211e9a6405911d8e41db8c"><div class="ttname"><a href="group___s_m.html#ga7d48771d20211e9a6405911d8e41db8c">stateMachine::bStateChanged</a></div><div class="ttdeci">_Bool bStateChanged</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:154</div></div>
<div class="ttc" id="agroup___s_m_html_gafe60fa549ca239452b192bd58fa0a262"><div class="ttname"><a href="group___s_m.html#gafe60fa549ca239452b192bd58fa0a262">sStateMachine_t</a></div><div class="ttdeci">struct stateMachine sStateMachine_t</div><div class="ttdoc">All nesseccary data for a state machine.</div></div>
<div class="ttc" id="agroup___s_m_html_ga427446bc212fb5561c7ff2859300cff2"><div class="ttname"><a href="group___s_m.html#ga427446bc212fb5561c7ff2859300cff2">psStateTable_t</a></div><div class="ttdeci">sStateTable_t * psStateTable_t</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:69</div></div>
<div class="ttc" id="agroup___s_m_html_ga26eb90ada77cafb97019d7e9247cca00"><div class="ttname"><a href="group___s_m.html#ga26eb90ada77cafb97019d7e9247cca00">sStateTableEvents_t</a></div><div class="ttdeci">struct stateTableEvents sStateTableEvents_t</div><div class="ttdoc">State table holds states and corresponding event tables.</div></div>
<div class="ttc" id="agroup___s_m_html_ga6e0454440b6c4435def62aa706c9f8b3"><div class="ttname"><a href="group___s_m.html#ga6e0454440b6c4435def62aa706c9f8b3">bFsmframeworkIsStateChanged</a></div><div class="ttdeci">_Bool bFsmframeworkIsStateChanged(psStateMachine_t psStateMachine)</div><div class="ttdoc">Get the statechanged flag. 1 if last event changed the state, 0 if last event did not changed the sta...</div><div class="ttdef"><b>Definition:</b> FsmFramework.c:139</div></div>
<div class="ttc" id="agroup___s_m_html_ga1e701e95a7ec78e5d709fff3ed827915"><div class="ttname"><a href="group___s_m.html#ga1e701e95a7ec78e5d709fff3ed827915">sStateTransitions_t</a></div><div class="ttdeci">struct stateTransition sStateTransitions_t</div><div class="ttdoc">Event table holds events that can generate a state transition.</div></div>
<div class="ttc" id="agroup___s_m_html_gae7907afecdc76d8302dad95d713aef07"><div class="ttname"><a href="group___s_m.html#gae7907afecdc76d8302dad95d713aef07">stateMachine::psStateTable</a></div><div class="ttdeci">psStateTable_t psStateTable</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:156</div></div>
<div class="ttc" id="agroup___s_m_html_gaacfab84b89a33fb81412b97c8cf089eb"><div class="ttname"><a href="group___s_m.html#gaacfab84b89a33fb81412b97c8cf089eb">bFsmframeworkInitialize</a></div><div class="ttdeci">_Bool bFsmframeworkInitialize(psStateMachine_t psStateMachine, psStateTable_t psStateTable, int32_t s32StartState, uint32_t u32StateCount, uint32_t u32EventCount, vCallback_t vInitCallback)</div><div class="ttdoc">Initialization of the State Machine.</div><div class="ttdef"><b>Definition:</b> FsmFramework.c:6</div></div>
<div class="ttc" id="agroup___s_m_html_ga823a0b98f2bf81fb078373a776efe79c"><div class="ttname"><a href="group___s_m.html#ga823a0b98f2bf81fb078373a776efe79c">stateTransition::bGuardCb</a></div><div class="ttdeci">bCallbackGuard_t bGuardCb</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:113</div></div>
<div class="ttc" id="agroup___s_m_html_gacd39a5c1f85b2f88bb31de1758b9339d"><div class="ttname"><a href="group___s_m.html#gacd39a5c1f85b2f88bb31de1758b9339d">stateTableEvents::vOnEntry</a></div><div class="ttdeci">vCallback_t vOnEntry</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:130</div></div>
<div class="ttc" id="agroup___s_m_html_ga6ccf076843ee9ea9429f8bb27c1a2fd7"><div class="ttname"><a href="group___s_m.html#ga6ccf076843ee9ea9429f8bb27c1a2fd7">psStateTransitions_t</a></div><div class="ttdeci">sStateTransitions_t * psStateTransitions_t</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:117</div></div>
<div class="ttc" id="agroup___s_m_html_ga197f9575f7a3a8638622e7dc5fc7be58"><div class="ttname"><a href="group___s_m.html#ga197f9575f7a3a8638622e7dc5fc7be58">stateMachine::s32NextState</a></div><div class="ttdeci">int32_t s32NextState</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:149</div></div>
<div class="ttc" id="agroup___s_m_html_ga7957141d271ecc40ed63ac9fb308be57"><div class="ttname"><a href="group___s_m.html#ga7957141d271ecc40ed63ac9fb308be57">bCallbackGuard_t</a></div><div class="ttdeci">_Bool(* bCallbackGuard_t)(void)</div><div class="ttdoc">Callback for guard functions, that return either true or false.</div><div class="ttdef"><b>Definition:</b> FsmFramework.h:97</div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="_fsm_framework_8h.html">FsmFramework.h</a></li>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>