1 源码
rstplib.1.1.02/statmch.c,statmch.h
2 功能
提供了快速生成树中所有状态机的一个抽象,类似于面向对象编程中的基类。
3 代码简析
3.1 数据结构
/* 通用状态机 */
typedef struct state_mach_t {
struct state_mach_t* next; // 下一状态机
Bool changeState; // 状态变化标志
unsigned int State; // 当前状态
void (* concreteEnterState) (struct state_mach_t * ); // 执行进入某状态后的固定动作
Bool (* concreteCheckCondition) (struct state_mach_t * ); // 检查状态倒换条件并完成状态倒换
union {
struct stpm_t* stpm; // 指向本状态机所属网桥
struct port_t* port; // 指向本状态机所属端口
void * owner; // 指向本状态机的创建者,可能是某端口,也可能是某网桥
} owner;
} STATE_MACH_T;
3.2 核心宏
/* 将某具体状态机(由WHAT填入状态机名称,加##不展开WHAT,参见《宏中"#"和"##"的用法》)添加到