{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033 {\fonttbl {\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;} {\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;} } {\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green128\blue0;\red96\green64\blue32;\rede0\green128\blue0;\red128\green0\blue0;\red128\green96\blue32;\red0\green32\blue128;\red0\green128\blue128;\red255\green0\blue255;\red0\green0\blue0;\red112\green0\blue112;\red255\green0\blue0;} {\stylesheet {\widctlpar\adjustright \fs20\cgrid \snext0 Normal;} {\paperw11900\paperh16840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect} {\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid \sbasedon0 \snext0 heading 1;} {\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \sbasedon0 \snext0 heading 2;} {\s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid \sbasedon0 \snext0 heading 3;} {\s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid \sbasedon0 \snext0 heading 4;}{\*\cs10 \additive Default Paragraph Font;} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid \sbasedon0 \snext0 heading 5;}{\*\cs10 \additive Default Paragraph Font;} {\s15\qc\sb240\sa60\widctlpar\outlinelevel0\adjustright \b\f1\fs32\kerning28\cgrid \sbasedon0 \snext15 Title;} {\s16\qc\sa60\widctlpar\outlinelevel1\adjustright \f1\cgrid \sbasedon0 \snext16 Subtitle;} {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \sbasedon0 \snext17 BodyText;} {\s18\widctlpar\fs22\cgrid \sbasedon0 \snext18 DenseText;} {\s28\widctlpar\tqc\tx4320\tqr\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext28 header;} {\s29\widctlpar\tqc\tx4320\tqr\tx8640\qr\adjustright \fs20\cgrid \sbasedon0 \snext29 footer;} {\s30\li360\sa60\sb120\keepn\widctlpar\adjustright \b\f1\fs20\cgrid \sbasedon0 \snext30 GroupHeader;} {\s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext41 Code Example 0;} {\s41\li360\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext42 Code Example 1;} {\s42\li720\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext43 Code Example 2;} {\s43\li1080\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext44 Code Example 3;} {\s44\li1440\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext45 Code Example 4;} {\s45\li1800\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext46 Code Example 5;} {\s46\li2160\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext47 Code Example 6;} {\s47\li2520\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext48 Code Example 7;} {\s48\li2880\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext49 Code Example 8;} {\s49\li3240\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext50 Code Example 9;} {\s50\li3600\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext51 Code Example 10;} {\s51\li3960\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext52 Code Example 11;} {\s52\li4320\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext53 Code Example 12;} {\s53\li4680\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext53 Code Example 13;} {\s60\li0\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext61 List Continue 0;} {\s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext62 List Continue 1;} {\s62\li720\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext63 List Continue 2;} {\s63\li1080\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext64 List Continue 3;} {\s64\li1440\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext65 List Continue 4;} {\s65\li1800\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext66 List Continue 5;} {\s66\li2160\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext67 List Continue 6;} {\s67\li2520\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext68 List Continue 7;} {\s68\li2880\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext69 List Continue 8;} {\s69\li3240\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext70 List Continue 9;} {\s70\li3600\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext71 List Continue 10;} {\s71\li3960\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext72 List Continue 11;} {\s72\li4320\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext73 List Continue 12;} {\s73\li4680\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext73 List Continue 13;} {\s80\li0\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext81 DescContinue 0;} {\s81\li360\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext82 DescContinue 1;} {\s82\li720\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext83 DescContinue 2;} {\s83\li1080\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext84 DescContinue 3;} {\s84\li1440\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext85 DescContinue 4;} {\s85\li1800\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext86 DescContinue 5;} {\s86\li2160\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext87 DescContinue 6;} {\s87\li2520\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext88 DescContinue 7;} {\s88\li2880\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext89 DescContinue 8;} {\s89\li3240\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext90 DescContinue 9;} {\s90\li3600\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext91 DescContinue 10;} {\s91\li3960\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext92 DescContinue 11;} {\s92\li4320\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext93 DescContinue 12;} {\s93\li4680\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext93 DescContinue 13;} {\s100\li0\sa30\sb30\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext101 LatexTOC 0;} {\s101\li360\sa27\sb27\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext102 LatexTOC 1;} {\s102\li720\sa24\sb24\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext103 LatexTOC 2;} {\s103\li1080\sa21\sb21\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext104 LatexTOC 3;} {\s104\li1440\sa18\sb18\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext105 LatexTOC 4;} {\s105\li1800\sa15\sb15\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext106 LatexTOC 5;} {\s106\li2160\sa12\sb12\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext107 LatexTOC 6;} {\s107\li2520\sa9\sb9\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext108 LatexTOC 7;} {\s108\li2880\sa6\sb6\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext109 LatexTOC 8;} {\s109\li3240\sa3\sb3\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext110 LatexTOC 9;} {\s110\li3600\sa3\sb3\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext111 LatexTOC 10;} {\s111\li3960\sa3\sb3\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext112 LatexTOC 11;} {\s112\li4320\sa3\sb3\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext113 LatexTOC 12;} {\s113\li4680\sa3\sb3\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext113 LatexTOC 13;} {\s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext121 \sautoupd List Bullet 0;} {\s121\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext122 \sautoupd List Bullet 1;} {\s122\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext123 \sautoupd List Bullet 2;} {\s123\fi-360\li1440\widctlpar\jclisttab\tx1440{\*\pn \pnlvlbody\ilvl0\ls4\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext124 \sautoupd List Bullet 3;} {\s124\fi-360\li1800\widctlpar\jclisttab\tx1800{\*\pn \pnlvlbody\ilvl0\ls5\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext125 \sautoupd List Bullet 4;} {\s125\fi-360\li2160\widctlpar\jclisttab\tx2160{\*\pn \pnlvlbody\ilvl0\ls6\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext126 \sautoupd List Bullet 5;} {\s126\fi-360\li2520\widctlpar\jclisttab\tx2520{\*\pn \pnlvlbody\ilvl0\ls7\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext127 \sautoupd List Bullet 6;} {\s127\fi-360\li2880\widctlpar\jclisttab\tx2880{\*\pn \pnlvlbody\ilvl0\ls8\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext128 \sautoupd List Bullet 7;} {\s128\fi-360\li3240\widctlpar\jclisttab\tx3240{\*\pn \pnlvlbody\ilvl0\ls9\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext129 \sautoupd List Bullet 8;} {\s129\fi-360\li3600\widctlpar\jclisttab\tx3600{\*\pn \pnlvlbody\ilvl0\ls10\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext130 \sautoupd List Bullet 9;} {\s130\fi-360\li3960\widctlpar\jclisttab\tx3960{\*\pn \pnlvlbody\ilvl0\ls11\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext131 \sautoupd List Bullet 10;} {\s131\fi-360\li4320\widctlpar\jclisttab\tx4320{\*\pn \pnlvlbody\ilvl0\ls12\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext132 \sautoupd List Bullet 11;} {\s132\fi-360\li4680\widctlpar\jclisttab\tx4680{\*\pn \pnlvlbody\ilvl0\ls13\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext133 \sautoupd List Bullet 12;} {\s133\fi-360\li5040\widctlpar\jclisttab\tx5040{\*\pn \pnlvlbody\ilvl0\ls14\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext133 \sautoupd List Bullet 13;} {\s140\fi-360\li360\widctlpar\fs20\cgrid \sbasedon0 \snext141 \sautoupd List Enum 0;} {\s141\fi-360\li720\widctlpar\fs20\cgrid \sbasedon0 \snext142 \sautoupd List Enum 1;} {\s142\fi-360\li1080\widctlpar\fs20\cgrid \sbasedon0 \snext143 \sautoupd List Enum 2;} {\s143\fi-360\li1440\widctlpar\fs20\cgrid \sbasedon0 \snext144 \sautoupd List Enum 3;} {\s144\fi-360\li1800\widctlpar\fs20\cgrid \sbasedon0 \snext145 \sautoupd List Enum 4;} {\s145\fi-360\li2160\widctlpar\fs20\cgrid \sbasedon0 \snext146 \sautoupd List Enum 5;} {\s146\fi-360\li2520\widctlpar\fs20\cgrid \sbasedon0 \snext147 \sautoupd List Enum 6;} {\s147\fi-360\li2880\widctlpar\fs20\cgrid \sbasedon0 \snext148 \sautoupd List Enum 7;} {\s148\fi-360\li3240\widctlpar\fs20\cgrid \sbasedon0 \snext149 \sautoupd List Enum 8;} {\s149\fi-360\li3600\widctlpar\fs20\cgrid \sbasedon0 \snext150 \sautoupd List Enum 9;} {\s150\fi-360\li3960\widctlpar\fs20\cgrid \sbasedon0 \snext151 \sautoupd List Enum 10;} {\s151\fi-360\li4320\widctlpar\fs20\cgrid \sbasedon0 \snext152 \sautoupd List Enum 11;} {\s152\fi-360\li4680\widctlpar\fs20\cgrid \sbasedon0 \snext153 \sautoupd List Enum 12;} {\s153\fi-360\li5040\widctlpar\fs20\cgrid \sbasedon0 \snext153 \sautoupd List Enum 13;} } {\info {\title {\comment \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6 {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid 0.1alpha \par }}\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6} {\comment Generated by doxygen 1.10.0.} }\pard\plain \sectd\pgnlcrm {\footer \s29\widctlpar\tqc\tx4320\tqr\tx8640\qr\adjustright \fs20\cgrid {\chpgn}} \pard\plain \s16\qc\sa60\widctlpar\outlinelevel1\adjustright \f1\cgrid \vertalc\qc\par\par\par\par\par\par\par \pard\plain \s15\qc\sb240\sa60\widctlpar\outlinelevel0\adjustright \b\f1\fs32\kerning28\cgrid {\field\fldedit {\*\fldinst TITLE \\*MERGEFORMAT}{\fldrslt \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6}}\par \pard\plain \s16\qc\sa60\widctlpar\outlinelevel1\adjustright \f1\cgrid \par \par\par\par\par\par\par\par\par\par\par\par\par \pard\plain \s16\qc\sa60\widctlpar\outlinelevel1\adjustright \f1\cgrid {\field\fldedit {\*\fldinst AUTHOR \\*MERGEFORMAT}{\fldrslt AUTHOR}}\par Version 0.1alpha\par\page\page\vertalt \pard\plain \s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid Table of Contents\par \pard\plain \par {\field\fldedit {\*\fldinst TOC \\f \\*MERGEFORMAT}{\fldrslt Table of contents}}\par \pard\plain \sect \sbkpage \pgndec \pgnrestart \sect \sectd \sbknone {\footer \s29\widctlpar\tqc\tx4320\tqr\tx8640\qr\adjustright \fs20\cgrid {\chpgn}} \par \pard\plain \par \pard\plain \pard\plain \s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid Deprecated List\par \pard\plain {\tc\tcl1 \v Deprecated List} {\xe \v Deprecated List} {\bkmkstart AAAAAAAACK} {\bkmkend AAAAAAAACK} { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b _clearPreloaderOverFlag} (FSM *pFSM)\par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACL} {\bkmkend AAAAAAAACL} \'E5\'BC\'83\'E7\'94\'A8 \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b _getPreloaderOverFlag} (FSM *pFSM)\par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACM} {\bkmkend AAAAAAAACM} \'E5\'BC\'83\'E7\'94\'A8 \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b _preloaderGetReady} (FSM *pFSM)\par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACN} {\bkmkend AAAAAAAACN} \'E5\'BC\'83\'E7\'94\'A8 \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b _preloadIn} (FSM *pFSM)\par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACO} {\bkmkend AAAAAAAACO} \'E5\'BC\'83\'E7\'94\'A8 \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b ClearPreloaderOverFlag} (pFSM)\par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACP} {\bkmkend AAAAAAAACP} \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b FSMDataLoader} \par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACQ} {\bkmkend AAAAAAAACQ} \'E9\'A2\'84\'E8\'A3\'85\'E8\'BD\'BD\'E5\'99\'A8\'E5\'BC\'83\'E7\'94\'A8 \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b FSMHandler::childFSMStepTable} )(FSM **cFSM)\par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACR} {\bkmkend AAAAAAAACR} \'E5\'AD\'90\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'9A\'82\'E6\'97\'B6\'E5\'BC\'83\'E7\'94\'A8 \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b FSMPrivateVars::childFSM} \par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACS} {\bkmkend AAAAAAAACS} \'E5\'92\'8C\'E5\'AD\'90\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'9B\'B8\'E5\'85\'B3\'E7\'9A\'84\'E6\'9A\'82\'E6\'97\'B6\'E5\'BC\'83\'E7\'94\'A8 \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b FSMPrivateVars::numChild} \par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACT} {\bkmkend AAAAAAAACT} \'E5\'92\'8C\'E5\'AD\'90\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'9B\'B8\'E5\'85\'B3\'E7\'9A\'84\'E6\'9A\'82\'E6\'97\'B6\'E5\'BC\'83\'E7\'94\'A8 \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b FSMPrivateVars::preloader} \par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACU} {\bkmkend AAAAAAAACU} \'E5\'BC\'83\'E7\'94\'A8 \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b FSMPureVtbl::initDataLoader} )(FSM *pFSM)\par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACV} {\bkmkend AAAAAAAACV} \'E5\'92\'8C\'E9\'A2\'84\'E8\'A3\'85\'E8\'BD\'BD\'E5\'99\'A8\'E7\'9B\'B8\'E5\'85\'B3 \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b FSMPureVtbl::loadExternalData} )(void *extData)\par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACW} {\bkmkend AAAAAAAACW} \'E6\'9A\'82\'E6\'97\'B6\'E6\'B2\'A1\'E7\'94\'A8\'EF\'BC\'8C\'E5\'90\'8E\'E7\'BB\'AD\'E5\'8F\'AF\'E8\'83\'BD\'E8\'80\'83\'E8\'99\'91\'E5\'A4\'96\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE\'E6\'98\'AF\'E5\'90\'A6\'E5\'85\'81\'E8\'AE\'B8\'E9\'9A\'8F\'E6\'97\'B6\'E4\'BF\'AE\'E6\'94\'B9 \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b GetPreloaderOverFlag} (pFSM)\par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACX} {\bkmkend AAAAAAAACX} \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b initDataLoader} (TemplateFSM *pFSM)\par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACY} {\bkmkend AAAAAAAACY} \'E5\'BC\'83\'E7\'94\'A8 \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b loadExternalData} (TemplateFSMData *data)\par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAACZ} {\bkmkend AAAAAAAACZ} \'E6\'9A\'82\'E6\'97\'B6\'E6\'B2\'A1\'E7\'94\'A8\'EF\'BC\'8C\'E5\'90\'8E\'E7\'BB\'AD\'E8\'80\'83\'E8\'99\'91data\'E6\'98\'AF\'E5\'90\'A6\'E9\'9C\'80\'E8\'A6\'81\'E5\'8A\'A0\'E9\'94\'81\'E5\'86\'8D\'E8\'AF\'B4 \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b preload} (FSM *pFSM)\par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAADA} {\bkmkend AAAAAAAADA} \'E5\'8E\'BB\'E6\'8E\'89\'E4\'BA\'86\'E6\'89\'80\'E6\'9C\'89\'E5\'92\'8C\'E9\'A2\'84\'E8\'A3\'85\'E8\'BD\'BD\'E5\'99\'A8\'E7\'9B\'B8\'E5\'85\'B3\'E7\'9A\'84\'E5\'86\'85\'E5\'AE\'B9 \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b PreloaderGetReady} (pFSM)\par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAADB} {\bkmkend AAAAAAAADB} \par} {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Global {\b TemplateFSM_Input} (pFSM)\par } {\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAADC} {\bkmkend AAAAAAAADC} \'E6\'9A\'82\'E6\'97\'B6\'E5\'BC\'83\'E7\'94\'A8 \par} }} \pard\plain \sect\sbkpage \s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid Data Structure Index\par \pard\plain {\tc \v Data Structure Index} \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid Data Structures\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid Here are the data structures with brief descriptions:} { \par \pard\plain \s101\li360\sa27\sb27\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid {\b {\b FSMDataLoader} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAADD \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b {\b FSMHandler} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E5\'A4\'84\'E7\'90\'86\'E5\'87\'BD\'E6\'95\'B0\'E9\'9B\'86\'E5\'90\'88\'EF\'BC\'8C\'E5\'85\'A8\'E9\'83\'A8\'E9\'9C\'80\'E8\'A6\'81\'E5\'AD\'90\'E7\'B1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'A1\'AB\'E5\'85\'85\'E5\'86\'85\'E5\'AE\'B9 })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAADE \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b {\b FSMPrivateVars} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'9F\'BA\'E7\'B1\'BB\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'9A\'84\'E7\'A7\'81\'E6\'9C\'89\'E5\'8F\'98\'E9\'87\'8F\'E5\'92\'8C\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'AD\'90\'E7\'B1\'BB\'E4\'B8\'8D\'E5\'8F\'AF\'E7\'9B\'B4\'E6\'8E\'A5\'E8\'AE\'BF\'E9\'97\'AE })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAADM \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b {\b FSMPureVtbl} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'BA\'AF\'E8\'99\'9A\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'AD\'90\'E7\'B1\'BB\'E5\'BF\'85\'E9\'A1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'AE\'9E\'E7\'8E\'B0\'EF\'BC\'8C\'E7\'88\'B6\'E7\'B1\'BB\'E6\'9E\'84\'E9\'80\'A0\'E5\'87\'BD\'E6\'95\'B0\'E4\'B8\'8D\'E4\'BC\'9A\'E5\'88\'9D\'E5\'A7\'8B\'E5\'8C\'96 })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAADW \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b {\b FSMSignals} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'94\'A8\'E7\'9A\'84\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8Cprotected\'E5\'AD\'90\'E7\'B1\'BB\'E5\'8F\'AF\'E4\'BB\'A5\'E8\'AE\'BF\'E9\'97\'AE })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAED \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b {\b TemplateFSMExternalData} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E5\'A4\'96\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEG \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b {\b TemplateFSMInnerData} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E5\'86\'85\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEH \\*MERGEFORMAT}{\fldrslt pagenum}} \par \par} \pard\plain \sect\sbkpage \s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid File Index\par \pard\plain {\tc \v File Index} \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid File List\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid Here is a list of all documented files with brief descriptions:} { \par \pard\plain \s101\li360\sa27\sb27\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid {\b FSM_OOP/baseFSM/{\b FSM.c} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAK \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b FSM_OOP/baseFSM/{\b FSM_private.h} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6\'E7\'9A\'84\'E7\'A7\'81\'E6\'9C\'89\'E5\'8F\'98\'E9\'87\'8F\'EF\'BC\'8C\'E5\'8F\'AA\'E8\'83\'BD\'E5\'9C\'A8\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6\'E5\'86\'85\'E4\'BD\'BF\'E7\'94\'A8\'E3\'80\'82 })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAS \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b FSM_OOP/baseFSM/{\b FSM_protected.h} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6\'E7\'9A\'84protected\'E5\'87\'BD\'E6\'95\'B0\'E5\'92\'8C\'E5\'8F\'98\'E9\'87\'8F\'EF\'BC\'8C\'E5\'9C\'A8\'E7\'BB\'A7\'E6\'89\'BF\'E7\'9A\'84\'E5\'AD\'90\'E7\'B1\'BB\'E4\'B8\'AD\'E5\'8F\'AF\'E4\'BD\'BF\'E7\'94\'A8\'EF\'BC\'8C\'E5\'9C\'A8\'E5\'A4\'96\'E7\'95\'8C\'E4\'B8\'8D\'E5\'8F\'AF\'E4\'BD\'BF\'E7\'94\'A8 })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAY \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b FSM_OOP/baseFSM/{\b FSM_public.h} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABE \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b FSM_OOP/childtest/{\b childFSM.h} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAD \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b FSM_OOP/childtest/{\b childFSM_private.h} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAE \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b FSM_OOP/childtest/{\b parentFSM.h} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAF \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b FSM_OOP/keytest/{\b keyFSM.h} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAG \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b FSM_OOP/keytest/{\b keyFSM_private.h} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAH \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b FSM_OOP/template/{\b templateFSM.c} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E9\'87\'8D\'E6\'96\'B0\'E5\'AE\'9E\'E7\'8E\'B0\'E5\'87\'A0\'E4\'B8\'AA\'E5\'BF\'85\'E9\'A1\'BB\'E5\'AE\'9E\'E7\'8E\'B0\'E7\'9A\'84\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'B9\'B6\'E8\'B5\'8B\'E5\'80\'BC\'E5\'88\'B0\'E7\'88\'B6\'E7\'B1\'BB\'E6\'8C\'87\'E9\'92\'88\'E9\'87\'8C })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABP \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b FSM_OOP/template/{\b templateFSM.h} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'AF\'B9\'E5\'A4\'96\'E6\'9A\'B4\'E9\'9C\'B2\'E6\'8E\'A5\'E5\'8F\'A3\'EF\'BC\'8C\'E5\'A4\'96\'E9\'83\'A8\'E5\'8F\'AF\'E4\'BB\'A5\'E8\'AE\'BE\'E7\'BD\'AE\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'9A\'84\'E4\'BF\'A1\'E5\'8F\'B7 })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABX \\*MERGEFORMAT}{\fldrslt pagenum}} \par {\b FSM_OOP/template/{\b templateFSM_private.h} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'94\'A8\'E6\'9D\'A5\'E5\'A3\'B0\'E6\'98\'8E\'E7\'8A\'B6\'E6\'80\'81\'E3\'80\'81\'E7\'8A\'B6\'E6\'80\'81\'E5\'87\'BD\'E6\'95\'B0\'E7\'AD\'89\'E3\'80\'82\'E8\'BF\'99\'E4\'B8\'AA\'E6\'96\'87\'E4\'BB\'B6\'E5\'8F\'AA\'E8\'83\'BD\'E8\'A2\'ABtemplateFSM.c\'E5\'BC\'95\'E7\'94\'A8\'E4\'B8\'80\'E6\'AC\'A1\'EF\'BC\'81 })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAACE \\*MERGEFORMAT}{\fldrslt pagenum}} \par \par} \pard\plain \sect\sbkpage \s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid Data Structure Documentation{\tc \v Data Structure Documentation} \par \pard\plain \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSMDataLoader Struct Reference\par \pard\plain {\tc\tcl2 \v FSMDataLoader} {\xe \v FSMDataLoader} {\bkmkstart AAAAAAAADD} {\bkmkend AAAAAAAADD} \par { {\f2 #include }}\par {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Detailed Description\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \'E9\'A2\'84\'E8\'A3\'85\'E8\'BD\'BD\'E5\'99\'A8\'E5\'BC\'83\'E7\'94\'A8\par } }} \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSMHandler Struct Reference\par \pard\plain {\tc\tcl2 \v FSMHandler} {\xe \v FSMHandler} {\bkmkstart AAAAAAAADE} {\bkmkend AAAAAAAADE} \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E5\'A4\'84\'E7\'90\'86\'E5\'87\'BD\'E6\'95\'B0\'E9\'9B\'86\'E5\'90\'88\'EF\'BC\'8C\'E5\'85\'A8\'E9\'83\'A8\'E9\'9C\'80\'E8\'A6\'81\'E5\'AD\'90\'E7\'B1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'A1\'AB\'E5\'85\'85\'E5\'86\'85\'E5\'AE\'B9 }}\par { {\f2 #include }}\par \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Data Fields\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid int(** {\b selectNextState} )(void *data, {\b FSMSignals} *signals)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void(** {\b transitionTable} )(void *data)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void(* {\b transitionGeneralAction} )(void *data)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void(** {\b enterActionTable} )(void *data, FSM **cFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void(** {\b duringActionTable} )(void *data, FSM **cFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void(** {\b exitActionTable} )(void *data, FSM **cFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void(** {\b childFSMStepTable} )(FSM **cFSM)\par } {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Detailed Description\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E5\'A4\'84\'E7\'90\'86\'E5\'87\'BD\'E6\'95\'B0\'E9\'9B\'86\'E5\'90\'88\'EF\'BC\'8C\'E5\'85\'A8\'E9\'83\'A8\'E9\'9C\'80\'E8\'A6\'81\'E5\'AD\'90\'E7\'B1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'A1\'AB\'E5\'85\'85\'E5\'86\'85\'E5\'AE\'B9 \par } {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'BF\'99\'E4\'B8\'AA\'E7\'BB\'93\'E6\'9E\'84\'E4\'BD\'93\'E6\'98\'AF\'E7\'A7\'81\'E6\'9C\'89\'E5\'8F\'98\'E9\'87\'8F\'EF\'BC\'8C\'E5\'AD\'90\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E5\'92\'8C\'E5\'A4\'96\'E7\'95\'8C\'E9\'83\'BD\'E4\'B8\'8D\'E8\'AF\'A5\'E8\'AE\'BF\'E9\'97\'AE\'E3\'80\'82\'E4\'BD\'86\'E6\'98\'AF\'E5\'86\'99\'E5\'9C\'A8FSM_protect.h\'E6\'96\'87\'E4\'BB\'B6\'EF\'BC\'8C\'E8\'BF\'99\'E6\'A0\'B7\'E6\'96\'B9\'E4\'BE\'BF\'E5\'9C\'A8\'E5\'AD\'90\'E7\'B1\'BB\'E4\'B8\'AD\'E6\'B7\'BB\'E5\'8A\'A0\'E5\'87\'BD\'E6\'95\'B0\'E3\'80\'82\'E4\'B8\'8D\'E7\'84\'B6\'E6\'B7\'BB\'E5\'8A\'A0\'E5\'87\'BD\'E6\'95\'B0\'E5\'BE\'97\'E5\'86\'8D\'E5\'86\'99\'E4\'B8\'AA\'E5\'87\'BD\'E6\'95\'B0\'E6\'B7\'BB\'E5\'8A\'A0\'EF\'BC\'8C \'E6\'9C\'89\'E7\'82\'B9\'E9\'BA\'BB\'E7\'83\'A6 \par }} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Field Documentation\par \pard\plain {\xe \v selectNextState\:FSMHandler} {\xe \v FSMHandler\:selectNextState} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b int(** FSMHandler::selectNextState) (void *data, {\b FSMSignals} *signals)}} \par {\bkmkstart AAAAAAAADF} {\bkmkend AAAAAAAADF} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E6\'AF\'8F\'E4\'B8\'AA\'E7\'8A\'B6\'E6\'80\'81\'E9\'85\'8D\'E7\'BD\'AE\'E7\'9A\'84\'E7\'8A\'B6\'E6\'80\'81\'E9\'80\'89\'E6\'8B\'A9\'E5\'87\'BD\'E6\'95\'B0 \par }} {\xe \v transitionTable\:FSMHandler} {\xe \v FSMHandler\:transitionTable} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void(** FSMHandler::transitionTable) (void *data)}} \par {\bkmkstart AAAAAAAADG} {\bkmkend AAAAAAAADG} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E8\'BD\'AC\'E7\'A7\'BB\'E5\'87\'BD\'E6\'95\'B0\'E8\'A1\'A8 \par }} {\xe \v transitionGeneralAction\:FSMHandler} {\xe \v FSMHandler\:transitionGeneralAction} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void(* FSMHandler::transitionGeneralAction) (void *data)}} \par {\bkmkstart AAAAAAAADH} {\bkmkend AAAAAAAADH} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E9\'80\'9A\'E7\'94\'A8\'E7\'8A\'B6\'E6\'80\'81\'E8\'BD\'AC\'E7\'A7\'BB\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E4\'B8\'8D\'E8\'AE\'BA\'E6\'9C\'89\'E6\'B2\'A1\'E6\'9C\'89\'E7\'8B\'AC\'E7\'AB\'8B\'E7\'9A\'84\'E7\'8A\'B6\'E6\'80\'81\'E8\'BD\'AC\'E7\'A7\'BB\'E5\'87\'BD\'E6\'95\'B0\'E9\'83\'BD\'E4\'BC\'9A\'E6\'89\'A7\'E8\'A1\'8C \par }} {\xe \v enterActionTable\:FSMHandler} {\xe \v FSMHandler\:enterActionTable} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void(** FSMHandler::enterActionTable) (void *data, FSM **cFSM)}} \par {\bkmkstart AAAAAAAADI} {\bkmkend AAAAAAAADI} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'BF\'9B\'E5\'85\'A5\'E7\'8A\'B6\'E6\'80\'81\'E6\'97\'B6\'E8\'BF\'90\'E8\'A1\'8C\'E7\'9A\'84\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'92\'8Cplecs\'E5\'AF\'B9\'E6\'A0\'87 \par }} {\xe \v duringActionTable\:FSMHandler} {\xe \v FSMHandler\:duringActionTable} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void(** FSMHandler::duringActionTable) (void *data, FSM **cFSM)}} \par {\bkmkstart AAAAAAAADJ} {\bkmkend AAAAAAAADJ} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E4\'B8\'8D\'E5\'8F\'98\'E6\'97\'B6\'E8\'BF\'90\'E8\'A1\'8C\'E7\'9A\'84\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'92\'8Cplecs\'E5\'AF\'B9\'E6\'A0\'87 \par }} {\xe \v exitActionTable\:FSMHandler} {\xe \v FSMHandler\:exitActionTable} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void(** FSMHandler::exitActionTable) (void *data, FSM **cFSM)}} \par {\bkmkstart AAAAAAAADK} {\bkmkend AAAAAAAADK} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E9\'80\'80\'E5\'87\'BA\'E6\'97\'B6\'E8\'BF\'90\'E8\'A1\'8C\'E7\'9A\'84\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'92\'8Cplecs\'E5\'AF\'B9\'E6\'A0\'87 \par }} {\xe \v childFSMStepTable\:FSMHandler} {\xe \v FSMHandler\:childFSMStepTable} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void(** FSMHandler::childFSMStepTable) (FSM **cFSM)}} \par {\bkmkstart AAAAAAAADL} {\bkmkend AAAAAAAADL} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'AD\'90\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'9A\'82\'E6\'97\'B6\'E5\'BC\'83\'E7\'94\'A8 \par } }} \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSMPrivateVars Struct Reference\par \pard\plain {\tc\tcl2 \v FSMPrivateVars} {\xe \v FSMPrivateVars} {\bkmkstart AAAAAAAADM} {\bkmkend AAAAAAAADM} \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'9F\'BA\'E7\'B1\'BB\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'9A\'84\'E7\'A7\'81\'E6\'9C\'89\'E5\'8F\'98\'E9\'87\'8F\'E5\'92\'8C\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'AD\'90\'E7\'B1\'BB\'E4\'B8\'8D\'E5\'8F\'AF\'E7\'9B\'B4\'E6\'8E\'A5\'E8\'AE\'BF\'E9\'97\'AE }}\par { {\f2 #include }}\par \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Data Fields\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid int {\b numState}\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid int {\b defaultState}\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid int {\b curState}\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid int {\b nextState}\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid int {\b index}\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid {\b FSMHandler} {\b fcns}\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid int {\b numChild}\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid FSM ** {\b childFSM}\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid {\b FSMDataLoader} {\b preloader}\par } {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Detailed Description\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'9F\'BA\'E7\'B1\'BB\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'9A\'84\'E7\'A7\'81\'E6\'9C\'89\'E5\'8F\'98\'E9\'87\'8F\'E5\'92\'8C\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'AD\'90\'E7\'B1\'BB\'E4\'B8\'8D\'E5\'8F\'AF\'E7\'9B\'B4\'E6\'8E\'A5\'E8\'AE\'BF\'E9\'97\'AE \par }} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Field Documentation\par \pard\plain {\xe \v numState\:FSMPrivateVars} {\xe \v FSMPrivateVars\:numState} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b int FSMPrivateVars::numState}} \par {\bkmkstart AAAAAAAADN} {\bkmkend AAAAAAAADN} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'95\'B0\'E9\'87\'8F \par }} {\xe \v defaultState\:FSMPrivateVars} {\xe \v FSMPrivateVars\:defaultState} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b int FSMPrivateVars::defaultState}} \par {\bkmkstart AAAAAAAADO} {\bkmkend AAAAAAAADO} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid Idle\'E7\'8A\'B6\'E6\'80\'81\'E4\'B8\'8D\'E8\'83\'BD\'E5\'81\'9C\'E7\'95\'99\'EF\'BC\'8C\'E5\'BF\'85\'E9\'A1\'BB\'E6\'8C\'87\'E5\'AE\'9A\'E4\'B8\'80\'E4\'B8\'AA\'E5\'88\'9D\'E5\'A7\'8B\'E7\'8A\'B6\'E6\'80\'81 \par }} {\xe \v curState\:FSMPrivateVars} {\xe \v FSMPrivateVars\:curState} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b int FSMPrivateVars::curState}} \par {\bkmkstart AAAAAAAADP} {\bkmkend AAAAAAAADP} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'BD\'93\'E5\'89\'8D\'E7\'8A\'B6\'E6\'80\'81 \par }} {\xe \v nextState\:FSMPrivateVars} {\xe \v FSMPrivateVars\:nextState} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b int FSMPrivateVars::nextState}} \par {\bkmkstart AAAAAAAADQ} {\bkmkend AAAAAAAADQ} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid nextState\'E4\'B8\'BAIdle\'E4\'BB\'A3\'E8\'A1\'A8\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E4\'B8\'8D\'E5\'8F\'91\'E7\'94\'9F\'E5\'8F\'98\'E5\'8C\'96 \par }} {\xe \v index\:FSMPrivateVars} {\xe \v FSMPrivateVars\:index} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b int FSMPrivateVars::index}} \par {\bkmkstart AAAAAAAADR} {\bkmkend AAAAAAAADR} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E8\'BD\'AC\'E7\'A7\'BB\'E5\'87\'BD\'E6\'95\'B0\'E8\'A1\'A8\'E5\'AF\'B9\'E5\'BA\'94\'E7\'9A\'84\'E6\'A0\'87\'E5\'8F\'B7 \par }} {\xe \v fcns\:FSMPrivateVars} {\xe \v FSMPrivateVars\:fcns} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b {\b FSMHandler} FSMPrivateVars::fcns}} \par {\bkmkstart AAAAAAAADS} {\bkmkend AAAAAAAADS} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E5\'87\'BD\'E6\'95\'B0\'E8\'A1\'A8 \par }} {\xe \v numChild\:FSMPrivateVars} {\xe \v FSMPrivateVars\:numChild} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b int FSMPrivateVars::numChild}} \par {\bkmkstart AAAAAAAADT} {\bkmkend AAAAAAAADT} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'92\'8C\'E5\'AD\'90\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'9B\'B8\'E5\'85\'B3\'E7\'9A\'84\'E6\'9A\'82\'E6\'97\'B6\'E5\'BC\'83\'E7\'94\'A8 \par } }} {\xe \v childFSM\:FSMPrivateVars} {\xe \v FSMPrivateVars\:childFSM} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b FSM** FSMPrivateVars::childFSM}} \par {\bkmkstart AAAAAAAADU} {\bkmkend AAAAAAAADU} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'92\'8C\'E5\'AD\'90\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'9B\'B8\'E5\'85\'B3\'E7\'9A\'84\'E6\'9A\'82\'E6\'97\'B6\'E5\'BC\'83\'E7\'94\'A8 \par } }} {\xe \v preloader\:FSMPrivateVars} {\xe \v FSMPrivateVars\:preloader} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b {\b FSMDataLoader} FSMPrivateVars::preloader}} \par {\bkmkstart AAAAAAAADV} {\bkmkend AAAAAAAADV} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'BC\'83\'E7\'94\'A8 \par } }} \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSMPureVtbl Struct Reference\par \pard\plain {\tc\tcl2 \v FSMPureVtbl} {\xe \v FSMPureVtbl} {\bkmkstart AAAAAAAADW} {\bkmkend AAAAAAAADW} \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'BA\'AF\'E8\'99\'9A\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'AD\'90\'E7\'B1\'BB\'E5\'BF\'85\'E9\'A1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'AE\'9E\'E7\'8E\'B0\'EF\'BC\'8C\'E7\'88\'B6\'E7\'B1\'BB\'E6\'9E\'84\'E9\'80\'A0\'E5\'87\'BD\'E6\'95\'B0\'E4\'B8\'8D\'E4\'BC\'9A\'E5\'88\'9D\'E5\'A7\'8B\'E5\'8C\'96 }}\par { {\f2 #include }}\par \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Data Fields\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void(* {\b setupHandler} )({\b FSMHandler} *fcns)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void(* {\b initData} )(FSM *pFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void(* {\b loadExternalData} )(void *extData)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void(* {\b initDataLoader} )(FSM *pFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void(* {\b initSignals} )(FSM *pFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void(* {\b resetSignals} )({\b FSMSignals} *signals, void *data)\par } {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Detailed Description\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'BA\'AF\'E8\'99\'9A\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'AD\'90\'E7\'B1\'BB\'E5\'BF\'85\'E9\'A1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'AE\'9E\'E7\'8E\'B0\'EF\'BC\'8C\'E7\'88\'B6\'E7\'B1\'BB\'E6\'9E\'84\'E9\'80\'A0\'E5\'87\'BD\'E6\'95\'B0\'E4\'B8\'8D\'E4\'BC\'9A\'E5\'88\'9D\'E5\'A7\'8B\'E5\'8C\'96 \par }} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Field Documentation\par \pard\plain {\xe \v setupHandler\:FSMPureVtbl} {\xe \v FSMPureVtbl\:setupHandler} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void(* FSMPureVtbl::setupHandler) ({\b FSMHandler} *fcns)}} \par {\bkmkstart AAAAAAAADX} {\bkmkend AAAAAAAADX} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'AE\'BE\'E7\'BD\'AE\'E6\'89\'80\'E6\'9C\'89\'E7\'9A\'84FSMHandler\'EF\'BC\'8C\'E5\'BF\'85\'E9\'A1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'AE\'9E\'E7\'8E\'B0 \par }} {\xe \v initData\:FSMPureVtbl} {\xe \v FSMPureVtbl\:initData} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void(* FSMPureVtbl::initData) (FSM *pFSM)}} \par {\bkmkstart AAAAAAAADY} {\bkmkend AAAAAAAADY} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'88\'9D\'E5\'A7\'8B\'E5\'8C\'96\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'94\'A8\'E6\'95\'B0\'E6\'8D\'AE\'EF\'BC\'8C\'E5\'8C\'85\'E6\'8B\'AC\'E5\'86\'85\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE\'E5\'92\'8C\'E5\'A4\'96\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE \par }} {\xe \v loadExternalData\:FSMPureVtbl} {\xe \v FSMPureVtbl\:loadExternalData} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void(* FSMPureVtbl::loadExternalData) (void *extData)}} \par {\bkmkstart AAAAAAAADZ} {\bkmkend AAAAAAAADZ} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E6\'9A\'82\'E6\'97\'B6\'E6\'B2\'A1\'E7\'94\'A8\'EF\'BC\'8C\'E5\'90\'8E\'E7\'BB\'AD\'E5\'8F\'AF\'E8\'83\'BD\'E8\'80\'83\'E8\'99\'91\'E5\'A4\'96\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE\'E6\'98\'AF\'E5\'90\'A6\'E5\'85\'81\'E8\'AE\'B8\'E9\'9A\'8F\'E6\'97\'B6\'E4\'BF\'AE\'E6\'94\'B9 \par } }} {\xe \v initDataLoader\:FSMPureVtbl} {\xe \v FSMPureVtbl\:initDataLoader} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void(* FSMPureVtbl::initDataLoader) (FSM *pFSM)}} \par {\bkmkstart AAAAAAAAEA} {\bkmkend AAAAAAAAEA} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'92\'8C\'E9\'A2\'84\'E8\'A3\'85\'E8\'BD\'BD\'E5\'99\'A8\'E7\'9B\'B8\'E5\'85\'B3 \par } }} {\xe \v initSignals\:FSMPureVtbl} {\xe \v FSMPureVtbl\:initSignals} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void(* FSMPureVtbl::initSignals) (FSM *pFSM)}} \par {\bkmkstart AAAAAAAAEB} {\bkmkend AAAAAAAAEB} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'88\'9D\'E5\'A7\'8B\'E5\'8C\'96\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E4\'BF\'A1\'E5\'8F\'B7 \par }} {\xe \v resetSignals\:FSMPureVtbl} {\xe \v FSMPureVtbl\:resetSignals} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void(* FSMPureVtbl::resetSignals) ({\b FSMSignals} *signals, void *data)}} \par {\bkmkstart AAAAAAAAEC} {\bkmkend AAAAAAAAEC} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E6\'A0\'B9\'E6\'8D\'AE\'E6\'9D\'A1\'E4\'BB\'B6\'E9\'87\'8D\'E7\'BD\'AE\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E4\'BF\'A1\'E5\'8F\'B7 \par }} \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSMSignals Struct Reference\par \pard\plain {\tc\tcl2 \v FSMSignals} {\xe \v FSMSignals} {\bkmkstart AAAAAAAAED} {\bkmkend AAAAAAAAED} \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'94\'A8\'E7\'9A\'84\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8Cprotected\'E5\'AD\'90\'E7\'B1\'BB\'E5\'8F\'AF\'E4\'BB\'A5\'E8\'AE\'BF\'E9\'97\'AE }}\par { {\f2 #include }}\par \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Data Fields\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid Uint16 {\b all}\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid Uint16 {\b lastTriggeredSignal}\par } {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Detailed Description\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'94\'A8\'E7\'9A\'84\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8Cprotected\'E5\'AD\'90\'E7\'B1\'BB\'E5\'8F\'AF\'E4\'BB\'A5\'E8\'AE\'BF\'E9\'97\'AE \par } {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'A4\'96\'E9\'83\'A8\'E5\'8F\'AA\'E8\'83\'BD\'E9\'80\'9A\'E8\'BF\'87SetSignal\'E5\'87\'BD\'E6\'95\'B0\'E5\'AF\'B9\'E4\'BF\'A1\'E5\'8F\'B7\'E8\'BF\'9B\'E8\'A1\'8C\'E8\'AE\'BE\'E7\'BD\'AE\'EF\'BC\'8C\'E5\'9C\'A8\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E8\'BF\'90\'E8\'A1\'8C\'E6\'97\'B6\'E4\'BC\'9A\'E6\'A0\'B9\'E6\'8D\'AE\'E4\'BF\'A1\'E5\'8F\'B7\'E6\'B8\'85\'E9\'99\'A4\'E5\'87\'BD\'E6\'95\'B0\'E6\'B8\'85\'E9\'99\'A4\'E4\'BF\'A1\'E5\'8F\'B7\'E3\'80\'82\'E4\'BF\'A1\'E5\'8F\'B7 \'E5\'88\'A9\'E7\'94\'A8\'E4\'BD\'8D\'E8\'BF\'9B\'E8\'A1\'8C\'E5\'AD\'98\'E5\'82\'A8\'EF\'BC\'8C\'E6\'AF\'8F\'E4\'B8\'AA\'E4\'BD\'8D\'E4\'BB\'A3\'E8\'A1\'A8\'E4\'B8\'80\'E4\'B8\'AA\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8C\'E9\'80\'9A\'E8\'BF\'87\'E7\'A7\'BB\'E4\'BD\'8D\'E6\'93\'8D\'E4\'BD\'9C\'E8\'AE\'BE\'E7\'BD\'AE\'E5\'92\'8C\'E6\'B8\'85\'E9\'99\'A4\'E4\'BF\'A1\'E5\'8F\'B7\'E3\'80\'82 \par }} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Field Documentation\par \pard\plain {\xe \v all\:FSMSignals} {\xe \v FSMSignals\:all} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b Uint16 FSMSignals::all}} \par {\bkmkstart AAAAAAAAEE} {\bkmkend AAAAAAAAEE} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'A4\'96\'E9\'83\'A8\'E4\'BF\'A1\'E5\'8F\'B7 \par }} {\xe \v lastTriggeredSignal\:FSMSignals} {\xe \v FSMSignals\:lastTriggeredSignal} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b Uint16 FSMSignals::lastTriggeredSignal}} \par {\bkmkstart AAAAAAAAEF} {\bkmkend AAAAAAAAEF} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E4\'B8\'8A\'E4\'B8\'80\'E6\'AC\'A1\'E8\'A7\'A6\'E5\'8F\'91\'E7\'9A\'84\'E5\'A4\'96\'E9\'83\'A8\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8C\'E7\'94\'A8\'E4\'BA\'8E\'E4\'BF\'A1\'E5\'8F\'B7\'E6\'B8\'85\'E9\'99\'A4 \par }} \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid TemplateFSMExternalData Struct Reference\par \pard\plain {\tc\tcl2 \v TemplateFSMExternalData} {\xe \v TemplateFSMExternalData} {\bkmkstart AAAAAAAAEG} {\bkmkend AAAAAAAAEG} \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E5\'A4\'96\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE }}\par { {\f2 #include }}\par {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Detailed Description\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E5\'A4\'96\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE \par }} \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid TemplateFSMInnerData Struct Reference\par \pard\plain {\tc\tcl2 \v TemplateFSMInnerData} {\xe \v TemplateFSMInnerData} {\bkmkstart AAAAAAAAEH} {\bkmkend AAAAAAAAEH} \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E5\'86\'85\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE }}\par { {\f2 #include }}\par {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Detailed Description\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E5\'86\'85\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE \par }} \pard\plain \sect\sbkpage \s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid File Documentation{\tc \v File Documentation} \par \pard\plain \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSM_OOP/baseFSM/FSM.c File Reference\par \pard\plain {\tc\tcl2 \v FSM_OOP/baseFSM/FSM.c} {\xe \v FSM_OOP/baseFSM/FSM.c} {\bkmkstart AAAAAAAAAK} {\bkmkend AAAAAAAAAK} { \pard\plain \s18\widctlpar\fs22\cgrid {\f2 #include }\par {\f2 #include }\par {\f2 #include }\par {\f2 #include }\par {\f2 #include "FSM_private.h"}\par {\f2 #include "FSM_protected.h"}\par {\f2 #include "FSM_public.h"}\par } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Functions\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid static void {\b setNextState} (FSM *pFSM)\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'AE\'BE\'E7\'BD\'AE\'E4\'B8\'8B\'E4\'B8\'80\'E4\'B8\'AA\'E7\'8A\'B6\'E6\'80\'81\'EF\'BC\'8C\'E9\'87\'8C\'E9\'9D\'A2\'E7\'9A\'84\'E5\'AD\'90\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'9A\'82\'E6\'97\'B6\'E6\'B2\'A1\'E7\'94\'A8\'E5\'88\'B0 }{ }\par }\par} \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid static void {\b preload} (FSM *pFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void {\b stepBaseFSM} (FSM *pFSM)\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'BF\'90\'E8\'A1\'8C\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'EF\'BC\'8C\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6\'E7\'9A\'84\'E6\'A0\'B8\'E5\'BF\'83\'E5\'87\'BD\'E6\'95\'B0 }{ }\par }\par} \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void * {\b _preloadIn} (FSM *pFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void {\b _preloaderGetReady} (FSM *pFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid int {\b _getPreloaderOverFlag} (FSM *pFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void {\b _clearPreloaderOverFlag} (FSM *pFSM)\par } {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Detailed Description\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Author\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 \'E5\'A4\'A9\'E7\'A5\'9E ({\f2 dalaoshi@stu.xjtu.edu.cn}) \par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Version\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 2.1 \par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Date\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 2024-05-07\par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Copyright\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 \'E5\'A4\'A9\'E7\'A5\'9E\'E5\'88\'9B\'E6\'84\'8F\'E6\'97\'A0\'E9\'99\'90\'E5\'85\'AC\'E5\'8F\'B8 2024 \par }}}} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Function Documentation\par \pard\plain {\xe \v setNextState\:FSM.c} {\xe \v FSM.c\:setNextState} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b static void setNextState (FSM * {\i pFSM}){\f2 [inline]}, {\f2 [static]}}} \par {\bkmkstart AAAAAAAAAL} {\bkmkend AAAAAAAAAL} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'AE\'BE\'E7\'BD\'AE\'E4\'B8\'8B\'E4\'B8\'80\'E4\'B8\'AA\'E7\'8A\'B6\'E6\'80\'81\'EF\'BC\'8C\'E9\'87\'8C\'E9\'9D\'A2\'E7\'9A\'84\'E5\'AD\'90\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'9A\'82\'E6\'97\'B6\'E6\'B2\'A1\'E7\'94\'A8\'E5\'88\'B0 }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\par {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E5\'8F\'98\'E9\'87\'8F\'E7\'9A\'84\'E5\'9F\'BA\'E7\'B1\'BB\'E6\'8C\'87\'E9\'92\'88 \cell } {\row } } }} {\xe \v preload\:FSM.c} {\xe \v FSM.c\:preload} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b static void preload (FSM * {\i pFSM}){\f2 [inline]}, {\f2 [static]}}} \par {\bkmkstart AAAAAAAAAM} {\bkmkend AAAAAAAAAM} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'8E\'BB\'E6\'8E\'89\'E4\'BA\'86\'E6\'89\'80\'E6\'9C\'89\'E5\'92\'8C\'E9\'A2\'84\'E8\'A3\'85\'E8\'BD\'BD\'E5\'99\'A8\'E7\'9B\'B8\'E5\'85\'B3\'E7\'9A\'84\'E5\'86\'85\'E5\'AE\'B9 \par } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\cell } {\row } } }} {\xe \v stepBaseFSM\:FSM.c} {\xe \v FSM.c\:stepBaseFSM} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void stepBaseFSM (FSM * {\i pFSM})}} \par {\bkmkstart AAAAAAAAAN} {\bkmkend AAAAAAAAAN} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'BF\'90\'E8\'A1\'8C\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'EF\'BC\'8C\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6\'E7\'9A\'84\'E6\'A0\'B8\'E5\'BF\'83\'E5\'87\'BD\'E6\'95\'B0 }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'85\'B1\'E5\'88\'86\'E4\'B8\'BA\'E4\'B8\'89\'E9\'83\'A8\'E9\'A6\'96\'E5\'85\'88\'E5\'88\'A4\'E6\'96\'AD\'E6\'98\'AF\'E5\'90\'A6\'E6\'9C\'89\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E5\'88\'87\'E6\'8D\'A2\'EF\'BC\'8C {\par {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E5\'9F\'BA\'E7\'B1\'BB\'E6\'8C\'87\'E9\'92\'88 \cell } {\row } } }} {\xe \v _preloadIn\:FSM.c} {\xe \v FSM.c\:_preloadIn} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void * _preloadIn (FSM * {\i pFSM})}} \par {\bkmkstart AAAAAAAAAO} {\bkmkend AAAAAAAAAO} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'BC\'83\'E7\'94\'A8 \par } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\cell } {\row } } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Returns\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 void* \par }}}} {\xe \v _preloaderGetReady\:FSM.c} {\xe \v FSM.c\:_preloaderGetReady} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void _preloaderGetReady (FSM * {\i pFSM})}} \par {\bkmkstart AAAAAAAAAP} {\bkmkend AAAAAAAAAP} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'BC\'83\'E7\'94\'A8 \par } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\cell } {\row } } }} {\xe \v _getPreloaderOverFlag\:FSM.c} {\xe \v FSM.c\:_getPreloaderOverFlag} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b int _getPreloaderOverFlag (FSM * {\i pFSM})}} \par {\bkmkstart AAAAAAAAAQ} {\bkmkend AAAAAAAAAQ} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'BC\'83\'E7\'94\'A8 \par } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\cell } {\row } } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Returns\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 int \par }}}} {\xe \v _clearPreloaderOverFlag\:FSM.c} {\xe \v FSM.c\:_clearPreloaderOverFlag} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void _clearPreloaderOverFlag (FSM * {\i pFSM})}} \par {\bkmkstart AAAAAAAAAR} {\bkmkend AAAAAAAAAR} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'BC\'83\'E7\'94\'A8 \par } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\cell } {\row } } }} \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSM_OOP/baseFSM/FSM_private.h File Reference\par \pard\plain {\tc\tcl2 \v FSM_OOP/baseFSM/FSM_private.h} {\xe \v FSM_OOP/baseFSM/FSM_private.h} {\bkmkstart AAAAAAAAAS} {\bkmkend AAAAAAAAAS} \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6\'E7\'9A\'84\'E7\'A7\'81\'E6\'9C\'89\'E5\'8F\'98\'E9\'87\'8F\'EF\'BC\'8C\'E5\'8F\'AA\'E8\'83\'BD\'E5\'9C\'A8\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6\'E5\'86\'85\'E4\'BD\'BF\'E7\'94\'A8\'E3\'80\'82 }}\par { \pard\plain \s18\widctlpar\fs22\cgrid {\f2 #include }\par {\f2 #include "FSM_protected.h"}\par } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Data Structures\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid struct {\b FSMDataLoader}\pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid struct {\b FSMPrivateVars}\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'9F\'BA\'E7\'B1\'BB\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'9A\'84\'E7\'A7\'81\'E6\'9C\'89\'E5\'8F\'98\'E9\'87\'8F\'E5\'92\'8C\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'AD\'90\'E7\'B1\'BB\'E4\'B8\'8D\'E5\'8F\'AF\'E7\'9B\'B4\'E6\'8E\'A5\'E8\'AE\'BF\'E9\'97\'AE }}\par} } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Typedefs\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid typedef struct FSMHandler {\b FSMHandler}\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E5\'A4\'84\'E7\'90\'86\'E5\'87\'BD\'E6\'95\'B0\'E9\'9B\'86\'E5\'90\'88\'EF\'BC\'8C\'E5\'85\'A8\'E9\'83\'A8\'E9\'9C\'80\'E8\'A6\'81\'E5\'AD\'90\'E7\'B1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'A1\'AB\'E5\'85\'85\'E5\'86\'85\'E5\'AE\'B9 }{ }\par }\par} \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid typedef struct FSMSignals {\b FSMSignals}\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'94\'A8\'E7\'9A\'84\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8Cprotected\'E5\'AD\'90\'E7\'B1\'BB\'E5\'8F\'AF\'E4\'BB\'A5\'E8\'AE\'BF\'E9\'97\'AE }{ }\par }\par} \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid typedef struct FSMDataLoader {\b FSMDataLoader}\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid typedef struct FSMPrivateVars {\b FSMPrivateVars}{\bkmkstart AAAAAAAAAT} {\bkmkend AAAAAAAAAT} \par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'9F\'BA\'E7\'B1\'BB\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'9A\'84\'E7\'A7\'81\'E6\'9C\'89\'E5\'8F\'98\'E9\'87\'8F\'E5\'92\'8C\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'AD\'90\'E7\'B1\'BB\'E4\'B8\'8D\'E5\'8F\'AF\'E7\'9B\'B4\'E6\'8E\'A5\'E8\'AE\'BF\'E9\'97\'AE }{ }\par }\par} } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Functions\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid {\b FSMPrivateVars} * {\b newFMSPrivateVars} (int numState, int defaultState)\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E4\'BB\'85\'E5\'9C\'A8FSM.c\'E4\'B8\'AD\'E8\'B0\'83\'E7\'94\'A8\'EF\'BC\'8C\'E6\'96\'B0\'E5\'BB\'BA\'E7\'A7\'81\'E6\'9C\'89\'E5\'8F\'98\'E9\'87\'8F\'E5\'B9\'B6\'E5\'88\'86\'E9\'85\'8D\'E7\'A9\'BA\'E9\'97\'B4 }{ }\par }\par} } {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Detailed Description\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6\'E7\'9A\'84\'E7\'A7\'81\'E6\'9C\'89\'E5\'8F\'98\'E9\'87\'8F\'EF\'BC\'8C\'E5\'8F\'AA\'E8\'83\'BD\'E5\'9C\'A8\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6\'E5\'86\'85\'E4\'BD\'BF\'E7\'94\'A8\'E3\'80\'82 \par }{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Author\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 \'E5\'A4\'A9\'E7\'A5\'9E ({\f2 dalaoshi@stu.xjtu.edu.cn})\par }}\'E5\'9F\'BA\'E7\'B1\'BB\'E7\'A7\'81\'E6\'9C\'89\'E5\'8F\'98\'E9\'87\'8F\'E5\'AF\'B9\'E5\'AD\'90\'E7\'B1\'BB\'E5\'92\'8C\'E5\'A4\'96\'E7\'95\'8C\'E9\'9A\'90\'E8\'97\'8F\'E5\'AE\'9E\'E7\'8E\'B0\'EF\'BC\'8C\'E9\'80\'9A\'E8\'BF\'87\'E6\'8C\'87\'E9\'92\'88\'E8\'BF\'9B\'E8\'A1\'8C\'E8\'AE\'BF\'E9\'97\'AE\'E3\'80\'82 \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Version\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 2.1 \par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Date\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 2024-05-07\par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Copyright\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 \'E5\'A4\'A9\'E7\'A5\'9E\'E5\'88\'9B\'E6\'84\'8F\'E6\'97\'A0\'E9\'99\'90\'E5\'85\'AC\'E5\'8F\'B8 2024 \par }}}} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Typedef Documentation\par \pard\plain {\xe \v FSMHandler\:FSM_private.h} {\xe \v FSM_private.h\:FSMHandler} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b typedef struct FSMHandler FSMHandler}} \par {\bkmkstart AAAAAAAAAU} {\bkmkend AAAAAAAAAU} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E5\'A4\'84\'E7\'90\'86\'E5\'87\'BD\'E6\'95\'B0\'E9\'9B\'86\'E5\'90\'88\'EF\'BC\'8C\'E5\'85\'A8\'E9\'83\'A8\'E9\'9C\'80\'E8\'A6\'81\'E5\'AD\'90\'E7\'B1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'A1\'AB\'E5\'85\'85\'E5\'86\'85\'E5\'AE\'B9 }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'BF\'99\'E4\'B8\'AA\'E7\'BB\'93\'E6\'9E\'84\'E4\'BD\'93\'E6\'98\'AF\'E7\'A7\'81\'E6\'9C\'89\'E5\'8F\'98\'E9\'87\'8F\'EF\'BC\'8C\'E5\'AD\'90\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E5\'92\'8C\'E5\'A4\'96\'E7\'95\'8C\'E9\'83\'BD\'E4\'B8\'8D\'E8\'AF\'A5\'E8\'AE\'BF\'E9\'97\'AE\'E3\'80\'82\'E4\'BD\'86\'E6\'98\'AF\'E5\'86\'99\'E5\'9C\'A8FSM_protect.h\'E6\'96\'87\'E4\'BB\'B6\'EF\'BC\'8C\'E8\'BF\'99\'E6\'A0\'B7\'E6\'96\'B9\'E4\'BE\'BF\'E5\'9C\'A8\'E5\'AD\'90\'E7\'B1\'BB\'E4\'B8\'AD\'E6\'B7\'BB\'E5\'8A\'A0\'E5\'87\'BD\'E6\'95\'B0\'E3\'80\'82\'E4\'B8\'8D\'E7\'84\'B6\'E6\'B7\'BB\'E5\'8A\'A0\'E5\'87\'BD\'E6\'95\'B0\'E5\'BE\'97\'E5\'86\'8D\'E5\'86\'99\'E4\'B8\'AA\'E5\'87\'BD\'E6\'95\'B0\'E6\'B7\'BB\'E5\'8A\'A0\'EF\'BC\'8C \'E6\'9C\'89\'E7\'82\'B9\'E9\'BA\'BB\'E7\'83\'A6 \par }} {\xe \v FSMSignals\:FSM_private.h} {\xe \v FSM_private.h\:FSMSignals} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b typedef struct FSMSignals FSMSignals}} \par {\bkmkstart AAAAAAAAAV} {\bkmkend AAAAAAAAAV} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'94\'A8\'E7\'9A\'84\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8Cprotected\'E5\'AD\'90\'E7\'B1\'BB\'E5\'8F\'AF\'E4\'BB\'A5\'E8\'AE\'BF\'E9\'97\'AE }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'A4\'96\'E9\'83\'A8\'E5\'8F\'AA\'E8\'83\'BD\'E9\'80\'9A\'E8\'BF\'87SetSignal\'E5\'87\'BD\'E6\'95\'B0\'E5\'AF\'B9\'E4\'BF\'A1\'E5\'8F\'B7\'E8\'BF\'9B\'E8\'A1\'8C\'E8\'AE\'BE\'E7\'BD\'AE\'EF\'BC\'8C\'E5\'9C\'A8\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E8\'BF\'90\'E8\'A1\'8C\'E6\'97\'B6\'E4\'BC\'9A\'E6\'A0\'B9\'E6\'8D\'AE\'E4\'BF\'A1\'E5\'8F\'B7\'E6\'B8\'85\'E9\'99\'A4\'E5\'87\'BD\'E6\'95\'B0\'E6\'B8\'85\'E9\'99\'A4\'E4\'BF\'A1\'E5\'8F\'B7\'E3\'80\'82\'E4\'BF\'A1\'E5\'8F\'B7 \'E5\'88\'A9\'E7\'94\'A8\'E4\'BD\'8D\'E8\'BF\'9B\'E8\'A1\'8C\'E5\'AD\'98\'E5\'82\'A8\'EF\'BC\'8C\'E6\'AF\'8F\'E4\'B8\'AA\'E4\'BD\'8D\'E4\'BB\'A3\'E8\'A1\'A8\'E4\'B8\'80\'E4\'B8\'AA\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8C\'E9\'80\'9A\'E8\'BF\'87\'E7\'A7\'BB\'E4\'BD\'8D\'E6\'93\'8D\'E4\'BD\'9C\'E8\'AE\'BE\'E7\'BD\'AE\'E5\'92\'8C\'E6\'B8\'85\'E9\'99\'A4\'E4\'BF\'A1\'E5\'8F\'B7\'E3\'80\'82 \par }} {\xe \v FSMDataLoader\:FSM_private.h} {\xe \v FSM_private.h\:FSMDataLoader} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b typedef struct FSMDataLoader FSMDataLoader}} \par {\bkmkstart AAAAAAAAAW} {\bkmkend AAAAAAAAAW} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E9\'A2\'84\'E8\'A3\'85\'E8\'BD\'BD\'E5\'99\'A8\'E5\'BC\'83\'E7\'94\'A8\par } }} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Function Documentation\par \pard\plain {\xe \v newFMSPrivateVars\:FSM_private.h} {\xe \v FSM_private.h\:newFMSPrivateVars} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b {\b FSMPrivateVars} * newFMSPrivateVars (int {\i numState}, int {\i defaultState})}} \par {\bkmkstart AAAAAAAAAX} {\bkmkend AAAAAAAAAX} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E4\'BB\'85\'E5\'9C\'A8FSM.c\'E4\'B8\'AD\'E8\'B0\'83\'E7\'94\'A8\'EF\'BC\'8C\'E6\'96\'B0\'E5\'BB\'BA\'E7\'A7\'81\'E6\'9C\'89\'E5\'8F\'98\'E9\'87\'8F\'E5\'B9\'B6\'E5\'88\'86\'E9\'85\'8D\'E7\'A9\'BA\'E9\'97\'B4 }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\par {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i numState} \cell }{\cell } {\row } \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i defaultState} \cell }{\cell } {\row } } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Returns\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 FSMPrivateVars* \par }}}} \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSM_private.h\par \pard\plain {\tc\tcl2 \v FSM_OOP/baseFSM/FSM_private.h} {\xe \v FSM_OOP/baseFSM/FSM_private.h} {\bkmkstart AAAAAAAAAA} {\bkmkend AAAAAAAAAA} Go to the documentation of this file.\par { \pard\plain \s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid 1 \par 14 {\cf21 #ifndef __FSM_PRIVATE_H_}\par 15 {\cf21 #define __FSM_PRIVATE_H_}\par 16 \par 17 {\cf21 #include }\par 18 {\cf21 #include "FSM_protected.h"}\par 19 \par 20 {\cf17 typedef} {\cf17 struct }FSMHandler FSMHandler;\par 21 {\cf17 typedef} {\cf17 struct }FSM FSM;\par 22 {\cf17 typedef} {\cf17 struct }FSMSignals FSMSignals;\par 23 \par 24 {\cf20 /* -------------------------------------------------------------------------- */}\par 25 {\cf20 /* private\'E6\'95\'B0\'E6\'8D\'AE\'E7\'B1\'BB\'E5\'9E\'8B */}\par 26 {\cf20 /* -------------------------------------------------------------------------- */}\par 32 {\cf17 typedef} {\cf17 struct }FSMDataLoader\par 33 \{ \par 34 {\cf18 void} *shadowData;\par 35 {\cf18 int} isReady;\par 36 {\cf18 int} isOverflow;\par 37 {\cf18 size_t} size;\par 38 \}FSMDataLoader;\par 39 \par 40 \par 45 {\cf17 typedef} {\cf17 struct }FSMPrivateVars\par 46 \{\par 47 {\cf18 int} numState; \par 48 {\cf18 int} defaultState; \par 50 {\cf18 int} curState; \par 51 {\cf18 int} nextState; \par 52 {\cf18 int} index; \par 54 FSMHandler fcns; \par 56 {\cf18 int} numChild; \par 57 FSM **childFSM; \par 59 FSMDataLoader preloader; \par 61 \}FSMPrivateVars;\par 62 \par 63 \par 64 \par 72 FSMPrivateVars* newFMSPrivateVars({\cf18 int} numState, {\cf18 int} defaultState)\{\par 73 {\cf17 typedef} void (*StateFuncPtr)({\cf18 void} *); \par 74 {\cf17 typedef} void (*ChildFSMStepFuncPtr)(FSM **); \par 75 {\cf17 typedef} int (*TransitionFuncPtr)({\cf18 void} *, {\cf18 int} *);\par 76 {\cf17 typedef} int (*SelectNextStateFcnPtr)({\cf18 void} *, FSMSignals *);\par 77 \par 78 FSMPrivateVars *privateVars = calloc(1, {\cf17 sizeof}(FSMPrivateVars));\par 79 privateVars->numState = numState;\par 80 privateVars->defaultState = defaultState;\par 81 privateVars->curState = 0;\par 82 privateVars->nextState = 0;\par 83 privateVars->numChild = 0;\par 84 \par 85 privateVars->preloader.isReady = 0;\par 86 \par 87 privateVars->fcns.duringActionTable = calloc(numState, {\cf17 sizeof}(StateFuncPtr));\par 88 privateVars->fcns.enterActionTable = calloc(numState, {\cf17 sizeof}(StateFuncPtr));\par 89 privateVars->fcns.exitActionTable = calloc(numState, {\cf17 sizeof}(StateFuncPtr));\par 90 \par 91 privateVars->fcns.selectNextState = calloc(numState, {\cf17 sizeof}(SelectNextStateFcnPtr));\par 92 privateVars->fcns.transitionTable = calloc(numState * numState, {\cf17 sizeof}(TransitionFuncPtr));\par 93 privateVars->fcns.transitionGeneralAction = calloc(1, {\cf17 sizeof}(StateFuncPtr));\par 94 \par 95 privateVars->fcns.childFSMStepTable = calloc(numState * numState, {\cf17 sizeof}(ChildFSMStepFuncPtr));\par 96 \par 97 {\cf19 return} privateVars;\par 98 \}\par 99 \par 100 {\cf21 #endif}\par } \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSM_OOP/baseFSM/FSM_protected.h File Reference\par \pard\plain {\tc\tcl2 \v FSM_OOP/baseFSM/FSM_protected.h} {\xe \v FSM_OOP/baseFSM/FSM_protected.h} {\bkmkstart AAAAAAAAAY} {\bkmkend AAAAAAAAAY} \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6\'E7\'9A\'84protected\'E5\'87\'BD\'E6\'95\'B0\'E5\'92\'8C\'E5\'8F\'98\'E9\'87\'8F\'EF\'BC\'8C\'E5\'9C\'A8\'E7\'BB\'A7\'E6\'89\'BF\'E7\'9A\'84\'E5\'AD\'90\'E7\'B1\'BB\'E4\'B8\'AD\'E5\'8F\'AF\'E4\'BD\'BF\'E7\'94\'A8\'EF\'BC\'8C\'E5\'9C\'A8\'E5\'A4\'96\'E7\'95\'8C\'E4\'B8\'8D\'E5\'8F\'AF\'E4\'BD\'BF\'E7\'94\'A8 }}\par { \pard\plain \s18\widctlpar\fs22\cgrid {\f2 #include "FSM_public.h"}\par } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Data Structures\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid struct {\b FSMHandler}{ \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E5\'A4\'84\'E7\'90\'86\'E5\'87\'BD\'E6\'95\'B0\'E9\'9B\'86\'E5\'90\'88\'EF\'BC\'8C\'E5\'85\'A8\'E9\'83\'A8\'E9\'9C\'80\'E8\'A6\'81\'E5\'AD\'90\'E7\'B1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'A1\'AB\'E5\'85\'85\'E5\'86\'85\'E5\'AE\'B9 }}\par} \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid struct {\b FSMSignals}{ \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'94\'A8\'E7\'9A\'84\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8Cprotected\'E5\'AD\'90\'E7\'B1\'BB\'E5\'8F\'AF\'E4\'BB\'A5\'E8\'AE\'BF\'E9\'97\'AE }}\par} \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid struct {\b FSMPureVtbl}{ \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'BA\'AF\'E8\'99\'9A\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'AD\'90\'E7\'B1\'BB\'E5\'BF\'85\'E9\'A1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'AE\'9E\'E7\'8E\'B0\'EF\'BC\'8C\'E7\'88\'B6\'E7\'B1\'BB\'E6\'9E\'84\'E9\'80\'A0\'E5\'87\'BD\'E6\'95\'B0\'E4\'B8\'8D\'E4\'BC\'9A\'E5\'88\'9D\'E5\'A7\'8B\'E5\'8C\'96 }}\par} } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Macros\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid #define {\b Idle_Signal}\~ 0\par } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Typedefs\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid typedef struct FSMHandler {\b FSMHandler}\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E5\'A4\'84\'E7\'90\'86\'E5\'87\'BD\'E6\'95\'B0\'E9\'9B\'86\'E5\'90\'88\'EF\'BC\'8C\'E5\'85\'A8\'E9\'83\'A8\'E9\'9C\'80\'E8\'A6\'81\'E5\'AD\'90\'E7\'B1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'A1\'AB\'E5\'85\'85\'E5\'86\'85\'E5\'AE\'B9 }{ }\par }\par} \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid typedef struct FSMSignals {\b FSMSignals}\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'94\'A8\'E7\'9A\'84\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8Cprotected\'E5\'AD\'90\'E7\'B1\'BB\'E5\'8F\'AF\'E4\'BB\'A5\'E8\'AE\'BF\'E9\'97\'AE }{ }\par }\par} \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid typedef struct FSMPureVtbl {\b FSMPureVtbl}{\bkmkstart AAAAAAAAAZ} {\bkmkend AAAAAAAAAZ} \par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'BA\'AF\'E8\'99\'9A\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'AD\'90\'E7\'B1\'BB\'E5\'BF\'85\'E9\'A1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'AE\'9E\'E7\'8E\'B0\'EF\'BC\'8C\'E7\'88\'B6\'E7\'B1\'BB\'E6\'9E\'84\'E9\'80\'A0\'E5\'87\'BD\'E6\'95\'B0\'E4\'B8\'8D\'E4\'BC\'9A\'E5\'88\'9D\'E5\'A7\'8B\'E5\'8C\'96 }{ }\par }\par} } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Functions\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void {\b stepBaseFSM} (FSM *pFSM)\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'BF\'90\'E8\'A1\'8C\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'EF\'BC\'8C\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6\'E7\'9A\'84\'E6\'A0\'B8\'E5\'BF\'83\'E5\'87\'BD\'E6\'95\'B0 }{ }\par }\par} } {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Detailed Description\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6\'E7\'9A\'84protected\'E5\'87\'BD\'E6\'95\'B0\'E5\'92\'8C\'E5\'8F\'98\'E9\'87\'8F\'EF\'BC\'8C\'E5\'9C\'A8\'E7\'BB\'A7\'E6\'89\'BF\'E7\'9A\'84\'E5\'AD\'90\'E7\'B1\'BB\'E4\'B8\'AD\'E5\'8F\'AF\'E4\'BD\'BF\'E7\'94\'A8\'EF\'BC\'8C\'E5\'9C\'A8\'E5\'A4\'96\'E7\'95\'8C\'E4\'B8\'8D\'E5\'8F\'AF\'E4\'BD\'BF\'E7\'94\'A8 \par }{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Author\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 \'E5\'A4\'A9\'E7\'A5\'9E ({\f2 dalaoshi@stu.xjtu.edu.cn}) \par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Version\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 2.1 \par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Date\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 2024-05-07\par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Copyright\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 \'E5\'A4\'A9\'E7\'A5\'9E\'E5\'88\'9B\'E6\'84\'8F\'E6\'97\'A0\'E9\'99\'90\'E5\'85\'AC\'E5\'8F\'B8 2024 \par }}}} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Macro Definition Documentation\par \pard\plain {\xe \v Idle_Signal\:FSM_protected.h} {\xe \v FSM_protected.h\:Idle_Signal} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b #define Idle_Signal\~ 0}} \par {\bkmkstart AAAAAAAABA} {\bkmkend AAAAAAAABA} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E6\'B8\'85\'E7\'A9\'BA\'E4\'B8\'8A\'E6\'AC\'A1\'E8\'A7\'A6\'E5\'8F\'91\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8C\'E5\'8D\'A0\'E7\'94\'A8\'E7\'AC\'AC\'E4\'B8\'80\'E4\'B8\'AA\'E4\'BF\'A1\'E5\'8F\'B7\'E4\'BD\'8D \par }} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Typedef Documentation\par \pard\plain {\xe \v FSMHandler\:FSM_protected.h} {\xe \v FSM_protected.h\:FSMHandler} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b typedef struct FSMHandler FSMHandler}} \par {\bkmkstart AAAAAAAABB} {\bkmkend AAAAAAAABB} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E5\'A4\'84\'E7\'90\'86\'E5\'87\'BD\'E6\'95\'B0\'E9\'9B\'86\'E5\'90\'88\'EF\'BC\'8C\'E5\'85\'A8\'E9\'83\'A8\'E9\'9C\'80\'E8\'A6\'81\'E5\'AD\'90\'E7\'B1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'A1\'AB\'E5\'85\'85\'E5\'86\'85\'E5\'AE\'B9 }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'BF\'99\'E4\'B8\'AA\'E7\'BB\'93\'E6\'9E\'84\'E4\'BD\'93\'E6\'98\'AF\'E7\'A7\'81\'E6\'9C\'89\'E5\'8F\'98\'E9\'87\'8F\'EF\'BC\'8C\'E5\'AD\'90\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E5\'92\'8C\'E5\'A4\'96\'E7\'95\'8C\'E9\'83\'BD\'E4\'B8\'8D\'E8\'AF\'A5\'E8\'AE\'BF\'E9\'97\'AE\'E3\'80\'82\'E4\'BD\'86\'E6\'98\'AF\'E5\'86\'99\'E5\'9C\'A8FSM_protect.h\'E6\'96\'87\'E4\'BB\'B6\'EF\'BC\'8C\'E8\'BF\'99\'E6\'A0\'B7\'E6\'96\'B9\'E4\'BE\'BF\'E5\'9C\'A8\'E5\'AD\'90\'E7\'B1\'BB\'E4\'B8\'AD\'E6\'B7\'BB\'E5\'8A\'A0\'E5\'87\'BD\'E6\'95\'B0\'E3\'80\'82\'E4\'B8\'8D\'E7\'84\'B6\'E6\'B7\'BB\'E5\'8A\'A0\'E5\'87\'BD\'E6\'95\'B0\'E5\'BE\'97\'E5\'86\'8D\'E5\'86\'99\'E4\'B8\'AA\'E5\'87\'BD\'E6\'95\'B0\'E6\'B7\'BB\'E5\'8A\'A0\'EF\'BC\'8C \'E6\'9C\'89\'E7\'82\'B9\'E9\'BA\'BB\'E7\'83\'A6 \par }} {\xe \v FSMSignals\:FSM_protected.h} {\xe \v FSM_protected.h\:FSMSignals} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b typedef struct FSMSignals FSMSignals}} \par {\bkmkstart AAAAAAAABC} {\bkmkend AAAAAAAABC} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'94\'A8\'E7\'9A\'84\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8Cprotected\'E5\'AD\'90\'E7\'B1\'BB\'E5\'8F\'AF\'E4\'BB\'A5\'E8\'AE\'BF\'E9\'97\'AE }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'A4\'96\'E9\'83\'A8\'E5\'8F\'AA\'E8\'83\'BD\'E9\'80\'9A\'E8\'BF\'87SetSignal\'E5\'87\'BD\'E6\'95\'B0\'E5\'AF\'B9\'E4\'BF\'A1\'E5\'8F\'B7\'E8\'BF\'9B\'E8\'A1\'8C\'E8\'AE\'BE\'E7\'BD\'AE\'EF\'BC\'8C\'E5\'9C\'A8\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E8\'BF\'90\'E8\'A1\'8C\'E6\'97\'B6\'E4\'BC\'9A\'E6\'A0\'B9\'E6\'8D\'AE\'E4\'BF\'A1\'E5\'8F\'B7\'E6\'B8\'85\'E9\'99\'A4\'E5\'87\'BD\'E6\'95\'B0\'E6\'B8\'85\'E9\'99\'A4\'E4\'BF\'A1\'E5\'8F\'B7\'E3\'80\'82\'E4\'BF\'A1\'E5\'8F\'B7 \'E5\'88\'A9\'E7\'94\'A8\'E4\'BD\'8D\'E8\'BF\'9B\'E8\'A1\'8C\'E5\'AD\'98\'E5\'82\'A8\'EF\'BC\'8C\'E6\'AF\'8F\'E4\'B8\'AA\'E4\'BD\'8D\'E4\'BB\'A3\'E8\'A1\'A8\'E4\'B8\'80\'E4\'B8\'AA\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8C\'E9\'80\'9A\'E8\'BF\'87\'E7\'A7\'BB\'E4\'BD\'8D\'E6\'93\'8D\'E4\'BD\'9C\'E8\'AE\'BE\'E7\'BD\'AE\'E5\'92\'8C\'E6\'B8\'85\'E9\'99\'A4\'E4\'BF\'A1\'E5\'8F\'B7\'E3\'80\'82 \par }} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Function Documentation\par \pard\plain {\xe \v stepBaseFSM\:FSM_protected.h} {\xe \v FSM_protected.h\:stepBaseFSM} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void stepBaseFSM (FSM * {\i pFSM})}} \par {\bkmkstart AAAAAAAABD} {\bkmkend AAAAAAAABD} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'BF\'90\'E8\'A1\'8C\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'EF\'BC\'8C\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'A1\'86\'E6\'9E\'B6\'E7\'9A\'84\'E6\'A0\'B8\'E5\'BF\'83\'E5\'87\'BD\'E6\'95\'B0 }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'85\'B1\'E5\'88\'86\'E4\'B8\'BA\'E4\'B8\'89\'E9\'83\'A8\'E9\'A6\'96\'E5\'85\'88\'E5\'88\'A4\'E6\'96\'AD\'E6\'98\'AF\'E5\'90\'A6\'E6\'9C\'89\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E5\'88\'87\'E6\'8D\'A2\'EF\'BC\'8C {\par {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E5\'9F\'BA\'E7\'B1\'BB\'E6\'8C\'87\'E9\'92\'88 \cell } {\row } } }} \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSM_protected.h\par \pard\plain {\tc\tcl2 \v FSM_OOP/baseFSM/FSM_protected.h} {\xe \v FSM_OOP/baseFSM/FSM_protected.h} {\bkmkstart AAAAAAAAAB} {\bkmkend AAAAAAAAAB} Go to the documentation of this file.\par { \pard\plain \s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid 1 \par 12 {\cf21 #ifndef __FSM_PROTECTED_H_}\par 13 {\cf21 #define __FSM_PROTECTED_H_}\par 14 \par 15 {\cf21 #include "FSM_public.h"}\par 16 \par 17 {\cf20 // #define DSP28377}\par 18 {\cf21 #ifdef DSP28377}\par 19 {\cf21 #define NDEBUG}\par 20 {\cf21 #else}\par 21 {\cf21 #define FSM_LOG_ON}\par 22 {\cf21 #endif}\par 23 \par 24 \par 25 {\cf21 #ifdef FSM_LOG_ON}\par 26 {\cf21 #define FSM_LOG(...) printf(__VA_ARGS__)}\par 27 {\cf21 #else}\par 28 {\cf21 #define FSM_LOG(...) ((void)0)}\par 29 {\cf21 #endif}\par 30 \par 31 {\cf21 #define during during}\par 32 {\cf21 #define enter enter}\par 33 {\cf21 #define exit exit}\par 34 \par 35 {\cf21 #define selectNextStateFcn(curstate) curstate##_##selectNextState}\par 36 {\cf21 #define transitionHandler(curstate, nextstate) curstate##2##nextstate##Handler}\par 37 {\cf21 #define actionFcn(action, curstate) curstate##_##action##Action}\par 38 {\cf21 #define index(curstate, nextstate) (curstate*Count_State + nextstate)}\par 39 \par 40 {\cf21 #define addSelectNextStateFcn(curstate) fcns->selectNextState[curstate] = (Avoid_WARNING_SelectNextState)selectNextStateFcn(curstate)}\par 41 {\cf21 #define addStateActionFcn(type, state) fcns->type##ActionTable[state] = (Avoid_WARNING_State_Fcns)actionFcn(type, state)}\par 42 {\cf21 #define addTransitionHandler(curstate, nextstate) fcns->transitionTable[index(curstate, nextstate)] = (Avoid_WARNING_Transition_Handler)transitionHandler(curstate, nextstate)}\par 43 \par 44 \par 45 \par 46 {\cf17 typedef} {\cf17 struct }FSMHandler FSMHandler;\par 47 {\cf17 typedef} {\cf17 struct }FSM FSM;\par 48 {\cf17 typedef} {\cf17 struct }FSMSignals FSMSignals;\par 49 {\cf17 typedef} {\cf17 struct }FSMPrivateVars FSMPrivateVars;\par 50 \par 51 {\cf17 typedef} void (*Avoid_WARNING_State_Fcns)({\cf18 void} *data, FSM **childFSM);\par 52 {\cf17 typedef} void (*Avoid_WARNING_General_Handlers)({\cf18 void} *data);\par 53 {\cf17 typedef} void (*Avoid_WARNING_Transition_Handler)({\cf18 void} *data);\par 54 {\cf17 typedef} void (*Avoid_WARNING_Overrider_Fcns)(FSM *pFSM);\par 55 {\cf17 typedef} void (*Avoid_WARNING_ResetSignals_Fcns)(FSMSignals* signals, {\cf18 void} *);\par 56 {\cf17 typedef} void (*Avoid_WARNING_loadData_Fcns)({\cf18 void}*);\par 57 {\cf17 typedef} int (*Avoid_WARNING_SelectNextState)({\cf18 void} *data, FSMSignals* signals);\par 58 {\cf17 typedef} void (*Avoid_WARNING_void_fcns)(FSMHandler *fcns);\par 59 \par 60 \par 67 {\cf17 typedef} {\cf17 struct }FSMHandler\{\par 68 int (**selectNextState)({\cf18 void} *data, FSMSignals* signals); \par 70 void (**transitionTable)({\cf18 void} *data); \par 71 void (*transitionGeneralAction)({\cf18 void} *data); \par 73 void (**enterActionTable)({\cf18 void} *data, FSM **cFSM); \par 74 void (**duringActionTable)({\cf18 void} *data, FSM **cFSM); \par 75 void (**exitActionTable)({\cf18 void} *data, FSM **cFSM); \par 77 void (**childFSMStepTable)(FSM **cFSM); \par 78 \}FSMHandler;\par 79 \par 85 {\cf17 typedef} {\cf17 struct }FSMSignals\par 86 \{\par 87 Uint16 all; \par 88 Uint16 lastTriggeredSignal; \par 89 \}FSMSignals;\par 90 {\cf21 #define Idle_Signal 0 }\par 92 {\cf20 /* -------------------------------------------------------------------------- */}\par 93 {\cf20 /* \'E7\'BA\'AF\'E8\'99\'9A\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'AD\'90\'E7\'B1\'BB\'E5\'BF\'85\'E9\'A1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'AE\'9E\'E7\'8E\'B0\'EF\'BC\'8C\'E7\'88\'B6\'E7\'B1\'BB\'E6\'9E\'84\'E9\'80\'A0\'E5\'87\'BD\'E6\'95\'B0\'E4\'B8\'8D\'E4\'BC\'9A\'E5\'88\'9D\'E5\'A7\'8B\'E5\'8C\'96 */}\par 94 {\cf20 /* -------------------------------------------------------------------------- */}\par 95 \par 100 {\cf17 typedef} {\cf17 struct }FSMPureVtbl \{\par 101 {\cf20 // \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'8E\'A7\'E5\'88\'B6}\par 102 void (*setupHandler)(FSMHandler *fcns); \par 104 void (*initData)(FSM *pFSM); \par 105 void (*loadExternalData)({\cf18 void} *extData); \par 107 void (*initDataLoader)(FSM *pFSM); \par 109 void (*initSignals)(FSM *pFSM); \par 110 void (*resetSignals)(FSMSignals *signals, {\cf18 void} *data); \par 111 \}FSMPureVtbl;\par 112 \par 113 \par 114 \par 115 {\cf20 /* -------------------------------------------------------------------------- */}\par 116 {\cf20 /* \'E5\'9F\'BA\'E7\'B1\'BB\'E5\'AE\'9A\'E4\'B9\'89\'EF\'BC\'8C\'E7\'BA\'AF\'E8\'99\'9A\'E7\'B1\'BB */}\par 117 {\cf20 /* -------------------------------------------------------------------------- */}\par 118 {\cf17 typedef} {\cf17 struct }FSM\par 119 \{\par 120 FSMPublicFcns publicFcns;\par 121 {\cf20 // protected}\par 122 FSMPureVtbl pureVtbl;\par 123 \par 124 {\cf18 void} *data;\par 125 FSMSignals signals;\par 126 {\cf20 // private}\par 127 FSMPrivateVars* privateVars; \par 128 \} FSM;\par 129 \par 130 \par 131 {\cf20 /* -------------------------------------------------------------------------- */}\par 132 {\cf20 /* protected\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'AD\'90\'E7\'B1\'BB\'E8\'83\'BD\'E7\'94\'A8\'E5\'A4\'96\'E7\'95\'8C\'E7\'94\'A8\'E4\'B8\'8D\'E4\'BA\'86 */}\par 133 {\cf20 /* -------------------------------------------------------------------------- */}\par 134 {\cf18 void} stepBaseFSM(FSM *pFSM);\par 135 {\cf18 void} constructFSM(FSM* pFSM);\par 136 FSM* newBaseFSM({\cf18 int} numState, {\cf18 int} defaultState);\par 137 {\cf18 void} resetBaseFSM(FSM *pFSM);\par 138 \par 139 \par 140 {\cf20 /* -------------------------------------------------------------------------- */}\par 141 {\cf20 /* \'E5\'86\'85\'E8\'81\'94\'E5\'87\'BD\'E6\'95\'B0 */}\par 142 {\cf20 /* -------------------------------------------------------------------------- */}\par 143 {\cf17 static} {\cf17 inline} {\cf18 void} clearSignal(FSMSignals *signals, Uint16 signalFlag)\{\par 144 signals->all &= ~(1 << signalFlag);\par 145 \}\par 146 {\cf17 static} {\cf17 inline} Uint16 getSignal(FSMSignals *signals, Uint16 signalFlag)\{\par 147 {\cf19 return} (signals->all >> signalFlag) & 1;\par 148 \}\par 149 {\cf17 static} {\cf17 inline} {\cf18 void} clearAllSignals(FSMSignals *signals)\{\par 150 signals->all = 0;\par 151 \}\par 152 \par 153 \par 154 {\cf21 #endif}\par } \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSM_OOP/baseFSM/FSM_public.h File Reference\par \pard\plain {\tc\tcl2 \v FSM_OOP/baseFSM/FSM_public.h} {\xe \v FSM_OOP/baseFSM/FSM_public.h} {\bkmkstart AAAAAAAABE} {\bkmkend AAAAAAAABE} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Macros\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid #define {\b Step}(pFSM)\~ _stepFSM((FSM *)pFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid #define {\b GetData}(pFSM)\~ _getData((FSM*)pFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid #define {\b SetSignal}(pFSM, signal)\~ _setSignal((FSM*)pFSM, signal)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid #define {\b PreloaderGetReady}(pFSM)\~ {\b _preloaderGetReady}((FSM *)pFSM);\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid #define {\b GetPreloaderOverFlag}(pFSM)\~ {\b _getPreloaderOverFlag}((FSM *)pFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid #define {\b ClearPreloaderOverFlag}(pFSM)\~ {\b _clearPreloaderOverFlag}((FSM *)pFSM)\par } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Functions\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void * {\b _preloadIn} (FSM *pFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void {\b _preloaderGetReady} (FSM *pFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid int {\b _getPreloaderOverFlag} (FSM *pFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid void {\b _clearPreloaderOverFlag} (FSM *pFSM)\par } {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Detailed Description\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Author\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 \'E5\'A4\'A9\'E7\'A5\'9E ({\f2 dalaoshi@stu.xjtu.edu.cn}) \par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Version\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 2.1 \par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Date\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 2024-05-07\par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Copyright\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 \'E5\'A4\'A9\'E7\'A5\'9E\'E5\'88\'9B\'E6\'84\'8F\'E6\'97\'A0\'E9\'99\'90\'E5\'85\'AC\'E5\'8F\'B8 2024 \par }}}} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Macro Definition Documentation\par \pard\plain {\xe \v Step\:FSM_public.h} {\xe \v FSM_public.h\:Step} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b #define Step( pFSM)\~ _stepFSM((FSM *)pFSM)}} \par {\bkmkstart AAAAAAAABF} {\bkmkend AAAAAAAABF} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'A4\'96\'E7\'95\'8C\'E8\'B0\'83\'E7\'94\'A8\'E8\'BF\'99\'E4\'B8\'AA \par }} {\xe \v GetData\:FSM_public.h} {\xe \v FSM_public.h\:GetData} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b #define GetData( pFSM)\~ _getData((FSM*)pFSM)}} \par {\bkmkstart AAAAAAAABG} {\bkmkend AAAAAAAABG} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'A4\'96\'E7\'95\'8C\'E8\'B0\'83\'E7\'94\'A8\'E8\'BF\'99\'E4\'B8\'AA \par }} {\xe \v SetSignal\:FSM_public.h} {\xe \v FSM_public.h\:SetSignal} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b #define SetSignal( pFSM, signal)\~ _setSignal((FSM*)pFSM, signal)}} \par {\bkmkstart AAAAAAAABH} {\bkmkend AAAAAAAABH} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'A4\'96\'E7\'95\'8C\'E8\'B0\'83\'E7\'94\'A8\'E8\'BF\'99\'E4\'B8\'AA \par }} {\xe \v PreloaderGetReady\:FSM_public.h} {\xe \v FSM_public.h\:PreloaderGetReady} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b #define PreloaderGetReady( pFSM)\~ {\b _preloaderGetReady}((FSM *)pFSM);}} \par {\bkmkstart AAAAAAAABI} {\bkmkend AAAAAAAABI} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \par } }} {\xe \v GetPreloaderOverFlag\:FSM_public.h} {\xe \v FSM_public.h\:GetPreloaderOverFlag} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b #define GetPreloaderOverFlag( pFSM)\~ {\b _getPreloaderOverFlag}((FSM *)pFSM)}} \par {\bkmkstart AAAAAAAABJ} {\bkmkend AAAAAAAABJ} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \par } }} {\xe \v ClearPreloaderOverFlag\:FSM_public.h} {\xe \v FSM_public.h\:ClearPreloaderOverFlag} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b #define ClearPreloaderOverFlag( pFSM)\~ {\b _clearPreloaderOverFlag}((FSM *)pFSM)}} \par {\bkmkstart AAAAAAAABK} {\bkmkend AAAAAAAABK} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \par } }} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Function Documentation\par \pard\plain {\xe \v _preloadIn\:FSM_public.h} {\xe \v FSM_public.h\:_preloadIn} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void * _preloadIn (FSM * {\i pFSM})}} \par {\bkmkstart AAAAAAAABL} {\bkmkend AAAAAAAABL} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'BC\'83\'E7\'94\'A8 \par } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\cell } {\row } } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Returns\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 void* \par }}}} {\xe \v _preloaderGetReady\:FSM_public.h} {\xe \v FSM_public.h\:_preloaderGetReady} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void _preloaderGetReady (FSM * {\i pFSM})}} \par {\bkmkstart AAAAAAAABM} {\bkmkend AAAAAAAABM} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'BC\'83\'E7\'94\'A8 \par } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\cell } {\row } } }} {\xe \v _getPreloaderOverFlag\:FSM_public.h} {\xe \v FSM_public.h\:_getPreloaderOverFlag} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b int _getPreloaderOverFlag (FSM * {\i pFSM})}} \par {\bkmkstart AAAAAAAABN} {\bkmkend AAAAAAAABN} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'BC\'83\'E7\'94\'A8 \par } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\cell } {\row } } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Returns\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 int \par }}}} {\xe \v _clearPreloaderOverFlag\:FSM_public.h} {\xe \v FSM_public.h\:_clearPreloaderOverFlag} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b void _clearPreloaderOverFlag (FSM * {\i pFSM})}} \par {\bkmkstart AAAAAAAABO} {\bkmkend AAAAAAAABO} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'BC\'83\'E7\'94\'A8 \par } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\cell } {\row } } }} \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSM_public.h\par \pard\plain {\tc\tcl2 \v FSM_OOP/baseFSM/FSM_public.h} {\xe \v FSM_OOP/baseFSM/FSM_public.h} {\bkmkstart AAAAAAAAAC} {\bkmkend AAAAAAAAAC} Go to the documentation of this file.\par { \pard\plain \s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid 1 \par 11 {\cf21 #ifndef __FSM_PUBLIC_H_}\par 12 {\cf21 #define __FSM_PUBLIC_H_}\par 13 \par 14 {\cf17 typedef} {\cf18 unsigned} {\cf18 int} Uint16;\par 15 {\cf17 typedef} {\cf18 unsigned} {\cf18 long} Uint32;\par 16 \par 17 {\cf21 #define BASE_FSM(ptr) ((FSM *)(ptr))}\par 18 {\cf21 #define BASE_PTR (FSM *)}\par 19 \par 20 {\cf17 typedef} {\cf17 struct }FSM FSM;\par 21 \par 22 {\cf17 typedef} {\cf17 struct }FSMPublicFcns\par 23 \{\par 24 void (*step)(FSM *pFSM); {\cf20 // \'E5\'AD\'90\'E7\'B1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'AE\'9E\'E7\'8E\'B0\'E5\'8F\'AF\'E4\'BB\'A5\'E6\'B7\'BB\'E5\'8A\'A0\'E4\'B8\'80\'E4\'BA\'9B\'E6\'89\'93\'E5\'8D\'B0\'E4\'BF\'A1\'E6\'81\'AF}\par 25 void (*reset)(FSM *pFSM); {\cf20 // \'E5\'AD\'90\'E7\'B1\'BB\'E9\'87\'8D\'E6\'96\'B0\'E5\'AE\'9E\'E7\'8E\'B0\'E5\'8F\'AF\'E4\'BB\'A5\'E6\'B7\'BB\'E5\'8A\'A0\'E4\'B8\'80\'E4\'BA\'9B\'E6\'89\'93\'E5\'8D\'B0\'E4\'BF\'A1\'E6\'81\'AF}\par 26 \par 27 \}FSMPublicFcns;\par 28 \par 29 {\cf20 /* -------------------------------- \'E9\'81\'BF\'E5\'85\'8D\'E8\'AD\'A6\'E5\'91\'8A\'E7\'9A\'84\'E5\'87\'BD\'E6\'95\'B0\'E5\'AE\'9A\'E4\'B9\'89 ------------------------------- */}\par 30 {\cf21 #define Step(pFSM) _stepFSM((FSM *)pFSM) }\par 31 {\cf21 #define GetData(pFSM) _getData((FSM*)pFSM) }\par 32 {\cf21 #define SetSignal(pFSM, signal) _setSignal((FSM*)pFSM, signal) }\par 35 {\cf21 #define PreloaderGetReady(pFSM) _preloaderGetReady((FSM *)pFSM); }\par 36 {\cf21 #define GetPreloaderOverFlag(pFSM) _getPreloaderOverFlag((FSM *)pFSM) }\par 37 {\cf21 #define ClearPreloaderOverFlag(pFSM) _clearPreloaderOverFlag((FSM *)pFSM) }\par 40 {\cf18 void} _stepFSM(FSM *pFSM);\par 41 {\cf20 /* --------------------------------- \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E4\'BF\'A1\'E6\'81\'AF\'E8\'8E\'B7\'E5\'8F\'96 -------------------------------- */}\par 42 {\cf18 int} getFSMCurState(FSM *pFSM);\par 43 {\cf18 int} getFSMNextState(FSM *pFSM);\par 44 {\cf18 void} setChildNum(FSM *pFSM, {\cf18 int} num);\par 45 {\cf18 void} registerChildFSM(FSM *parent, FSM *child, {\cf18 int} index);\par 46 \par 47 {\cf20 /* ------------------------------ Data\'E5\'92\'8CSignals ------------------------------ */}\par 48 {\cf17 const} {\cf18 void} *_getData(FSM* pFSM);\par 49 {\cf18 void} _setSignal(FSM *pFSM, Uint16 signalFlag);\par 50 \par 51 {\cf20 /* ---------------------------------- \'E9\'A2\'84\'E8\'A3\'85\'E8\'BD\'BD\'E5\'99\'A8 ---------------------------------- */}\par 52 {\cf18 void} *_preloadIn(FSM *pFSM);\par 53 {\cf18 void} _preloaderGetReady(FSM *pFSM);\par 54 {\cf18 int} _getPreloaderOverFlag(FSM *pFSM);\par 55 {\cf18 void} _clearPreloaderOverFlag(FSM *pFSM);\par 56 \par 57 \par 58 \par 59 {\cf21 #endif}\par } \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid childFSM.h\par \pard\plain {\tc\tcl2 \v FSM_OOP/childtest/childFSM.h} {\xe \v FSM_OOP/childtest/childFSM.h} {\bkmkstart AAAAAAAAAD} {\bkmkend AAAAAAAAAD} { \pard\plain \s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid 1 {\cf21 #ifndef __CHILD_FSM_H_}\par 2 {\cf21 #define __CHILD_FSM_H_}\par 3 \par 4 {\cf21 #define ChildFSM_Input(pFSM) ((ChildFSMData *)_preloadIn((FSM *)pFSM))}\par 5 \par 6 {\cf17 typedef} {\cf17 struct }_childFSMData\par 7 \{\par 8 {\cf18 int} arrindex;\par 9 \}ChildFSMData;\par 10 \par 11 {\cf17 typedef} {\cf17 struct }_ChildFSM ChildFSM;\par 12 \par 13 ChildFSM *createChildFSM();\par 14 \par 15 \par 16 \par 17 {\cf21 #endif}\par } \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid childFSM_private.h\par \pard\plain {\tc\tcl2 \v FSM_OOP/childtest/childFSM_private.h} {\xe \v FSM_OOP/childtest/childFSM_private.h} {\bkmkstart AAAAAAAAAE} {\bkmkend AAAAAAAAAE} { \pard\plain \s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid 1 {\cf21 #ifndef __CHILD_PRIVATE_FSM_H_}\par 2 {\cf21 #define __CHILD_PRIVATE_FSM_H_}\par 3 \par 4 {\cf21 #include "FSM_protected.h"}\par 5 {\cf21 #include "childFSM.h"}\par 6 {\cf21 #include }\par 7 \par 8 \par 9 {\cf20 /* }\par 10 {\cf20 \'E7\'BB\'A7\'E6\'89\'BF\'E5\'9F\'BA\'E7\'B1\'BB}\par 11 {\cf20 */}\par 12 {\cf17 typedef} {\cf17 struct }_ChildFSM\par 13 \{ \par 14 {\cf20 // \'E7\'BB\'A7\'E6\'89\'BF\'E7\'88\'B6\'E7\'B1\'BB}\par 15 FSM base;\par 16 \}ChildFSM;\par 17 \par 18 {\cf20 /* }\par 19 {\cf20 \'E7\'8A\'B6\'E6\'80\'81\'E5\'92\'8C\'E5\'AF\'B9\'E5\'BA\'94\'E7\'9A\'84 action, exit, during \'E5\'87\'BD\'E6\'95\'B0}\par 20 {\cf20 */}\par 21 \par 22 {\cf17 typedef} {\cf17 enum} _State\par 23 \{\par 24 Idle,\par 25 D,\par 26 E,\par 27 \par 28 Count_State,\par 29 \} State;\par 30 {\cf21 #define DEFAULT_STATE E}\par 31 \par 32 {\cf18 void} actionFcn(enter, D)()\par 33 \{\par 34 FSM_LOG({\cf22 " enterD "});\par 35 \}\par 36 {\cf18 void} actionFcn(during, D)()\par 37 \{\par 38 FSM_LOG({\cf22 " duringD "});\par 39 \}\par 40 {\cf18 void} actionFcn(exit, D)()\par 41 \{\par 42 FSM_LOG({\cf22 " exitD "});\par 43 \}\par 44 \par 45 {\cf18 void} actionFcn(enter, E)()\par 46 \{\par 47 FSM_LOG({\cf22 " enterE "});\par 48 \}\par 49 {\cf18 void} actionFcn(during, E)()\par 50 \{\par 51 FSM_LOG({\cf22 " duringE "});\par 52 \}\par 53 {\cf18 void} actionFcn(exit, E)()\par 54 \{\par 55 FSM_LOG({\cf22 " exitE "});\par 56 \}\par 57 \par 58 {\cf20 /* }\par 59 {\cf20 \'E4\'BA\'8B\'E4\'BB\'B6\'E5\'92\'8C\'E5\'AF\'B9\'E5\'BA\'94\'E7\'9A\'84\'E8\'BD\'AC\'E7\'A7\'BB\'E5\'87\'BD\'E6\'95\'B0}\par 60 {\cf20 */}\par 61 \par 62 {\cf17 typedef} {\cf17 enum} _Event\{\par 63 Idle_Event,\par 64 Idle2D,\par 65 Idle2E,\par 66 D2E,\par 67 E2D,\par 68 \par 69 Count_Event,\par 70 \}Event;\par 71 \par 72 \par 73 State transitionHandler(Idle2D)()\par 74 \{\par 75 FSM_LOG({\cf22 " Idle2D "});\par 76 {\cf19 return} D;\par 77 \}\par 78 \par 79 State transitionHandler(Idle2E)()\par 80 \{\par 81 FSM_LOG({\cf22 " Idle2E "});\par 82 {\cf19 return} E;\par 83 \}\par 84 \par 85 State transitionHandler(D2E)()\par 86 \{\par 87 FSM_LOG({\cf22 " D2E "});\par 88 {\cf19 return} E;\par 89 \}\par 90 \par 91 State transitionHandler(E2D)()\par 92 \{\par 93 FSM_LOG({\cf22 " E2D "});\par 94 {\cf19 return} D;\par 95 \}\par 96 \par 97 \par 98 \par 99 \par 100 {\cf20 /* }\par 101 {\cf20 \'E7\'94\'A8\'E6\'88\'B7\'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E4\'BA\'8B\'E4\'BB\'B6\'E9\'80\'89\'E6\'8B\'A9\'E9\'80\'BB\'E8\'BE\'91\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94begin }\par 102 {\cf20 */}\par 103 {\cf17 const} {\cf17 static} {\cf18 char} *stateStr[] = \{\par 104 {\cf22 "Idle"},\par 105 {\cf22 "D"},\par 106 {\cf22 "E"},\par 107 \};\par 108 {\cf17 const} {\cf17 static} {\cf18 char} *eventStr[] = \{\par 109 {\cf22 "Idle"},\par 110 {\cf22 "Idle2D"},\par 111 {\cf22 "Idle2E"},\par 112 {\cf22 "D2E"},\par 113 {\cf22 "E2D"},\par 114 \};\par 115 {\cf17 static} {\cf18 void} printFSM(ChildFSM* pFSM)\{\par 116 FSM_LOG({\cf22 " \\t\\tChildFSM: "});\par 117 FSM_LOG({\cf22 "\'E5\'BD\'93\'E5\'89\'8D\'E7\'8A\'B6\'E6\'80\'81:%s, \'E5\'BD\'93\'E5\'89\'8D\'E4\'BA\'8B\'E4\'BB\'B6:%s, \'E5\'8A\'A8\'E4\'BD\'9C\'EF\'BC\'9A"}, stateStr[getFSMCurState((FSM *)pFSM)], eventStr[getFSMCurEvent((FSM *)pFSM)]);\par 118 \}\par 119 \par 120 \par 121 {\cf21 #endif}\par } \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid parentFSM.h\par \pard\plain {\tc\tcl2 \v FSM_OOP/childtest/parentFSM.h} {\xe \v FSM_OOP/childtest/parentFSM.h} {\bkmkstart AAAAAAAAAF} {\bkmkend AAAAAAAAAF} { \pard\plain \s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid 1 {\cf21 #ifndef __PARENT_FSM_H_}\par 2 {\cf21 #define __PARENT_FSM_H_}\par 3 \par 4 {\cf21 #define ParentFSM_Input(pFSM) ((ParentFSMData *)_preloadIn((FSM *)pFSM))}\par 5 \par 6 {\cf17 typedef} {\cf17 struct }_parentFSMData\par 7 \{\par 8 {\cf18 int} arrindex;\par 9 \}ParentFSMData;\par 10 {\cf17 typedef} {\cf17 struct }_ParentFSM ParentFSM;\par 11 \par 12 ParentFSM *createParentFSM();\par 13 \par 14 \par 15 {\cf21 #endif}\par } \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid keyFSM.h\par \pard\plain {\tc\tcl2 \v FSM_OOP/keytest/keyFSM.h} {\xe \v FSM_OOP/keytest/keyFSM.h} {\bkmkstart AAAAAAAAAG} {\bkmkend AAAAAAAAAG} { \pard\plain \s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid 1 {\cf21 #ifndef __KEY_FSM_H_}\par 2 {\cf21 #define __KEY_FSM_H_}\par 3 \par 4 \par 5 {\cf21 #define KeyFSM_Input(pFSM) (KeyIn *)_preloadIn((FSM *)pFSM)}\par 6 \par 7 {\cf17 typedef} {\cf17 enum} _keyIn\{\par 8 pUp,\par 9 pDown,\par 10 \}KeyIn;\par 11 \par 12 \par 13 {\cf17 typedef} {\cf17 enum} _keyOut\{\par 14 Idle,\par 15 Down,\par 16 Hold,\par 17 Down_2times,\par 18 Down_3times,\par 19 \}KeyOut;\par 20 \par 21 {\cf17 const} {\cf17 static} {\cf18 char} *keyStr[] = \par 22 \{\par 23 {\cf22 "Idle"},\par 24 {\cf22 "Down"},\par 25 {\cf22 "Hold"},\par 26 {\cf22 "Down_2times"},\par 27 {\cf22 "Down_3times"},\par 28 \};\par 29 \par 30 {\cf17 typedef} {\cf17 struct }_keyFSMExternalData\par 31 \{\par 32 KeyIn in;\par 33 \}KeyFSMExternalData;\par 34 \par 35 {\cf17 typedef} {\cf17 struct }_keyFSMInternalData\par 36 \{\par 37 {\cf18 int} countDelay;\par 38 {\cf18 int} countMultiDown;\par 39 KeyOut out;\par 40 \par 41 \}KeyFSMInternalData;\par 42 \par 43 {\cf17 typedef} {\cf17 struct }_keyFSMData\par 44 \{\par 45 KeyFSMExternalData external;\par 46 KeyFSMInternalData internal;\par 47 \}KeyFSMData;\par 48 \par 49 {\cf17 typedef} {\cf17 struct }_KeyFSM KeyFSM;\par 50 \par 51 KeyFSM *createKeyFSM();\par 52 \par 53 \par 54 \par 55 {\cf21 #endif}\par } \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid keyFSM_private.h\par \pard\plain {\tc\tcl2 \v FSM_OOP/keytest/keyFSM_private.h} {\xe \v FSM_OOP/keytest/keyFSM_private.h} {\bkmkstart AAAAAAAAAH} {\bkmkend AAAAAAAAAH} { \pard\plain \s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid 1 {\cf21 #ifndef __KEY_PRIVATE_FSM_H_}\par 2 {\cf21 #define __KEY_PRIVATE_FSM_H_}\par 3 \par 4 {\cf21 #include "FSM_protected.h"}\par 5 {\cf21 #include "keyFSM.h"}\par 6 {\cf21 #include }\par 7 {\cf21 #include }\par 8 \par 9 {\cf17 extern} KeyIn keystat;\par 10 \par 11 \par 12 {\cf20 /* }\par 13 {\cf20 \'E7\'BB\'A7\'E6\'89\'BF\'E5\'9F\'BA\'E7\'B1\'BB}\par 14 {\cf20 */}\par 15 {\cf17 typedef} {\cf17 struct }_KeyFSM\par 16 \{ \par 17 {\cf20 // \'E7\'BB\'A7\'E6\'89\'BF\'E7\'88\'B6\'E7\'B1\'BB}\par 18 FSM base;\par 19 \}KeyFSM;\par 20 \par 21 {\cf20 /* }\par 22 {\cf20 \'E7\'8A\'B6\'E6\'80\'81\'E5\'92\'8C\'E5\'AF\'B9\'E5\'BA\'94\'E7\'9A\'84 action, exit, during \'E5\'87\'BD\'E6\'95\'B0}\par 23 {\cf20 */}\par 24 \par 25 {\cf17 typedef} {\cf17 enum} _State\par 26 \{\par 27 Idle_State,\par 28 Waiting,\par 29 DownDebouncing,\par 30 Downing,\par 31 Holding,\par 32 HoldUpDebouncing,\par 33 UpDebouncing,\par 34 MultiDownWaiting,\par 35 MultiDowning,\par 36 MultiDownDebouncing,\par 37 \par 38 Count_State,\par 39 \} State;\par 40 {\cf21 #define DEFAULT_STATE Waiting}\par 41 \par 42 {\cf20 /* -------------------------------------------------------------------------- */}\par 43 {\cf20 /* \'E4\'B8\'8B\'E4\'B8\'80\'E4\'B8\'AA\'E7\'8A\'B6\'E6\'80\'81\'E9\'80\'89\'E6\'8B\'A9\'E5\'87\'BD\'E6\'95\'B0 */}\par 44 {\cf20 /* -------------------------------------------------------------------------- */}\par 45 {\cf17 static} State selectNextStateFcn(Waiting)(KeyFSMData *data)\{\par 46 \par 47 {\cf19 if}(data->external.in == Down)\{\par 48 FSM_LOG({\cf22 " \'E7\'89\'A9\'E7\'90\'86\'E6\'8C\'89\'E9\'94\'AE\'E6\'8C\'89\'E4\'B8\'8B "});\par 49 {\cf19 return} DownDebouncing;\par 50 \}\par 51 {\cf19 return} Idle_State;\par 52 \}\par 53 \par 54 {\cf17 static} State selectNextStateFcn(DownDebouncing)(KeyFSMData *data)\{\par 55 {\cf19 if}(data->external.in == pUp)\{\par 56 FSM_LOG({\cf22 " \'E7\'89\'A9\'E7\'90\'86\'E6\'8C\'89\'E9\'94\'AE\'E6\'9D\'BE\'E5\'BC\'80 "});\par 57 {\cf19 return} Waiting;\par 58 \}\par 59 \par 60 {\cf19 else} {\cf19 if}(data->internal.countDelay == 5)\{\par 61 {\cf19 return} Downing;\par 62 \}\par 63 {\cf19 return} Idle_State;\par 64 \}\par 65 \par 66 {\cf17 static} State selectNextStateFcn(Downing)(KeyFSMData *data)\{\par 67 {\cf19 if}(data->external.in == pUp)\{\par 68 FSM_LOG({\cf22 " \'E7\'89\'A9\'E7\'90\'86\'E6\'8C\'89\'E9\'94\'AE\'E6\'9D\'BE\'E5\'BC\'80 "});\par 69 {\cf19 return} UpDebouncing;\par 70 \}\par 71 {\cf19 else} {\cf19 if}(data->internal.countDelay == 10)\{\par 72 {\cf19 return} Holding;\par 73 \}\par 74 {\cf19 return} Idle_State;\par 75 \}\par 76 \par 77 {\cf17 static} State selectNextStateFcn(Holding)(KeyFSMData *data)\{\par 78 {\cf19 if}(data->external.in == pUp)\{\par 79 FSM_LOG({\cf22 " \'E7\'89\'A9\'E7\'90\'86\'E6\'8C\'89\'E9\'94\'AE\'E6\'9D\'BE\'E5\'BC\'80 "});\par 80 {\cf19 return} HoldUpDebouncing;\par 81 \}\par 82 {\cf19 return} Idle_State;\par 83 \}\par 84 \par 85 {\cf17 static} State selectNextStateFcn(HoldUpDebouncing)(KeyFSMData *data)\{\par 86 {\cf19 if}(data->external.in == Down)\{\par 87 FSM_LOG({\cf22 " \'E7\'89\'A9\'E7\'90\'86\'E6\'8C\'89\'E9\'94\'AE\'E6\'8C\'89\'E4\'B8\'8B "});\par 88 {\cf19 return} Holding;\par 89 \}\par 90 {\cf19 else} {\cf19 if}(data->internal.countDelay == 5)\{\par 91 {\cf19 return} Waiting;\par 92 \}\par 93 {\cf19 return} Idle_State;\par 94 \}\par 95 \par 96 {\cf17 static} State selectNextStateFcn(UpDebouncing)(KeyFSMData *data)\{\par 97 {\cf19 if}(data->external.in == Down)\{\par 98 FSM_LOG({\cf22 " \'E7\'89\'A9\'E7\'90\'86\'E6\'8C\'89\'E9\'94\'AE\'E6\'8C\'89\'E4\'B8\'8B "});\par 99 {\cf19 if}(data->internal.countMultiDown)\{\par 100 {\cf19 return} MultiDowning;\par 101 \}\par 102 {\cf19 else}\{\par 103 {\cf19 return} Downing;\par 104 \}\par 105 \}\par 106 {\cf19 else} {\cf19 if}(data->internal.countDelay == 5)\{\par 107 {\cf19 return} MultiDownWaiting;\par 108 \}\par 109 \par 110 {\cf19 return} Idle_State;\par 111 \}\par 112 \par 113 {\cf17 static} State selectNextStateFcn(MultiDownWaiting)(KeyFSMData *data)\{\par 114 {\cf19 if}(data->external.in == Down)\{\par 115 FSM_LOG({\cf22 " \'E7\'89\'A9\'E7\'90\'86\'E6\'8C\'89\'E9\'94\'AE\'E6\'8C\'89\'E4\'B8\'8B "});\par 116 {\cf19 return} MultiDownDebouncing;\par 117 \}\par 118 {\cf19 else} {\cf19 if}(data->internal.countDelay == 5)\{\par 119 {\cf19 return} Waiting;\par 120 \}\par 121 {\cf19 return} Idle_State;\par 122 \}\par 123 \par 124 {\cf17 static} State selectNextStateFcn(MultiDowning)(KeyFSMData *data)\{\par 125 {\cf19 if}(data->external.in == pUp)\{\par 126 FSM_LOG({\cf22 " \'E7\'89\'A9\'E7\'90\'86\'E6\'8C\'89\'E9\'94\'AE\'E6\'9D\'BE\'E5\'BC\'80 "});\par 127 {\cf19 return} UpDebouncing;\par 128 \}\par 129 {\cf19 return} Idle_State;\par 130 \}\par 131 \par 132 {\cf17 static} State selectNextStateFcn(MultiDownDebouncing)(KeyFSMData *data)\{\par 133 {\cf19 if}(data->external.in == pUp)\{\par 134 FSM_LOG({\cf22 " \'E7\'89\'A9\'E7\'90\'86\'E6\'8C\'89\'E9\'94\'AE\'E6\'9D\'BE\'E5\'BC\'80 "});\par 135 {\cf19 return} MultiDownWaiting;\par 136 \}\par 137 {\cf19 else} {\cf19 if}(data->internal.countDelay == 5)\{\par 138 {\cf19 return} MultiDowning;\par 139 \}\par 140 {\cf19 return} Idle_State;\par 141 \}\par 142 \par 143 {\cf20 /* -------------------------------------------------------------------------- */}\par 144 {\cf20 /* \'E5\'AF\'B9\'E5\'BA\'94\'E7\'9A\'84 action, exit, during \'E5\'87\'BD\'E6\'95\'B0 */}\par 145 {\cf20 /* -------------------------------------------------------------------------- */}\par 146 {\cf17 static} {\cf18 void} actionFcn(enter, Waiting)(KeyFSMData* data)\{\par 147 data->internal.out = Idle;\par 148 data->internal.countDelay = 0;\par 149 data->internal.countMultiDown = 0;\par 150 \}\par 151 \par 152 \par 153 {\cf17 static} {\cf18 void} actionFcn(during, DownDebouncing)(KeyFSMData* data)\par 154 \{\par 155 data->internal.countDelay++;\par 156 FSM_LOG({\cf22 " during\'E5\'BC\'80\'E5\'90\'AF\'E6\'B6\'88\'E6\'8A\'96 "});\par 157 \}\par 158 \par 159 {\cf17 static} {\cf18 void} actionFcn(during, Downing)(KeyFSMData* data)\par 160 \{\par 161 \par 162 data->internal.countDelay++;\par 163 data->internal.out = Idle;\par 164 \}\par 165 \par 166 \par 167 \par 168 {\cf17 static} {\cf18 void} actionFcn(during, UpDebouncing)(KeyFSMData* data)\{\par 169 \par 170 data->internal.countDelay++;\par 171 FSM_LOG({\cf22 " during\'E6\'9D\'BE\'E5\'BC\'80\'E6\'B6\'88\'E6\'8A\'96 "});\par 172 \}\par 173 \par 174 \par 175 {\cf17 static} {\cf18 void} actionFcn(during, Holding)(KeyFSMData* data)\{\par 176 data->internal.out = Idle;\par 177 data->internal.countDelay++;\par 178 {\cf19 if}(data->internal.countDelay == 2)\{\par 179 data->internal.out = Hold;\par 180 data->internal.countDelay = 0;\par 181 \}\par 182 \}\par 183 \par 184 {\cf17 static} {\cf18 void} actionFcn(exit, Holding)(KeyFSMData* data)\{\par 185 data->internal.out = Idle;\par 186 \}\par 187 \par 188 \par 189 \par 190 {\cf17 static} {\cf18 void} actionFcn(during, MultiDownWaiting)(KeyFSMData* data)\{\par 191 data->internal.countDelay++;\par 192 FSM_LOG({\cf22 " during\'E5\'A4\'9A\'E5\'87\'BB\'E7\'AD\'89\'E5\'BE\'85 "});\par 193 \}\par 194 \par 195 \par 196 \par 197 {\cf17 static} {\cf18 void} actionFcn(during, HoldUpDebouncing)(KeyFSMData* data)\par 198 \{\par 199 data->internal.countDelay++;\par 200 \}\par 201 \par 202 \par 203 {\cf17 static} {\cf18 void} actionFcn(during, MultiDownDebouncing)(KeyFSMData* data)\par 204 \{\par 205 data->internal.countDelay++;\par 206 \}\par 207 \par 208 \par 209 {\cf20 /* -------------------------------------------------------------------------- */}\par 210 {\cf20 /* \'E8\'BD\'AC\'E7\'A7\'BB\'E5\'87\'BD\'E6\'95\'B0 */}\par 211 {\cf20 /* -------------------------------------------------------------------------- */}\par 212 {\cf18 void} transitionGeneralAction(KeyFSMData *data)\{\par 213 data->internal.countDelay = 0;\par 214 \}\par 215 \par 216 {\cf17 static} State transitionHandler(DownDebouncing, Downing)(KeyFSMData* data)\{\par 217 data->internal.out = Down;\par 218 \}\par 219 \par 220 \par 221 {\cf17 static} State transitionHandler(UpDebouncing, MultiDownWaiting)(KeyFSMData* data)\{\par 222 data->internal.out = Idle;\par 223 data->internal.countMultiDown++;\par 224 \}\par 225 \par 226 {\cf17 static} State transitionHandler(MultiDownDebouncing, MultiDowning)(KeyFSMData* data)\{\par 227 {\cf19 switch} (data->internal.countMultiDown + 1)\par 228 \{\par 229 {\cf19 case} 2:\par 230 data->internal.out = Down_2times;\par 231 {\cf19 break};\par 232 {\cf19 case} 3:\par 233 data->internal.out = Down_3times;\par 234 {\cf19 break};\par 235 \par 236 {\cf19 default}:\par 237 printf({\cf22 "reach MultiDown Limit!\\n"});\par 238 {\cf19 break};\par 239 \}\par 240 FSM_LOG({\cf22 " \'E5\'A4\'9A\'E5\'87\'BB%d "}, data->internal.countMultiDown+1);\par 241 \}\par 242 \par 243 \par 244 {\cf17 static} State transitionHandler(Downing, Holding)(KeyFSMData* data)\{\par 245 data->internal.out = Hold;\par 246 \}\par 247 \par 248 {\cf17 static} State transitionHandler(MultiDownWaiting, Waiting)(KeyFSMData* data)\{\par 249 data->internal.countMultiDown = 0;\par 250 \}\par 251 \par 252 \par 253 \par 254 {\cf20 /* }\par 255 {\cf20 \'E7\'94\'A8\'E6\'88\'B7\'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E4\'BA\'8B\'E4\'BB\'B6\'E9\'80\'89\'E6\'8B\'A9\'E9\'80\'BB\'E8\'BE\'91\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94\'E2\'80\'94begin }\par 256 {\cf20 */}\par 257 {\cf17 const} {\cf17 static} {\cf18 char} *stateStr[] = \{\par 258 {\cf22 "Idle"},\par 259 {\cf22 "Waiting"},\par 260 {\cf22 "DownDebouncing"},\par 261 {\cf22 "Downing"},\par 262 {\cf22 "Holding"},\par 263 {\cf22 "HoldUpDebouncing"},\par 264 {\cf22 "UpDebouncing"},\par 265 {\cf22 "MultiDownWaiting"},\par 266 {\cf22 "MultiDowning"},\par 267 {\cf22 "MultiDownDebouncing"},\par 268 \};\par 269 \par 270 {\cf17 static} {\cf18 void} printFSM(KeyFSM* pFSM)\{\par 271 KeyFSMData* data = pFSM->base.data;\par 272 FSM_LOG({\cf22 "KeyFSM: "});\par 273 FSM_LOG({\cf22 "%d, \'E5\'BD\'93\'E5\'89\'8D\'E7\'8A\'B6\'E6\'80\'81:%s, \\t\'E4\'B8\'8A\'E4\'B8\'80\'E4\'B8\'AA\'E4\'B8\'8B\'E6\'AC\'A1\'E4\'BA\'8B\'E4\'BB\'B6:%s \\t\'E8\'BD\'AC\'E7\'A7\'BB\'EF\'BC\'9A"}, data->internal.countDelay, stateStr[getFSMCurState((FSM *)pFSM)], stateStr[getFSMNextState((FSM *)pFSM)]);\par 274 \}\par 275 \par 276 \par 277 {\cf21 #endif}\par } \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSM_OOP/template/templateFSM.c File Reference\par \pard\plain {\tc\tcl2 \v FSM_OOP/template/templateFSM.c} {\xe \v FSM_OOP/template/templateFSM.c} {\bkmkstart AAAAAAAABP} {\bkmkend AAAAAAAABP} \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E9\'87\'8D\'E6\'96\'B0\'E5\'AE\'9E\'E7\'8E\'B0\'E5\'87\'A0\'E4\'B8\'AA\'E5\'BF\'85\'E9\'A1\'BB\'E5\'AE\'9E\'E7\'8E\'B0\'E7\'9A\'84\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'B9\'B6\'E8\'B5\'8B\'E5\'80\'BC\'E5\'88\'B0\'E7\'88\'B6\'E7\'B1\'BB\'E6\'8C\'87\'E9\'92\'88\'E9\'87\'8C }}\par { \pard\plain \s18\widctlpar\fs22\cgrid {\f2 #include }\par {\f2 #include }\par {\f2 #include }\par {\f2 #include "FSM_protected.h"}\par {\f2 #include "templateFSM.h"}\par {\f2 #include "templateFSM_private.h"}\par } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Functions\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid static void {\b loadExternalData} (TemplateFSMData *data)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid static void {\b resetSignals} ({\b FSMSignals} *signals, TemplateFSMData *data)\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E6\'A0\'B9\'E6\'8D\'AE\'E6\'9D\'A1\'E4\'BB\'B6\'E9\'87\'8D\'E7\'BD\'AE\'E4\'BF\'A1\'E5\'8F\'B7 }{ }\par }\par} \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid static void {\b initData} (TemplateFSM *pFSM)\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'BB\'99\'E6\'89\'80\'E6\'9C\'89\'E5\'86\'85\'E9\'83\'A8\'E3\'80\'81\'E5\'A4\'96\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE\'E5\'88\'86\'E9\'85\'8D\'E5\'A0\'86\'E7\'A9\'BA\'E9\'97\'B4 }{ }\par }\par} \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid static void {\b initDataLoader} (TemplateFSM *pFSM)\par \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid static void {\b setupHandler} ({\b FSMHandler} *fcns)\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'AE\'BE\'E7\'BD\'AE\'E7\'8A\'B6\'E6\'80\'81\'E9\'80\'89\'E6\'8B\'A9\'E5\'87\'BD\'E6\'95\'B0\'E3\'80\'81\'E7\'8A\'B6\'E6\'80\'81\'E5\'86\'85\'E5\'87\'BD\'E6\'95\'B0\'E5\'92\'8C\'E7\'8A\'B6\'E6\'80\'81\'E8\'BD\'AC\'E7\'A7\'BB\'E5\'87\'BD\'E6\'95\'B0 }{ }\par }\par} \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid static void {\b step} (TemplateFSM *pFSM)\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E9\'87\'8D\'E6\'96\'B0\'E5\'AE\'9E\'E7\'8E\'B0\'E5\'9F\'BA\'E7\'B1\'BB\'E7\'9A\'84step\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E6\'B7\'BB\'E5\'8A\'A0\'E4\'B8\'80\'E4\'BA\'9B\'E6\'89\'93\'E5\'8D\'B0\'E4\'BF\'A1\'E6\'81\'AF }{ }\par }\par} \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid TemplateFSM * {\b createTemplateFSM} ()\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid Create a Template FSM object. }{ }\par }\par} } {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Detailed Description\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E9\'87\'8D\'E6\'96\'B0\'E5\'AE\'9E\'E7\'8E\'B0\'E5\'87\'A0\'E4\'B8\'AA\'E5\'BF\'85\'E9\'A1\'BB\'E5\'AE\'9E\'E7\'8E\'B0\'E7\'9A\'84\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E5\'B9\'B6\'E8\'B5\'8B\'E5\'80\'BC\'E5\'88\'B0\'E7\'88\'B6\'E7\'B1\'BB\'E6\'8C\'87\'E9\'92\'88\'E9\'87\'8C \par }{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Author\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 \'E5\'A4\'A9\'E7\'A5\'9E ({\f2 dalaoshi@stu.xjtu.edu.cn}) \par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Version\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 2.1 \par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Date\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 2024-05-07\par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Copyright\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 \'E5\'A4\'A9\'E7\'A5\'9E\'E5\'88\'9B\'E6\'84\'8F\'E6\'97\'A0\'E9\'99\'90\'E5\'85\'AC\'E5\'8F\'B8 2024 \par }}}} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Function Documentation\par \pard\plain {\xe \v loadExternalData\:templateFSM.c} {\xe \v templateFSM.c\:loadExternalData} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b static void loadExternalData (TemplateFSMData * {\i data}){\f2 [static]}}} \par {\bkmkstart AAAAAAAABQ} {\bkmkend AAAAAAAABQ} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E6\'9A\'82\'E6\'97\'B6\'E6\'B2\'A1\'E7\'94\'A8\'EF\'BC\'8C\'E5\'90\'8E\'E7\'BB\'AD\'E8\'80\'83\'E8\'99\'91data\'E6\'98\'AF\'E5\'90\'A6\'E9\'9C\'80\'E8\'A6\'81\'E5\'8A\'A0\'E9\'94\'81\'E5\'86\'8D\'E8\'AF\'B4 \par } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i data} \cell }{\'E4\'B8\'BB\'E8\'A6\'81\'E6\'98\'AF\'E5\'A4\'96\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE \cell } {\row } } }} {\xe \v resetSignals\:templateFSM.c} {\xe \v templateFSM.c\:resetSignals} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b static void resetSignals ({\b FSMSignals} * {\i signals}, TemplateFSMData * {\i data}){\f2 [static]}}} \par {\bkmkstart AAAAAAAABR} {\bkmkend AAAAAAAABR} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E6\'A0\'B9\'E6\'8D\'AE\'E6\'9D\'A1\'E4\'BB\'B6\'E9\'87\'8D\'E7\'BD\'AE\'E4\'BF\'A1\'E5\'8F\'B7 }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E6\'B8\'85\'E9\'99\'A4\'E8\'A2\'AB\'E5\'93\'8D\'E5\'BA\'94\'E4\'BF\'A1\'E5\'8F\'B7\'E5\'92\'8C\'E6\'89\'80\'E6\'9C\'89\'E5\'B0\'8F\'E4\'BA\'8E\'E8\'A2\'AB\'E5\'93\'8D\'E5\'BA\'94\'E4\'BF\'A1\'E5\'8F\'B7\'E4\'BC\'98\'E5\'85\'88\'E7\'BA\'A7\'E7\'9A\'84\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8C\'E5\'85\'B7\'E4\'BD\'93\'E5\'8F\'AF\'E4\'BB\'A5\'E5\'8F\'82\'E8\'80\'83notion {\par {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i signals} \cell }{\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'8E\'A5\'E6\'94\'B6\'E5\'88\'B0\'E7\'9A\'84\'E4\'BF\'A1\'E5\'8F\'B7 \cell } {\row } \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i data} \cell }{\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'95\'B0\'E6\'8D\'AE \cell } {\row } } }} {\xe \v initData\:templateFSM.c} {\xe \v templateFSM.c\:initData} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b static void initData (TemplateFSM * {\i pFSM}){\f2 [static]}}} \par {\bkmkstart AAAAAAAABS} {\bkmkend AAAAAAAABS} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'BB\'99\'E6\'89\'80\'E6\'9C\'89\'E5\'86\'85\'E9\'83\'A8\'E3\'80\'81\'E5\'A4\'96\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE\'E5\'88\'86\'E9\'85\'8D\'E5\'A0\'86\'E7\'A9\'BA\'E9\'97\'B4 }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\par {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\cell } {\row } } }} {\xe \v initDataLoader\:templateFSM.c} {\xe \v templateFSM.c\:initDataLoader} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b static void initDataLoader (TemplateFSM * {\i pFSM}){\f2 [static]}}} \par {\bkmkstart AAAAAAAABT} {\bkmkend AAAAAAAABT} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E5\'BC\'83\'E7\'94\'A8 \par } {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\cell } {\row } } }} {\xe \v setupHandler\:templateFSM.c} {\xe \v templateFSM.c\:setupHandler} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b static void setupHandler ({\b FSMHandler} * {\i fcns}){\f2 [static]}}} \par {\bkmkstart AAAAAAAABU} {\bkmkend AAAAAAAABU} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'AE\'BE\'E7\'BD\'AE\'E7\'8A\'B6\'E6\'80\'81\'E9\'80\'89\'E6\'8B\'A9\'E5\'87\'BD\'E6\'95\'B0\'E3\'80\'81\'E7\'8A\'B6\'E6\'80\'81\'E5\'86\'85\'E5\'87\'BD\'E6\'95\'B0\'E5\'92\'8C\'E7\'8A\'B6\'E6\'80\'81\'E8\'BD\'AC\'E7\'A7\'BB\'E5\'87\'BD\'E6\'95\'B0 }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\par {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i fcns} \cell }{\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E5\'87\'BD\'E6\'95\'B0\'E8\'A1\'A8 \cell } {\row } } }} {\xe \v step\:templateFSM.c} {\xe \v templateFSM.c\:step} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b static void step (TemplateFSM * {\i pFSM}){\f2 [static]}}} \par {\bkmkstart AAAAAAAABV} {\bkmkend AAAAAAAABV} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E9\'87\'8D\'E6\'96\'B0\'E5\'AE\'9E\'E7\'8E\'B0\'E5\'9F\'BA\'E7\'B1\'BB\'E7\'9A\'84step\'E5\'87\'BD\'E6\'95\'B0\'EF\'BC\'8C\'E6\'B7\'BB\'E5\'8A\'A0\'E4\'B8\'80\'E4\'BA\'9B\'E6\'89\'93\'E5\'8D\'B0\'E4\'BF\'A1\'E6\'81\'AF }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\par {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Parameters\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {{\i pFSM} \cell }{\'E5\'AD\'90\'E7\'B1\'BB\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'8C\'87\'E9\'92\'88 \cell } {\row } } }} {\xe \v createTemplateFSM\:templateFSM.c} {\xe \v templateFSM.c\:createTemplateFSM} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b TemplateFSM * createTemplateFSM ()}} \par {\bkmkstart AAAAAAAABW} {\bkmkend AAAAAAAABW} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid Create a Template FSM object. }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'AD\'90\'E7\'B1\'BB\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'BB\'86\'E8\'8A\'82\'E5\'AF\'B9\'E5\'A4\'96\'E9\'9A\'90\'E8\'97\'8F\'EF\'BC\'8C\'E5\'A4\'96\'E9\'83\'A8\'E5\'8F\'AA\'E8\'83\'BD\'E8\'AE\'BF\'E9\'97\'AE\'E5\'9F\'BA\'E7\'B1\'BB\'E7\'9A\'84\'E5\'85\'AC\'E6\'9C\'89\'E5\'87\'BD\'E6\'95\'B0\'E6\'9D\'A5\'E6\'93\'8D\'E4\'BD\'9C\'E5\'AD\'90\'E7\'B1\'BB\'E5\'8F\'98\'E9\'87\'8F \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Returns\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 TemplateFSM* \par }}}} \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSM_OOP/template/templateFSM.h File Reference\par \pard\plain {\tc\tcl2 \v FSM_OOP/template/templateFSM.h} {\xe \v FSM_OOP/template/templateFSM.h} {\bkmkstart AAAAAAAABX} {\bkmkend AAAAAAAABX} \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'AF\'B9\'E5\'A4\'96\'E6\'9A\'B4\'E9\'9C\'B2\'E6\'8E\'A5\'E5\'8F\'A3\'EF\'BC\'8C\'E5\'A4\'96\'E9\'83\'A8\'E5\'8F\'AF\'E4\'BB\'A5\'E8\'AE\'BE\'E7\'BD\'AE\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'9A\'84\'E4\'BF\'A1\'E5\'8F\'B7 }}\par \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Data Structures\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid struct {\b TemplateFSMExternalData}{ \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E5\'A4\'96\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE }}\par} \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid struct {\b TemplateFSMInnerData}{ \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E5\'86\'85\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE }}\par} } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Macros\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid #define {\b TemplateFSM_Input}(pFSM)\~ (({\b TemplateFSMExternalData} *){\b _preloadIn}((FSM *)pFSM))\par } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Typedefs\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid typedef struct TemplateFSMExternalData {\b TemplateFSMExternalData}{\bkmkstart AAAAAAAABY} {\bkmkend AAAAAAAABY} \par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E5\'A4\'96\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE }{ }\par }\par} \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid typedef struct TemplateFSMInnerData {\b TemplateFSMInnerData}{\bkmkstart AAAAAAAABZ} {\bkmkend AAAAAAAABZ} \par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E5\'86\'85\'E9\'83\'A8\'E6\'95\'B0\'E6\'8D\'AE }{ }\par }\par} } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Enumerations\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid enum {\b TemplateFSMSignals} \{ {\b Signal_A} = 1 , {\b Signal_B} \}\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E5\'A4\'96\'E9\'83\'A8\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8C\'E7\'9B\'AE\'E5\'89\'8D\'E6\'9C\'80\'E5\'A4\'9A15\'E4\'B8\'AA }}\par} } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Functions\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid TemplateFSM * {\b createTemplateFSM} ()\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid Create a Template FSM object. }{ }\par }\par} } {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Detailed Description\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'AF\'B9\'E5\'A4\'96\'E6\'9A\'B4\'E9\'9C\'B2\'E6\'8E\'A5\'E5\'8F\'A3\'EF\'BC\'8C\'E5\'A4\'96\'E9\'83\'A8\'E5\'8F\'AF\'E4\'BB\'A5\'E8\'AE\'BE\'E7\'BD\'AE\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'9A\'84\'E4\'BF\'A1\'E5\'8F\'B7 \par }{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Author\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 \'E5\'A4\'A9\'E7\'A5\'9E ({\f2 dalaoshi@stu.xjtu.edu.cn}) \par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Version\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 2.1 \par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Date\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 2024-05-07\par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Copyright\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 \'E5\'A4\'A9\'E7\'A5\'9E\'E5\'88\'9B\'E6\'84\'8F\'E6\'97\'A0\'E9\'99\'90\'E5\'85\'AC\'E5\'8F\'B8 2024 \par }}}} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Macro Definition Documentation\par \pard\plain {\xe \v TemplateFSM_Input\:templateFSM.h} {\xe \v templateFSM.h\:TemplateFSM_Input} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b #define TemplateFSM_Input( pFSM)\~ (({\b TemplateFSMExternalData} *){\b _preloadIn}((FSM *)pFSM))}} \par {\bkmkstart AAAAAAAACA} {\bkmkend AAAAAAAACA} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Deprecated:\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid \'E6\'9A\'82\'E6\'97\'B6\'E5\'BC\'83\'E7\'94\'A8 \par } }} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Enumeration Type Documentation\par \pard\plain {\xe \v TemplateFSMSignals\:templateFSM.h} {\xe \v templateFSM.h\:TemplateFSMSignals} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b enum {\b TemplateFSMSignals}}} \par {\bkmkstart AAAAAAAACB} {\bkmkend AAAAAAAACB} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E5\'A4\'96\'E9\'83\'A8\'E4\'BF\'A1\'E5\'8F\'B7\'EF\'BC\'8C\'E7\'9B\'AE\'E5\'89\'8D\'E6\'9C\'80\'E5\'A4\'9A15\'E4\'B8\'AA }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'9B\'A0\'E4\'B8\'BA\'E6\'98\'AFUnint16\'E5\'AD\'98\'E5\'82\'A8\'E7\'9A\'84\'E4\'BF\'A1\'E5\'8F\'B7\'E4\'BD\'8D \par }{\par {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Enumerator:\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {\xe \v Signal_A\:templateFSM.h} {\xe \v templateFSM.h\:Signal_A} {\qr Signal_A{\bkmkstart AAAAAAAACC} {\bkmkend AAAAAAAACC} \cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'BF\'85\'E9\'A1\'BB\'E4\'BB\'8E1\'E5\'BC\'80\'E5\'A7\'8B\'EF\'BC\'8C0\'E9\'A2\'84\'E7\'95\'99\'E7\'BB\'99Idle\'E4\'BF\'A1\'E5\'8F\'B7\'E4\'BA\'86 \par }\cell }{\row } } } {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Function Documentation\par \pard\plain {\xe \v createTemplateFSM\:templateFSM.h} {\xe \v templateFSM.h\:createTemplateFSM} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b TemplateFSM * createTemplateFSM ()}} \par {\bkmkstart AAAAAAAACD} {\bkmkend AAAAAAAACD} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid Create a Template FSM object. }}\par {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'AD\'90\'E7\'B1\'BB\'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E7\'BB\'86\'E8\'8A\'82\'E5\'AF\'B9\'E5\'A4\'96\'E9\'9A\'90\'E8\'97\'8F\'EF\'BC\'8C\'E5\'A4\'96\'E9\'83\'A8\'E5\'8F\'AA\'E8\'83\'BD\'E8\'AE\'BF\'E9\'97\'AE\'E5\'9F\'BA\'E7\'B1\'BB\'E7\'9A\'84\'E5\'85\'AC\'E6\'9C\'89\'E5\'87\'BD\'E6\'95\'B0\'E6\'9D\'A5\'E6\'93\'8D\'E4\'BD\'9C\'E5\'AD\'90\'E7\'B1\'BB\'E5\'8F\'98\'E9\'87\'8F \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Returns\par}\pard\plain \s82\li720\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 TemplateFSM* \par }}}} \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid templateFSM.h\par \pard\plain {\tc\tcl2 \v FSM_OOP/template/templateFSM.h} {\xe \v FSM_OOP/template/templateFSM.h} {\bkmkstart AAAAAAAAAI} {\bkmkend AAAAAAAAAI} Go to the documentation of this file.\par { \pard\plain \s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid 1 \par 12 {\cf21 #ifndef __TEMPLATE_FSM_H_}\par 13 {\cf21 #define __TEMPLATE_FSM_H_}\par 14 \par 15 {\cf20 /* -------------------------------------------------------------------------- */}\par 16 {\cf20 /* \'E6\'8F\'90\'E5\'89\'8D\'E5\'81\'9A\'E7\'B1\'BB\'E5\'9E\'8B\'E5\'A3\'B0\'E6\'98\'8E */}\par 17 {\cf20 /* -------------------------------------------------------------------------- */}\par 18 \par 19 \par 20 {\cf20 /* -------------------------------------------------------------------------- */}\par 21 {\cf20 /* \'E8\'87\'AA\'E5\'AE\'9A\'E4\'B9\'89\'E6\'95\'B0\'E6\'8D\'AE\'E5\'92\'8C\'E4\'BF\'A1\'E5\'8F\'B7 */}\par 22 {\cf20 /* -------------------------------------------------------------------------- */}\par 28 {\cf17 enum} TemplateFSMSignals\{\par 29 Signal_A = 1, \par 30 Signal_B,\par 31 \};\par 32 \par 37 {\cf17 typedef} {\cf17 struct }TemplateFSMExternalData\par 38 \{\par 39 {\cf18 int} arrindex;\par 40 {\cf18 int} x;\par 41 \}TemplateFSMExternalData;\par 42 \par 43 \par 48 {\cf17 typedef} {\cf17 struct }TemplateFSMInnerData\par 49 \{\par 50 {\cf18 int} y1;\par 51 {\cf18 int} inner1;\par 52 \}TemplateFSMInnerData;\par 53 \par 54 {\cf20 /* -------------------------------------------------------------------------- */}\par 55 {\cf20 /* \'E4\'B8\'8B\'E9\'9D\'A2\'E7\'9A\'84\'E6\'94\'B9\'E4\'B8\'AA\'E5\'90\'8D\'E5\'AD\'97\'E5\'B0\'B1\'E8\'A1\'8C\'E4\'BA\'86 */}\par 56 {\cf20 /* -------------------------------------------------------------------------- */}\par 57 {\cf21 #define TemplateFSM_Input(pFSM) ((TemplateFSMExternalData *)_preloadIn((FSM *)pFSM)) }\par 59 {\cf17 typedef} {\cf17 struct }TemplateFSMData\par 60 \{\par 61 TemplateFSMExternalData external;\par 62 TemplateFSMInnerData internal;\par 63 \}TemplateFSMData;\par 64 \par 65 {\cf17 typedef} {\cf17 struct }TemplateFSM TemplateFSM;\par 66 TemplateFSM *createTemplateFSM();\par 67 \par 68 \par 69 {\cf21 #endif}\par } \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid FSM_OOP/template/templateFSM_private.h File Reference\par \pard\plain {\tc\tcl2 \v FSM_OOP/template/templateFSM_private.h} {\xe \v FSM_OOP/template/templateFSM_private.h} {\bkmkstart AAAAAAAACE} {\bkmkend AAAAAAAACE} \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'94\'A8\'E6\'9D\'A5\'E5\'A3\'B0\'E6\'98\'8E\'E7\'8A\'B6\'E6\'80\'81\'E3\'80\'81\'E7\'8A\'B6\'E6\'80\'81\'E5\'87\'BD\'E6\'95\'B0\'E7\'AD\'89\'E3\'80\'82\'E8\'BF\'99\'E4\'B8\'AA\'E6\'96\'87\'E4\'BB\'B6\'E5\'8F\'AA\'E8\'83\'BD\'E8\'A2\'ABtemplateFSM.c\'E5\'BC\'95\'E7\'94\'A8\'E4\'B8\'80\'E6\'AC\'A1\'EF\'BC\'81 }}\par { \pard\plain \s18\widctlpar\fs22\cgrid {\f2 #include "FSM_protected.h"}\par {\f2 #include "templateFSM.h"}\par {\f2 #include }\par } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Macros\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid #define {\b DEFAULT_STATE}\~ E\par } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Typedefs\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid typedef enum _State {\b State}{\bkmkstart AAAAAAAACF} {\bkmkend AAAAAAAACF} \par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E5\'86\'85\'E7\'8A\'B6\'E6\'80\'81\'E5\'AE\'9A\'E4\'B9\'89\'EF\'BC\'8CIdle\'E5\'92\'8CCount_State\'E5\'BF\'85\'E9\'A1\'BB\'E5\'8D\'A0\'E6\'8D\'AE\'E5\'BC\'80\'E5\'A4\'B4\'E5\'92\'8C\'E7\'BB\'93\'E5\'B0\'BE\'E4\'B8\'A4\'E4\'B8\'AA\'E4\'BD\'8D\'E7\'BD\'AE }{ }\par }\par} } \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Enumerations\par \pard\plain { \pard\plain \s120\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid enum {\b _State} \{ {\b Idle} , {\b D} , {\b E} , {\b Count_State} \}\par { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E5\'86\'85\'E7\'8A\'B6\'E6\'80\'81\'E5\'AE\'9A\'E4\'B9\'89\'EF\'BC\'8CIdle\'E5\'92\'8CCount_State\'E5\'BF\'85\'E9\'A1\'BB\'E5\'8D\'A0\'E6\'8D\'AE\'E5\'BC\'80\'E5\'A4\'B4\'E5\'92\'8C\'E7\'BB\'93\'E5\'B0\'BE\'E4\'B8\'A4\'E4\'B8\'AA\'E4\'BD\'8D\'E7\'BD\'AE }}\par} } {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Detailed Description\par \pard\plain { \pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'94\'A8\'E6\'9D\'A5\'E5\'A3\'B0\'E6\'98\'8E\'E7\'8A\'B6\'E6\'80\'81\'E3\'80\'81\'E7\'8A\'B6\'E6\'80\'81\'E5\'87\'BD\'E6\'95\'B0\'E7\'AD\'89\'E3\'80\'82\'E8\'BF\'99\'E4\'B8\'AA\'E6\'96\'87\'E4\'BB\'B6\'E5\'8F\'AA\'E8\'83\'BD\'E8\'A2\'ABtemplateFSM.c\'E5\'BC\'95\'E7\'94\'A8\'E4\'B8\'80\'E6\'AC\'A1\'EF\'BC\'81 \par }{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \par {{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Author\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 \'E5\'A4\'A9\'E7\'A5\'9E ({\f2 dalaoshi@stu.xjtu.edu.cn}) \par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Version\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 2.1 \par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Date\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 2024-05-07\par }}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Copyright\par}\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\s17 \sa60 \sb30 \'E5\'A4\'A9\'E7\'A5\'9E\'E5\'88\'9B\'E6\'84\'8F\'E6\'97\'A0\'E9\'99\'90\'E5\'85\'AC\'E5\'8F\'B8 2024 \par }}}} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Macro Definition Documentation\par \pard\plain {\xe \v DEFAULT_STATE\:templateFSM_private.h} {\xe \v templateFSM_private.h\:DEFAULT_STATE} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b #define DEFAULT_STATE\~ E}} \par {\bkmkstart AAAAAAAACG} {\bkmkend AAAAAAAACG} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E9\'BB\'98\'E8\'AE\'A4\'E7\'8A\'B6\'E6\'80\'81\'EF\'BC\'8CIdle\'E7\'8A\'B6\'E6\'80\'81\'E4\'BC\'9A\'E5\'85\'88\'E8\'B7\'B3\'E8\'BD\'AC\'E5\'88\'B0\'E9\'BB\'98\'E8\'AE\'A4\'E7\'8A\'B6\'E6\'80\'81 \par }} {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} \pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid Enumeration Type Documentation\par \pard\plain {\xe \v _State\:templateFSM_private.h} {\xe \v templateFSM_private.h\:_State} \pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { {\b enum _State}} \par {\bkmkstart AAAAAAAACH} {\bkmkend AAAAAAAACH} { \pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \par { {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E5\'86\'85\'E7\'8A\'B6\'E6\'80\'81\'E5\'AE\'9A\'E4\'B9\'89\'EF\'BC\'8CIdle\'E5\'92\'8CCount_State\'E5\'BF\'85\'E9\'A1\'BB\'E5\'8D\'A0\'E6\'8D\'AE\'E5\'BC\'80\'E5\'A4\'B4\'E5\'92\'8C\'E7\'BB\'93\'E5\'B0\'BE\'E4\'B8\'A4\'E4\'B8\'AA\'E4\'BD\'8D\'E7\'BD\'AE }}\par {\par {\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid Enumerator:\par} \pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 \clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 \pard \widctlpar\intbl\adjustright {\xe \v Idle\:templateFSM_private.h} {\xe \v templateFSM_private.h\:Idle} {\qr Idle{\bkmkstart AAAAAAAACI} {\bkmkend AAAAAAAACI} \cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'BF\'85\'E9\'A1\'BB\'E5\'9C\'A8\'E5\'BC\'80\'E5\'A4\'B4\'EF\'BC\'8C\'E5\'B9\'B6\'E4\'B8\'94\'E6\'9E\'9A\'E4\'B8\'BE\'E5\'80\'BC=0 \par }\cell }{\row } {\xe \v Count_State\:templateFSM_private.h} {\xe \v templateFSM_private.h\:Count_State} {\qr Count_State{\bkmkstart AAAAAAAACJ} {\bkmkend AAAAAAAACJ} \cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \'E5\'BF\'85\'E9\'A1\'BB\'E5\'9C\'A8\'E7\'BB\'93\'E5\'B0\'BE\'EF\'BC\'8C\'E7\'94\'A8\'E6\'9D\'A5\'E7\'BB\'9F\'E8\'AE\'A1\'E7\'8A\'B6\'E6\'80\'81\'E6\'95\'B0\'E9\'87\'8F \par }\cell }{\row } } } \par \pard\plain \pard\plain \sect\sbkpage \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid templateFSM_private.h\par \pard\plain {\tc\tcl2 \v FSM_OOP/template/templateFSM_private.h} {\xe \v FSM_OOP/template/templateFSM_private.h} {\bkmkstart AAAAAAAAAJ} {\bkmkend AAAAAAAAAJ} Go to the documentation of this file.\par { \pard\plain \s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid 1 \par 12 {\cf21 #ifdef __TEMPLATE_PRIVATE_FSM_H_}\par 13 {\cf21 #error This file can only be included once!!!}\par 14 \par 15 {\cf21 #else}\par 16 {\cf21 #define __TEMPLATE_PRIVATE_FSM_H_}\par 17 \par 18 {\cf21 #include "FSM_protected.h"}\par 19 {\cf21 #include "templateFSM.h"}\par 20 {\cf21 #include }\par 21 \par 22 {\cf20 /* -------------------------------------------------------------------------- */}\par 23 {\cf20 /* \'E7\'94\'A8\'E5\'88\'B0\'E7\'9A\'84\'E5\'A4\'96\'E9\'83\'A8\'E5\'8F\'98\'E9\'87\'8F */}\par 24 {\cf20 /* -------------------------------------------------------------------------- */}\par 25 {\cf17 extern} {\cf18 int} arrindex;\par 26 {\cf17 extern} {\cf18 int} x;\par 27 \par 28 \par 29 {\cf20 /* -------------------------------------------------------------------------- */}\par 30 {\cf20 /* \'E7\'BB\'A7\'E6\'89\'BF\'E5\'9F\'BA\'E7\'B1\'BB */}\par 31 {\cf20 /* -------------------------------------------------------------------------- */}\par 32 {\cf17 typedef} {\cf17 struct }TemplateFSM\par 33 \{ \par 34 FSM base;\par 35 \}TemplateFSM;\par 36 \par 37 {\cf20 /* -------------------------------------------------------------------------- */}\par 38 {\cf20 /* \'E7\'8A\'B6\'E6\'80\'81\'E5\'AE\'9A\'E4\'B9\'89 */}\par 39 {\cf20 /* -------------------------------------------------------------------------- */}\par 40 \par 45 {\cf17 typedef} {\cf17 enum} _State\par 46 \{\par 47 Idle, \par 48 D,\par 49 E,\par 50 \par 51 Count_State, \par 52 \} State;\par 53 {\cf21 #define DEFAULT_STATE E }\par 55 {\cf20 /* -------------------------------------------------------------------------- */}\par 56 {\cf20 /* \'E4\'B8\'8B\'E4\'B8\'80\'E4\'B8\'AA\'E7\'8A\'B6\'E6\'80\'81\'E9\'80\'89\'E6\'8B\'A9\'E5\'87\'BD\'E6\'95\'B0 */}\par 57 {\cf20 /* -------------------------------------------------------------------------- */}\par 58 \par 59 \par 60 {\cf17 static} State selectNextStateFcn(D)(TemplateFSMData *data, FSMSignals *signals)\{\par 61 {\cf19 if}(getSignal(signals, Signal_A))\{\par 62 signals->lastTriggeredSignal = Signal_A;\par 63 {\cf19 return} E;\par 64 \}\par 65 {\cf19 else} {\cf19 if}(arrindex == 0)\{\par 66 {\cf19 return} E;\par 67 \}\par 68 {\cf19 return} Idle;\par 69 \}\par 70 \par 71 {\cf17 static} State selectNextStateFcn(E)(TemplateFSMData *data, FSMSignals *signals)\{\par 72 {\cf19 if}(getSignal(signals, Signal_A))\{\par 73 signals->lastTriggeredSignal = Signal_A;\par 74 {\cf19 return} D;\par 75 \}\par 76 {\cf19 else} {\cf19 if}(x == 0)\{\par 77 {\cf19 return} D;\par 78 \}\par 79 {\cf19 return} Idle;\par 80 \}\par 81 \par 82 \par 83 \par 84 {\cf20 /* -------------------------------------------------------------------------- */}\par 85 {\cf20 /* \'E5\'AF\'B9\'E5\'BA\'94\'E7\'9A\'84 action, exit, during \'E5\'87\'BD\'E6\'95\'B0 */}\par 86 {\cf20 /* -------------------------------------------------------------------------- */}\par 87 {\cf17 static} {\cf18 void} actionFcn(enter, D)()\par 88 \{\par 89 FSM_LOG({\cf22 " enterD "});\par 90 \}\par 91 {\cf17 static} {\cf18 void} actionFcn(during, D)()\par 92 \{\par 93 FSM_LOG({\cf22 " duringD "});\par 94 \}\par 95 {\cf17 static} {\cf18 void} actionFcn(exit, D)()\par 96 \{\par 97 FSM_LOG({\cf22 " exitD "});\par 98 \}\par 99 \par 100 {\cf17 static} {\cf18 void} actionFcn(enter, E)()\par 101 \{\par 102 FSM_LOG({\cf22 " enterE "});\par 103 \}\par 104 {\cf17 static} {\cf18 void} actionFcn(during, E)()\par 105 \{\par 106 FSM_LOG({\cf22 " duringE "});\par 107 \}\par 108 {\cf17 static} {\cf18 void} actionFcn(exit, E)()\par 109 \{\par 110 FSM_LOG({\cf22 " exitE "});\par 111 \}\par 112 \par 113 \par 114 \par 115 {\cf20 /* -------------------------------------------------------------------------- */}\par 116 {\cf20 /* \'E8\'BD\'AC\'E7\'A7\'BB\'E5\'87\'BD\'E6\'95\'B0 */}\par 117 {\cf20 /* -------------------------------------------------------------------------- */}\par 118 {\cf17 static} {\cf18 void} transitionGeneralAction(FSM pFSM)\{\par 119 FSM_LOG({\cf22 "general"});\par 120 \}\par 121 \par 122 {\cf20 // static void transitionGeneralAction(TemplateFSMData *data)\{}\par 123 {\cf20 // FSM_LOG("general");}\par 124 {\cf20 // \}}\par 125 \par 126 {\cf17 static} {\cf18 void} transitionHandler(Idle, D)()\par 127 \{\par 128 FSM_LOG({\cf22 " Idle2D "});\par 129 \}\par 130 \par 131 {\cf17 static} {\cf18 void} transitionHandler(Idle, E)()\par 132 \{\par 133 FSM_LOG({\cf22 " Idle2E "});\par 134 \}\par 135 \par 136 {\cf17 static} {\cf18 void} transitionHandler(D, E)(TemplateFSMData *data, {\cf18 int} *delayedIndex)\par 137 \{\par 138 *delayedIndex = index(D, E);\par 139 FSM_LOG({\cf22 " D2E "});\par 140 \}\par 141 \par 142 {\cf17 static} {\cf18 void} transitionHandler(E, D)()\par 143 \{\par 144 FSM_LOG({\cf22 " E2D "});\par 145 \}\par 146 \par 147 \par 148 {\cf20 /* -------------------------------------------------------------------------- */}\par 149 {\cf20 /* \'E6\'89\'93\'E5\'8D\'B0\'E8\'B0\'83\'E8\'AF\'95 */}\par 150 {\cf20 /* -------------------------------------------------------------------------- */}\par 151 {\cf17 const} {\cf17 static} {\cf18 char} *stateStr[] = \{\par 152 {\cf22 "Idle"},\par 153 {\cf22 "D"},\par 154 {\cf22 "E"},\par 155 \};\par 156 \par 157 {\cf17 static} {\cf18 void} printFSM(TemplateFSM* pFSM)\{\par 158 FSM_LOG({\cf22 " \\tTemplateFSM: "});\par 159 FSM_LOG({\cf22 "\'E9\'A2\'84\'E8\'A3\'85\'E8\'BD\'BD\'E5\'99\'A8\'E6\'BA\'A2\'E5\'87\'BA:%d, \'E5\'BD\'93\'E5\'89\'8D\'E7\'8A\'B6\'E6\'80\'81:%s, \'E5\'8A\'A8\'E4\'BD\'9C\'EF\'BC\'9A"}, _getPreloaderOverFlag((FSM *)pFSM), stateStr[getFSMCurState((FSM *)pFSM)]);\par 160 \}\par 161 \par 162 \par 163 {\cf21 #endif}\par } \pard\plain \sect\sbkpage \s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid \s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid Index\par \pard\plain {\tc \v Index} {\field\fldedit {\*\fldinst INDEX \\c2 \\*MERGEFORMAT}{\fldrslt INDEX}} }