2003 lines
97 KiB
Plaintext
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}}
|
||
|
}
|