\doxysection{FSM\+\_\+\+OOP/template/template\+FSM.c File Reference} \hypertarget{template_f_s_m_8c}{}\label{template_f_s_m_8c}\index{FSM\_OOP/template/templateFSM.c@{FSM\_OOP/template/templateFSM.c}} 重新实现几个必须实现的函数,并赋值到父类指针里 {\ttfamily \#include $<$stdio.\+h$>$}\newline {\ttfamily \#include $<$stdlib.\+h$>$}\newline {\ttfamily \#include $<$string.\+h$>$}\newline {\ttfamily \#include "{}FSM\+\_\+protected.\+h"{}}\newline {\ttfamily \#include "{}template\+FSM.\+h"{}}\newline {\ttfamily \#include "{}template\+FSM\+\_\+private.\+h"{}}\newline \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item static void \mbox{\hyperlink{template_f_s_m_8c_a9e6eba3b03d1ff4c504705b2da864cb3}{load\+External\+Data}} (Template\+FSMData \texorpdfstring{$\ast$}{*}data) \item static void \mbox{\hyperlink{template_f_s_m_8c_a7ae1c0974bb8e7f8b00f959a17d91f60}{reset\+Signals}} (\mbox{\hyperlink{struct_f_s_m_signals}{FSMSignals}} \texorpdfstring{$\ast$}{*}signals, Template\+FSMData \texorpdfstring{$\ast$}{*}data) \begin{DoxyCompactList}\small\item\em 根据条件重置信号 \end{DoxyCompactList}\item static void \mbox{\hyperlink{template_f_s_m_8c_a5ebc219bfad056d35b189b8e6fa94896}{init\+Data}} (Template\+FSM \texorpdfstring{$\ast$}{*}p\+FSM) \begin{DoxyCompactList}\small\item\em 给所有内部、外部数据分配堆空间 \end{DoxyCompactList}\item static void \mbox{\hyperlink{template_f_s_m_8c_a8b945e9059bb82bf66884af5133eb898}{init\+Data\+Loader}} (Template\+FSM \texorpdfstring{$\ast$}{*}p\+FSM) \item static void \mbox{\hyperlink{template_f_s_m_8c_a48fc6ebf7882fb5d4437c4d64b96255b}{setup\+Handler}} (\mbox{\hyperlink{struct_f_s_m_handler}{FSMHandler}} \texorpdfstring{$\ast$}{*}fcns) \begin{DoxyCompactList}\small\item\em 设置状态选择函数、状态内函数和状态转移函数 \end{DoxyCompactList}\item static void \mbox{\hyperlink{template_f_s_m_8c_ac23edf7d09bf4b52ca0cfbc1224c4c0d}{step}} (Template\+FSM \texorpdfstring{$\ast$}{*}p\+FSM) \begin{DoxyCompactList}\small\item\em 重新实现基类的step函数,添加一些打印信息 \end{DoxyCompactList}\item Template\+FSM \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{template_f_s_m_8c_ab0fc4d91dbcaaffccd8f14e56173d696}{create\+Template\+FSM}} () \begin{DoxyCompactList}\small\item\em Create a Template FSM object. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection{Detailed Description} 重新实现几个必须实现的函数,并赋值到父类指针里 \begin{DoxyAuthor}{Author} 天神 (\href{mailto:dalaoshi@stu.xjtu.edu.cn}{\texttt{ dalaoshi@stu.\+xjtu.\+edu.\+cn}}) \end{DoxyAuthor} \begin{DoxyVersion}{Version} 2.\+1 \end{DoxyVersion} \begin{DoxyDate}{Date} 2024-\/05-\/07 \end{DoxyDate} \begin{DoxyCopyright}{Copyright} 天神创意无限公司 2024 \end{DoxyCopyright} \doxysubsection{Function Documentation} \Hypertarget{template_f_s_m_8c_a9e6eba3b03d1ff4c504705b2da864cb3}\label{template_f_s_m_8c_a9e6eba3b03d1ff4c504705b2da864cb3} \index{templateFSM.c@{templateFSM.c}!loadExternalData@{loadExternalData}} \index{loadExternalData@{loadExternalData}!templateFSM.c@{templateFSM.c}} \doxysubsubsection{\texorpdfstring{loadExternalData()}{loadExternalData()}} {\footnotesize\ttfamily static void load\+External\+Data (\begin{DoxyParamCaption}\item[{Template\+FSMData \texorpdfstring{$\ast$}{*}}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyRefDesc}{Deprecated} \item[\mbox{\hyperlink{deprecated__deprecated000016}{Deprecated}}]暂时没用,后续考虑data是否需要加锁再说 \end{DoxyRefDesc} \begin{DoxyParams}{Parameters} {\em data} & 主要是外部数据 \\ \hline \end{DoxyParams} \Hypertarget{template_f_s_m_8c_a7ae1c0974bb8e7f8b00f959a17d91f60}\label{template_f_s_m_8c_a7ae1c0974bb8e7f8b00f959a17d91f60} \index{templateFSM.c@{templateFSM.c}!resetSignals@{resetSignals}} \index{resetSignals@{resetSignals}!templateFSM.c@{templateFSM.c}} \doxysubsubsection{\texorpdfstring{resetSignals()}{resetSignals()}} {\footnotesize\ttfamily static void reset\+Signals (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_f_s_m_signals}{FSMSignals}} \texorpdfstring{$\ast$}{*}}]{signals, }\item[{Template\+FSMData \texorpdfstring{$\ast$}{*}}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} 根据条件重置信号 清除被响应信号和所有小于被响应信号优先级的信号,具体可以参考notion \begin{DoxyParams}{Parameters} {\em signals} & 状态机接收到的信号 \\ \hline {\em data} & 状态机数据 \\ \hline \end{DoxyParams} \Hypertarget{template_f_s_m_8c_a5ebc219bfad056d35b189b8e6fa94896}\label{template_f_s_m_8c_a5ebc219bfad056d35b189b8e6fa94896} \index{templateFSM.c@{templateFSM.c}!initData@{initData}} \index{initData@{initData}!templateFSM.c@{templateFSM.c}} \doxysubsubsection{\texorpdfstring{initData()}{initData()}} {\footnotesize\ttfamily static void init\+Data (\begin{DoxyParamCaption}\item[{Template\+FSM \texorpdfstring{$\ast$}{*}}]{p\+FSM }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} 给所有内部、外部数据分配堆空间 \begin{DoxyParams}{Parameters} {\em p\+FSM} & \\ \hline \end{DoxyParams} \Hypertarget{template_f_s_m_8c_a8b945e9059bb82bf66884af5133eb898}\label{template_f_s_m_8c_a8b945e9059bb82bf66884af5133eb898} \index{templateFSM.c@{templateFSM.c}!initDataLoader@{initDataLoader}} \index{initDataLoader@{initDataLoader}!templateFSM.c@{templateFSM.c}} \doxysubsubsection{\texorpdfstring{initDataLoader()}{initDataLoader()}} {\footnotesize\ttfamily static void init\+Data\+Loader (\begin{DoxyParamCaption}\item[{Template\+FSM \texorpdfstring{$\ast$}{*}}]{p\+FSM }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \begin{DoxyRefDesc}{Deprecated} \item[\mbox{\hyperlink{deprecated__deprecated000017}{Deprecated}}]弃用 \end{DoxyRefDesc} \begin{DoxyParams}{Parameters} {\em p\+FSM} & \\ \hline \end{DoxyParams} \Hypertarget{template_f_s_m_8c_a48fc6ebf7882fb5d4437c4d64b96255b}\label{template_f_s_m_8c_a48fc6ebf7882fb5d4437c4d64b96255b} \index{templateFSM.c@{templateFSM.c}!setupHandler@{setupHandler}} \index{setupHandler@{setupHandler}!templateFSM.c@{templateFSM.c}} \doxysubsubsection{\texorpdfstring{setupHandler()}{setupHandler()}} {\footnotesize\ttfamily static void setup\+Handler (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_f_s_m_handler}{FSMHandler}} \texorpdfstring{$\ast$}{*}}]{fcns }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} 设置状态选择函数、状态内函数和状态转移函数 \begin{DoxyParams}{Parameters} {\em fcns} & 状态机函数表 \\ \hline \end{DoxyParams} \Hypertarget{template_f_s_m_8c_ac23edf7d09bf4b52ca0cfbc1224c4c0d}\label{template_f_s_m_8c_ac23edf7d09bf4b52ca0cfbc1224c4c0d} \index{templateFSM.c@{templateFSM.c}!step@{step}} \index{step@{step}!templateFSM.c@{templateFSM.c}} \doxysubsubsection{\texorpdfstring{step()}{step()}} {\footnotesize\ttfamily static void step (\begin{DoxyParamCaption}\item[{Template\+FSM \texorpdfstring{$\ast$}{*}}]{p\+FSM }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} 重新实现基类的step函数,添加一些打印信息 \begin{DoxyParams}{Parameters} {\em p\+FSM} & 子类状态机指针 \\ \hline \end{DoxyParams} \Hypertarget{template_f_s_m_8c_ab0fc4d91dbcaaffccd8f14e56173d696}\label{template_f_s_m_8c_ab0fc4d91dbcaaffccd8f14e56173d696} \index{templateFSM.c@{templateFSM.c}!createTemplateFSM@{createTemplateFSM}} \index{createTemplateFSM@{createTemplateFSM}!templateFSM.c@{templateFSM.c}} \doxysubsubsection{\texorpdfstring{createTemplateFSM()}{createTemplateFSM()}} {\footnotesize\ttfamily Template\+FSM \texorpdfstring{$\ast$}{*} create\+Template\+FSM (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} Create a Template FSM object. 子类状态机细节对外隐藏,外部只能访问基类的公有函数来操作子类变量 \begin{DoxyReturn}{Returns} Template\+FSM\texorpdfstring{$\ast$}{*} \end{DoxyReturn}