定义状态机

abloz 2005-07-18
2005-07-18

 

** 


enum {

state1

= 0,

         state2,

state_num

};

enum {

event1

= 0,

         event2, 

event_num

};

 

typedef void (* pFunction)(void* param);

struct FSM

{

     pFunction function1;

     pFunction function2;

};

 

void MyFunction1(void* p1)

{

  //xxx

};

 

void MyFunction2(void* p2)

{

 //xxx

}

 

 

FSM state_machine[state_num][event_num] =

{

           {//上一个状态0

               {event1,MyFunction1,NULL} ,

               {event2,NULL,NULL}

            } ,

                       

            {//上一个状态1

               {event1,MyFunction1,NULL} ,

               {event2,NULL,MyFunction2}

            } 

                     

};

 

void state_function(int iOldStateNum,int iEventNum)

{

      FSM fsm = state_machine[iOldStateNum][iEventNum];

      if(NULL != fsm->function1)

     {

           fsm->function1();

     }

}


如非注明转载, 均为原创. 本站遵循知识共享CC协议,转载请注明来源