fsm.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
- /* $Id: fsm.h,v 1.1.2.1 2001/11/20 14:19:35 kai Exp $
- *
- * Finite state machine
- *
- * Author Karsten Keil
- * Copyright by Karsten Keil <keil@isdn4linux.de>
- * by Kai Germaschewski <kai.germaschewski@gmx.de>
- *
- * This software may be used and distributed according to the terms
- * of the GNU General Public License, incorporated herein by reference.
- *
- */
- #ifndef __FSM_H__
- #define __FSM_H__
- #include <linux/timer.h>
- struct FsmInst;
- typedef void (* FSMFNPTR)(struct FsmInst *, int, void *);
- struct Fsm {
- FSMFNPTR *jumpmatrix;
- int state_count, event_count;
- char **strEvent, **strState;
- };
- struct FsmInst {
- struct Fsm *fsm;
- int state;
- int debug;
- void *userdata;
- int userint;
- void (*printdebug) (struct FsmInst *, char *, ...);
- };
- struct FsmNode {
- int state, event;
- void (*routine) (struct FsmInst *, int, void *);
- };
- struct FsmTimer {
- struct FsmInst *fi;
- struct timer_list tl;
- int event;
- void *arg;
- };
- int FsmNew(struct Fsm *fsm, struct FsmNode *fnlist, int fncount);
- void FsmFree(struct Fsm *fsm);
- int FsmEvent(struct FsmInst *fi, int event, void *arg);
- void FsmChangeState(struct FsmInst *fi, int newstate);
- void FsmInitTimer(struct FsmInst *fi, struct FsmTimer *ft);
- int FsmAddTimer(struct FsmTimer *ft, int millisec, int event,
- void *arg, int where);
- void FsmRestartTimer(struct FsmTimer *ft, int millisec, int event,
- void *arg, int where);
- void FsmDelTimer(struct FsmTimer *ft, int where);
- #endif