我正在开发一个需要我实施 2oo3 投票的安全系统。我大致有一个使用状态机使用函数指针来实现它的想法。假设有 3 个系统 AB C。关于 A,C 是左系统,B 是右系统 对于 B,A 是左系统,C 是右系统 对于 C,B 是左系统,C 是右系统系统
对于系统做出的每一个决定,它都应该使函数指针指向“与左系统交换数据”函数。数据发送到左系统后,它将指向一个虚拟函数并等待左系统回复。
当左系统回复并且它的决定(左系统)也同意系统(我的系统)做出的决定时,它将进入下一个状态。如果不同意,则应重复“与正确的系统交换数据”并继续。
我的疑问是因为我不想使用标志来实现状态转换控制,使用函数指针的实现是否可以,因为 MISRA 2004 以后没有说不使用函数指针?
上述 2oo3 实现的方法是否可行,或者还有其他需要注意的事项吗?
是否有任何其他方法来实现 2oo3 架构(每个系统做出的决定没有外部比较器。也就是说,每个 uC 应自己形成一个决定并与其他 2 协商它的决定。它不会将其决定放在外部比较器中(例如:共享内存、基于 fpga 的比较器等)供其他 2 个系统访问和比较)??
如果我错误地接近它,请原谅我。我是这个的新手。
(注:3 个系统只有微控制器)
更新:@Lundin 在这里添加了一些有用的点 -没有函数指针的状态机设计