HSM的ENTRY和EXIT信号处理过程

一直对QP的HSM中ENTRY和EXIT信号的实现有点迷惑,总觉得写了ENTRY的信号处理代码,可怎么去调用它呢?仔细阅读了一下,理清了头绪。

大体有三步来完成:

 

1、定义系统默认的信号。

2、定义处理信号宏。QEP_TRIG宏用当前信号调用state所指向的状态(函数指针),来处理信号,比如ENTRY信号,如果当前状态为Calc_on,则在该状态下调用ENTRY信号的处理函数。QEP_EXIT和QEP_ENTER则分别是针对信号EXIT和ENTRY的处理函数。

3、触发信号。有了信号的定义和具体的调用宏,那剩下的就是何时触发该信号了。这部分工作在dispatch函数(QHsm_dispatch)中完成。

该函数的功能就是分发信号进行处理,如果当前状态处理不了,则交给上一级状态处理,如此循环,直至被处理或者到达TOP状态被ignored。如果信号在某一层被处理,出现状态转换,则首先根据路径执行EXIT信号,然后在依次进入目标状态,执行ENTRY信号。具体参见代码qhsm_dis.c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值