Doubango的FSM模块终结版

一:Doubango的状态机--FSM

      对于FSM的所有状态和使用将使得对于Doubango更能很好的实现裁剪和使用。状态(state),还事件(action),对事件的处理(exec)。主要的代码在tsk_fsm.c/h中,tinySAK

二:FSM的常用结构体

三:FSM的建立过程和代码实现

3.1 FSM的使用的建立过程和调用的API

   1、调用tsk_fsm_create创建一个状态机,两个参数分别是起始状态(current)和结束状态(term)。

   2、调用tsk_fsm_set_callback_terminated来设置callback_term和callback_data.

   3、调用tsk_fsm_set来初始化fsm。这一步设置fsm_entrys,查看一下TSK_FSM_ADD宏还有调用的地方,看看如何使用的。

   4、至此状态机初始化完成,之后调用tsk_fsm_act来为fsm输入事件和数据。

3.2 FSM的建立的TEST的程序

从测试的代码中可以看出,总共有四个步骤:创建,设置和最后act。具体的状态机待续。

3.3 FSM的使用总结

     FSM的使用就像开始说的一样,是整个的Doubango的裁剪和使用的关键。原因在于:所有的细节处理都是在FSM的设置里面。首先将需要设置的action的整个处理状态所对应的函数接口申请一个entry的结构体,里面包含了所有的from,cond(此处的cond在doubango中都是cond_always的,即每次都是能够从from  to to ), to, action,在处理的过程中判断一些是否需要处理当前状态,即每个状态机都有一个terminate status。从而实现SIP 的各个register event的处理和使用。附上总结的流程图,具体的可以找一下register的先注册fsm的entry,将挂在传输层的entry list中,然后再调用fsm act时根据action具体处理相应的事件。

学好FSM 真的是能够从整体上感知到Doubango的整体的处理流程。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值