FSM/vscode/manual/rtf/refman.rtf

2003 lines
97 KiB
Plaintext

{\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 AAAAAAAAAV}
{\bkmkend AAAAAAAAAV}
{
\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 FSMDataLoader} \par
}
{\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAAAW}
{\bkmkend AAAAAAAAAW}
\'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 FSMPrivateVars::preloader} \par
}
{\pard\plain \s81\li360\widctlpar\ql\adjustright \fs20\cgrid {\bkmkstart AAAAAAAAAX}
{\bkmkend AAAAAAAAAX}
\'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 AAAAAAAAAY}
{\bkmkend AAAAAAAAAY}
\'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 AAAAAAAAAZ}
{\bkmkend AAAAAAAAAZ}
\'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}
}}
\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 _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 AAAAAAAABA \\*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 AAAAAAAABB \\*MERGEFORMAT}{\fldrslt pagenum}}
\par
{\b {\b FSMDataLoader} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABC \\*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 AAAAAAAABD \\*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 AAAAAAAABF \\*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 AAAAAAAABK \\*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 AAAAAAAABR \\*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_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 AAAAAAAAAK \\*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 AAAAAAAAAP \\*MERGEFORMAT}{\fldrslt pagenum}}
\par
{\b FSM_OOP/baseFSM/{\b FSM_public.h} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAC \\*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.h} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAI \\*MERGEFORMAT}{\fldrslt pagenum}}
\par
{\b FSM_OOP/template/{\b templateFSM_private.h} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAJ \\*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
_templateFSMExternalData Struct Reference\par \pard\plain
{\tc\tcl2 \v _templateFSMExternalData}
{\xe \v _templateFSMExternalData}
{\bkmkstart AAAAAAAABA}
{\bkmkend AAAAAAAABA}
\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 <templateFSM.h>}}\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 AAAAAAAABB}
{\bkmkend AAAAAAAABB}
\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 <templateFSM.h>}}\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
}}
\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
FSMDataLoader Struct Reference\par \pard\plain
{\tc\tcl2 \v FSMDataLoader}
{\xe \v FSMDataLoader}
{\bkmkstart AAAAAAAABC}
{\bkmkend AAAAAAAABC}
\par
{
{\f2 #include <FSM_private.h>}}\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 AAAAAAAABD}
{\bkmkend AAAAAAAABD}
\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 <FSM_protected.h>}}\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\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\'9A\'B4\'E9\'9C\'B2\'E7\'BB\'99protect\'E6\'96\'87\'E4\'BB\'B6\'EF\'BC\'8C\'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 AAAAAAAABE}
{\bkmkend AAAAAAAABE}
{
\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
}}
\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 AAAAAAAABF}
{\bkmkend AAAAAAAABF}
\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 <FSM_private.h>}}\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 defaultState}\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 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 defaultState\:FSMPrivateVars}
{\xe \v FSMPrivateVars\:defaultState}
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
{\b
int FSMPrivateVars::defaultState}}
\par
{\bkmkstart AAAAAAAABG}
{\bkmkend AAAAAAAABG}
{
\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 nextState\:FSMPrivateVars}
{\xe \v FSMPrivateVars\:nextState}
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
{\b
int FSMPrivateVars::nextState}}
\par
{\bkmkstart AAAAAAAABH}
{\bkmkend AAAAAAAABH}
{
\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 AAAAAAAABI}
{\bkmkend AAAAAAAABI}
{
\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 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 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 \'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 AAAAAAAABK}
{\bkmkend AAAAAAAABK}
\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 <FSM_protected.h>}}\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} *signalRegs, 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 AAAAAAAABL}
{\bkmkend AAAAAAAABL}
{
\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 AAAAAAAABM}
{\bkmkend AAAAAAAABM}
{
\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 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 \'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 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\'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 AAAAAAAABP}
{\bkmkend AAAAAAAABP}
{
\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} *signalRegs, void *data)}}
\par
{\bkmkstart AAAAAAAABQ}
{\bkmkend AAAAAAAABQ}
{
\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 AAAAAAAABR}
{\bkmkend AAAAAAAABR}
\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 <FSM_protected.h>}}\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 external}\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
}}
{\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 external\:FSMSignals}
{\xe \v FSMSignals\:external}
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
{\b
Uint16 FSMSignals::external}}
\par
{\bkmkstart AAAAAAAABS}
{\bkmkend AAAAAAAABS}
{
\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 AAAAAAAABT}
{\bkmkend AAAAAAAABT}
{
\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 \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_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 AAAAAAAAAK}
{\bkmkend AAAAAAAAAK}
\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 <string.h>}\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}{\bkmkstart AAAAAAAAAL}
{\bkmkend AAAAAAAAAL}
\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 AAAAAAAAAM}
{\bkmkend AAAAAAAAAM}
\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\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
}}{{\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 AAAAAAAAAN}
{\bkmkend AAAAAAAAAN}
{
\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\'9A\'B4\'E9\'9C\'B2\'E7\'BB\'99protect\'E6\'96\'87\'E4\'BB\'B6\'EF\'BC\'8C\'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 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 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 \'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
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
13 {\cf21 #ifndef __FSM_PRIVATE_H_}\par
14 {\cf21 #define __FSM_PRIVATE_H_}\par
15 \par
16 {\cf21 #include <string.h>}\par
17 {\cf21 #include "FSM_protected.h"}\par
18 \par
19 {\cf17 typedef} {\cf17 struct }FSMHandler FSMHandler;\par
20 {\cf17 typedef} {\cf17 struct }FSM FSM;\par
21 {\cf17 typedef} {\cf17 struct }FSMSignals FSMSignals;\par
22 \par
23 {\cf20 /* -------------------------------------------------------------------------- */}\par
24 {\cf20 /* private\'E6\'95\'B0\'E6\'8D\'AE\'E7\'B1\'BB\'E5\'9E\'8B */}\par
25 {\cf20 /* -------------------------------------------------------------------------- */}\par
31 {\cf17 typedef} {\cf17 struct }FSMDataLoader\par
32 \{ \par
33 {\cf18 void} *shadowData;\par
34 {\cf18 int} isReady;\par
35 {\cf18 int} isOverflow;\par
36 {\cf18 size_t} size;\par
37 \}FSMDataLoader;\par
38 \par
39 \par
44 {\cf17 typedef} {\cf17 struct }FSMPrivateVars\par
45 \{\par
46 {\cf18 int} numState; \par
47 {\cf18 int} defaultState; \par
49 {\cf18 int} curState; \par
50 {\cf18 int} nextState; \par
51 {\cf18 int} index; \par
53 FSMHandler fcns; \par
54 \par
55 {\cf18 int} numChild;\par
56 FSM **childFSM;\par
57 \par
58 FSMDataLoader preloader; \par
60 \}FSMPrivateVars;\par
61 \par
62 FSMPrivateVars* newFMSPrivateVars({\cf18 int} numState, {\cf18 int} defaultState)\{\par
63 {\cf17 typedef} void (*StateFuncPtr)({\cf18 void} *); \par
64 {\cf17 typedef} void (*ChildFSMStepFuncPtr)(FSM **); \par
65 {\cf17 typedef} int (*TransitionFuncPtr)({\cf18 void} *, {\cf18 int} *);\par
66 {\cf17 typedef} int (*SelectNextStateFcnPtr)({\cf18 void} *, FSMSignals *);\par
67 \par
68 FSMPrivateVars *privateVars = calloc(1, {\cf17 sizeof}(FSMPrivateVars));\par
69 privateVars->numState = numState;\par
70 privateVars->defaultState = defaultState;\par
71 privateVars->curState = 0;\par
72 privateVars->nextState = 0;\par
73 privateVars->numChild = 0;\par
74 \par
75 privateVars->preloader.isReady = 0;\par
76 \par
77 privateVars->fcns.duringActionTable = calloc(numState, {\cf17 sizeof}(StateFuncPtr));\par
78 privateVars->fcns.enterActionTable = calloc(numState, {\cf17 sizeof}(StateFuncPtr));\par
79 privateVars->fcns.exitActionTable = calloc(numState, {\cf17 sizeof}(StateFuncPtr));\par
80 \par
81 privateVars->fcns.selectNextState = calloc(numState, {\cf17 sizeof}(SelectNextStateFcnPtr));\par
82 privateVars->fcns.transitionTable = calloc(numState * numState, {\cf17 sizeof}(TransitionFuncPtr));\par
83 privateVars->fcns.transitionGeneralAction = calloc(1, {\cf17 sizeof}(StateFuncPtr));\par
84 \par
85 privateVars->fcns.childFSMStepTable = calloc(numState * numState, {\cf17 sizeof}(ChildFSMStepFuncPtr));\par
86 \par
87 {\cf19 return} privateVars;\par
88 \par
89 \}\par
90 \par
91 {\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 AAAAAAAAAP}
{\bkmkend AAAAAAAAAP}
\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}{\bkmkstart AAAAAAAAAQ}
{\bkmkend AAAAAAAAAQ}
\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 AAAAAAAAAR}
{\bkmkend AAAAAAAAAR}
\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 AAAAAAAAAS}
{\bkmkend AAAAAAAAAS}
{
\pard\plain \s61\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
\'E5\'95\'A5\'E6\'84\'8F\'E6\'80\'9D\'EF\'BC\'9F \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 AAAAAAAAAT}
{\bkmkend AAAAAAAAAT}
{
\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\'9A\'B4\'E9\'9C\'B2\'E7\'BB\'99protect\'E6\'96\'87\'E4\'BB\'B6\'EF\'BC\'8C\'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
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 AAAAAAAAAU}
{\bkmkend AAAAAAAAAU}
{
\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
72 \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
76 \par
77 void (**childFSMStepTable)(FSM **cFSM);\par
78 \}FSMHandler;\par
79 \par
84 {\cf17 typedef} {\cf17 struct }FSMSignals\par
85 \{\par
86 Uint16 external; \par
87 Uint16 lastTriggeredSignal; \par
88 \}FSMSignals;\par
89 {\cf21 #define Idle_Signal 0 }\par
91 {\cf20 /* -------------------------------------------------------------------------- */}\par
92 {\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
93 {\cf20 /* -------------------------------------------------------------------------- */}\par
94 \par
99 {\cf17 typedef} {\cf17 struct }FSMPureVtbl \{\par
100 {\cf20 // \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E6\'8E\'A7\'E5\'88\'B6}\par
101 void (*setupHandler)(FSMHandler *fcns); \par
103 void (*initData)(FSM *pFSM); \par
104 void (*loadExternalData)({\cf18 void} *extData); \par
106 void (*initDataLoader)(FSM *pFSM); \par
108 void (*initSignals)(FSM *pFSM); \par
109 void (*resetSignals)(FSMSignals *signalRegs, {\cf18 void} *data); \par
110 \}FSMPureVtbl;\par
111 \par
112 \par
113 \par
114 {\cf20 /* -------------------------------------------------------------------------- */}\par
115 {\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
116 {\cf20 /* -------------------------------------------------------------------------- */}\par
117 {\cf17 typedef} {\cf17 struct }FSM\par
118 \{\par
119 {\cf20 // public functions}\par
120 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
121 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
122 \par
123 {\cf20 // protected}\par
124 FSMPureVtbl pureVtbl;\par
125 \par
126 {\cf18 void} *data;\par
127 FSMSignals signals;\par
128 {\cf20 // private}\par
129 FSMPrivateVars* privateVars; \par
130 \} FSM;\par
131 \par
132 \par
133 {\cf20 /* -------------------------------------------------------------------------- */}\par
134 {\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
135 {\cf20 /* -------------------------------------------------------------------------- */}\par
136 {\cf18 void} stepBaseFSM(FSM *pFSM);\par
137 {\cf18 void} constructFSM(FSM* pFSM);\par
138 FSM* newBaseFSM({\cf18 int} numState, {\cf18 int} defaultState);\par
139 {\cf18 void} resetBaseFSM(FSM *pFSM);\par
140 \par
141 \par
142 {\cf20 /* -------------------------------------------------------------------------- */}\par
143 {\cf20 /* \'E5\'86\'85\'E8\'81\'94\'E5\'87\'BD\'E6\'95\'B0 */}\par
144 {\cf20 /* -------------------------------------------------------------------------- */}\par
145 {\cf17 static} {\cf17 inline} {\cf18 void} clearSignal(FSMSignals *signals, Uint16 signalFlag)\{\par
146 signals->external &= ~(1 << signalFlag);\par
147 \}\par
148 {\cf17 static} {\cf17 inline} Uint16 getSignal(FSMSignals *signals, Uint16 signalFlag)\{\par
149 {\cf19 return} (signals->external >> signalFlag) & 1;\par
150 \}\par
151 {\cf17 static} {\cf17 inline} {\cf18 void} clearAllSignals(FSMSignals *signals)\{\par
152 signals->external = 0;\par
153 \}\par
154 \par
155 \par
156 {\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_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}
{
\pard\plain \s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid 1 {\cf20 /*}\par
2 {\cf20 * @Author: godcreator02 qq974980621@gmail.com}\par
3 {\cf20 * @Date: 2024-04-20 18:52:14}\par
4 {\cf20 * @LastEditors: godcreator02 qq974980621@gmail.com}\par
5 {\cf20 * @LastEditTime: 2024-04-23 21:51:55}\par
6 {\cf20 * @FilePath: \\vscode\\FSM_OOP\\baseFSM\\FSM_public.h}\par
7 {\cf20 * @Description: \'E8\'BF\'99\'E6\'98\'AF\'E9\'BB\'98\'E8\'AE\'A4\'E8\'AE\'BE\'E7\'BD\'AE,\'E8\'AF\'B7\'E8\'AE\'BE\'E7\'BD\'AE`customMade`, \'E6\'89\'93\'E5\'BC\'80koroFileHeader\'E6\'9F\'A5\'E7\'9C\'8B\'E9\'85\'8D\'E7\'BD\'AE \'E8\'BF\'9B\'E8\'A1\'8C\'E8\'AE\'BE\'E7\'BD\'AE: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE}\par
8 {\cf20 */}\par
9 {\cf21 #ifndef __FSM_PUBLIC_H_}\par
10 {\cf21 #define __FSM_PUBLIC_H_}\par
11 \par
12 {\cf17 typedef} {\cf18 unsigned} {\cf18 int} Uint16;\par
13 {\cf17 typedef} {\cf18 unsigned} {\cf18 long} Uint32;\par
14 \par
15 {\cf21 #define BASE_FSM(ptr) ((FSM *)(ptr))}\par
16 {\cf21 #define BASE_PTR (FSM *)}\par
17 \par
18 {\cf17 typedef} {\cf17 struct }FSM FSM;\par
19 \par
20 {\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
21 {\cf21 #define Step(pFSM) _stepFSM((FSM *)pFSM)}\par
22 {\cf21 #define PreloaderGetReady(pFSM) _preloaderGetReady((FSM *)pFSM);}\par
23 {\cf21 #define GetPreloaderOverFlag(pFSM) _getPreloaderOverFlag((FSM *)pFSM)}\par
24 {\cf21 #define ClearPreloaderOverFlag(pFSM) _clearPreloaderOverFlag((FSM *)pFSM)}\par
25 {\cf21 #define GetData(pFSM) _getData((FSM*)pFSM)}\par
26 {\cf21 #define SetSignal(pFSM, signal) _setSignal((FSM*)pFSM, signal)}\par
27 \par
28 \par
29 \par
30 {\cf18 void} _stepFSM(FSM *pFSM);\par
31 {\cf20 /* --------------------------------- \'E7\'8A\'B6\'E6\'80\'81\'E6\'9C\'BA\'E4\'BF\'A1\'E6\'81\'AF\'E8\'8E\'B7\'E5\'8F\'96 -------------------------------- */}\par
32 {\cf18 int} getFSMCurState(FSM *pFSM);\par
33 {\cf18 int} getFSMNextState(FSM *pFSM);\par
34 {\cf18 void} setChildNum(FSM *pFSM, {\cf18 int} num);\par
35 {\cf18 void} registerChildFSM(FSM *parent, FSM *child, {\cf18 int} index);\par
36 \par
37 {\cf20 /* ------------------------------ Data\'E5\'92\'8CSignals ------------------------------ */}\par
38 {\cf17 const} {\cf18 void} *_getData(FSM* pFSM);\par
39 {\cf18 void} _setSignal(FSM *pFSM, Uint16 signalFlag);\par
40 \par
41 {\cf20 /* ---------------------------------- \'E9\'A2\'84\'E8\'A3\'85\'E8\'BD\'BD\'E5\'99\'A8 ---------------------------------- */}\par
42 {\cf18 void} *_preloadIn(FSM *pFSM);\par
43 {\cf18 void} _preloaderGetReady(FSM *pFSM);\par
44 {\cf18 int} _getPreloaderOverFlag(FSM *pFSM);\par
45 {\cf18 void} _clearPreloaderOverFlag(FSM *pFSM);\par
46 \par
47 \par
48 \par
49 {\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 <stdio.h>}\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 <stdio.h>}\par
7 {\cf21 #include <assert.h>}\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
templateFSM.h\par \pard\plain
{\tc\tcl2 \v FSM_OOP/template/templateFSM.h}
{\xe \v FSM_OOP/template/templateFSM.h}
{\bkmkstart AAAAAAAAAI}
{\bkmkend AAAAAAAAAI}
{
\pard\plain \s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid 1 {\cf21 #ifndef __TEMPLATE_FSM_H_}\par
2 {\cf21 #define __TEMPLATE_FSM_H_}\par
3 \par
4 {\cf20 /* -------------------------------------------------------------------------- */}\par
5 {\cf20 /* \'E6\'8F\'90\'E5\'89\'8D\'E5\'81\'9A\'E7\'B1\'BB\'E5\'9E\'8B\'E5\'A3\'B0\'E6\'98\'8E */}\par
6 {\cf20 /* -------------------------------------------------------------------------- */}\par
7 \par
8 \par
9 {\cf20 /* -------------------------------------------------------------------------- */}\par
10 {\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
11 {\cf20 /* -------------------------------------------------------------------------- */}\par
16 {\cf17 enum} TemplateFSMSignals\{\par
17 Signal_A = 1, \par
18 Signal_B,\par
19 \};\par
20 \par
25 {\cf17 typedef} {\cf17 struct }_templateFSMExternalData\par
26 \{\par
27 {\cf18 int} arrindex;\par
28 {\cf18 int} x;\par
29 \}TemplateFSMExternalData;\par
30 \par
31 \par
36 {\cf17 typedef} {\cf17 struct }_templateFSMInnerData\par
37 \{\par
38 {\cf18 int} y1;\par
39 {\cf18 int} inner1;\par
40 \}TemplateFSMInnerData;\par
41 \par
42 {\cf20 /* -------------------------------------------------------------------------- */}\par
43 {\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
44 {\cf20 /* -------------------------------------------------------------------------- */}\par
45 {\cf21 #define TemplateFSM_Input(pFSM) ((TemplateFSMExternalData *)_preloadIn((FSM *)pFSM))}\par
46 \par
47 {\cf17 typedef} {\cf17 struct }_templateFSMData\par
48 \{\par
49 TemplateFSMExternalData external;\par
50 TemplateFSMInnerData internal;\par
51 \}TemplateFSMData;\par
52 \par
53 {\cf17 typedef} {\cf17 struct }_TemplateFSM TemplateFSM;\par
54 TemplateFSM *createTemplateFSM();\par
55 \par
56 \par
57 {\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
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}
{
\pard\plain \s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid 1 {\cf21 #ifdef __TEMPLATE_PRIVATE_FSM_H_}\par
2 {\cf21 #error This file can only be included once!!!}\par
3 \par
4 {\cf21 #else}\par
5 {\cf21 #define __TEMPLATE_PRIVATE_FSM_H_}\par
6 \par
7 {\cf21 #include "FSM_protected.h"}\par
8 {\cf21 #include "templateFSM.h"}\par
9 {\cf21 #include <stdio.h>}\par
10 \par
11 {\cf20 /* -------------------------------------------------------------------------- */}\par
12 {\cf20 /* \'E7\'94\'A8\'E5\'88\'B0\'E7\'9A\'84\'E5\'A4\'96\'E9\'83\'A8\'E5\'8F\'98\'E9\'87\'8F */}\par
13 {\cf20 /* -------------------------------------------------------------------------- */}\par
14 {\cf17 extern} {\cf18 int} arrindex;\par
15 {\cf17 extern} {\cf18 int} x;\par
16 \par
17 \par
18 {\cf20 /* -------------------------------------------------------------------------- */}\par
19 {\cf20 /* \'E7\'BB\'A7\'E6\'89\'BF\'E5\'9F\'BA\'E7\'B1\'BB */}\par
20 {\cf20 /* -------------------------------------------------------------------------- */}\par
21 {\cf17 typedef} {\cf17 struct }_TemplateFSM\par
22 \{ \par
23 FSM base;\par
24 \}TemplateFSM;\par
25 \par
26 {\cf20 /* -------------------------------------------------------------------------- */}\par
27 {\cf20 /* \'E7\'8A\'B6\'E6\'80\'81\'E5\'AE\'9A\'E4\'B9\'89 */}\par
28 {\cf20 /* -------------------------------------------------------------------------- */}\par
29 {\cf17 typedef} {\cf17 enum} _State\par
30 \{\par
31 Idle,\par
32 D,\par
33 E,\par
34 \par
35 Count_State,\par
36 \} State;\par
37 {\cf21 #define DEFAULT_STATE E}\par
38 \par
39 {\cf20 /* -------------------------------------------------------------------------- */}\par
40 {\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
41 {\cf20 /* -------------------------------------------------------------------------- */}\par
42 \par
43 \par
44 {\cf17 static} State selectNextStateFcn(D)(TemplateFSMData *data, FSMSignals *signals)\{\par
45 {\cf19 if}(getSignal(signals, Signal_A))\{\par
46 signals->lastTriggeredSignal = Signal_A;\par
47 {\cf19 return} E;\par
48 \}\par
49 {\cf19 else} {\cf19 if}(arrindex == 0)\{\par
50 {\cf19 return} E;\par
51 \}\par
52 {\cf19 return} Idle;\par
53 \}\par
54 \par
55 {\cf17 static} State selectNextStateFcn(E)(TemplateFSMData *data, FSMSignals *signals)\{\par
56 {\cf19 if}(getSignal(signals, Signal_A))\{\par
57 signals->lastTriggeredSignal = Signal_A;\par
58 {\cf19 return} D;\par
59 \}\par
60 {\cf19 else} {\cf19 if}(x == 0)\{\par
61 {\cf19 return} D;\par
62 \}\par
63 {\cf19 return} Idle;\par
64 \}\par
65 \par
66 \par
67 \par
68 {\cf20 /* -------------------------------------------------------------------------- */}\par
69 {\cf20 /* \'E5\'AF\'B9\'E5\'BA\'94\'E7\'9A\'84 action, exit, during \'E5\'87\'BD\'E6\'95\'B0 */}\par
70 {\cf20 /* -------------------------------------------------------------------------- */}\par
71 {\cf17 static} {\cf18 void} actionFcn(enter, D)()\par
72 \{\par
73 FSM_LOG({\cf22 " enterD "});\par
74 \}\par
75 {\cf17 static} {\cf18 void} actionFcn(during, D)()\par
76 \{\par
77 FSM_LOG({\cf22 " duringD "});\par
78 \}\par
79 {\cf17 static} {\cf18 void} actionFcn(exit, D)()\par
80 \{\par
81 FSM_LOG({\cf22 " exitD "});\par
82 \}\par
83 \par
84 {\cf17 static} {\cf18 void} actionFcn(enter, E)()\par
85 \{\par
86 FSM_LOG({\cf22 " enterE "});\par
87 \}\par
88 {\cf17 static} {\cf18 void} actionFcn(during, E)()\par
89 \{\par
90 FSM_LOG({\cf22 " duringE "});\par
91 \}\par
92 {\cf17 static} {\cf18 void} actionFcn(exit, E)()\par
93 \{\par
94 FSM_LOG({\cf22 " exitE "});\par
95 \}\par
96 \par
97 \par
98 \par
99 {\cf20 /* -------------------------------------------------------------------------- */}\par
100 {\cf20 /* \'E8\'BD\'AC\'E7\'A7\'BB\'E5\'87\'BD\'E6\'95\'B0 */}\par
101 {\cf20 /* -------------------------------------------------------------------------- */}\par
102 {\cf17 static} {\cf18 void} transitionGeneralAction(TemplateFSMData *data)\{\par
103 FSM_LOG({\cf22 "general"});\par
104 \}\par
105 \par
106 {\cf17 static} {\cf18 void} transitionHandler(Idle, D)()\par
107 \{\par
108 FSM_LOG({\cf22 " Idle2D "});\par
109 \}\par
110 \par
111 {\cf17 static} {\cf18 void} transitionHandler(Idle, E)()\par
112 \{\par
113 FSM_LOG({\cf22 " Idle2E "});\par
114 \}\par
115 \par
116 {\cf17 static} {\cf18 void} transitionHandler(D, E)(TemplateFSMData *data, {\cf18 int} *delayedIndex)\par
117 \{\par
118 *delayedIndex = index(D, E);\par
119 FSM_LOG({\cf22 " D2E "});\par
120 \}\par
121 \par
122 {\cf17 static} {\cf18 void} transitionHandler(E, D)()\par
123 \{\par
124 FSM_LOG({\cf22 " E2D "});\par
125 \}\par
126 \par
127 \par
128 {\cf20 /* -------------------------------------------------------------------------- */}\par
129 {\cf20 /* \'E6\'89\'93\'E5\'8D\'B0\'E8\'B0\'83\'E8\'AF\'95 */}\par
130 {\cf20 /* -------------------------------------------------------------------------- */}\par
131 {\cf17 const} {\cf17 static} {\cf18 char} *stateStr[] = \{\par
132 {\cf22 "Idle"},\par
133 {\cf22 "D"},\par
134 {\cf22 "E"},\par
135 \};\par
136 \par
137 {\cf17 static} {\cf18 void} printFSM(TemplateFSM* pFSM)\{\par
138 FSM_LOG({\cf22 " \\tTemplateFSM: "});\par
139 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
140 \}\par
141 \par
142 \par
143 {\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}}
}