2008-07-27 01:54:58 +02:00
/*
*
* Author Karsten Keil < kkeil @ novell . com >
*
* Thanks to Jan den Ouden
* Fritz Elfert
* Copyright 2008 by Karsten Keil < kkeil @ novell . com >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
*/
# ifndef _MISDN_FSM_H
# define _MISDN_FSM_H
# include <linux/timer.h>
/* Statemachine */
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 ;
} ;
2017-08-11 15:57:22 +03:00
extern int mISDN_FsmNew ( struct Fsm * , struct FsmNode * , int ) ;
2008-07-27 01:54:58 +02:00
extern void mISDN_FsmFree ( struct Fsm * ) ;
extern int mISDN_FsmEvent ( struct FsmInst * , int , void * ) ;
extern void mISDN_FsmChangeState ( struct FsmInst * , int ) ;
extern void mISDN_FsmInitTimer ( struct FsmInst * , struct FsmTimer * ) ;
extern int mISDN_FsmAddTimer ( struct FsmTimer * , int , int , void * , int ) ;
extern void mISDN_FsmRestartTimer ( struct FsmTimer * , int , int , void * , int ) ;
extern void mISDN_FsmDelTimer ( struct FsmTimer * , int ) ;
# endif