These are the state transitions tables produced by ZMech for the crisis.ipd state diagram.


void    enter_crisis_level_0(EVENT, STATE, STATE, int, int, int, int);
void    enter_crisis_level_1(EVENT, STATE, STATE, int, int, int, int);
void    enter_crisis_level_2(EVENT, STATE, STATE, int, int, int, int);
void    enter_situation_normal(EVENT, STATE, STATE, int, int, int, int);

struct EVENT_DISPATCH_TABLE
    event_dispatch_tbl[] =
{
    { event_000, state_001, state_002, enter_crisis_level_0,   crisis_level_0_state,   75, 100 },
    { event_000, state_005, state_003, enter_crisis_level_1,   crisis_level_1_state,   76, 101 },
    { event_000, state_006, state_004, enter_crisis_level_2,   crisis_level_2_state,   77, 102 },
    { event_000, state_007, state_008, enter_crisis_level_2,   crisis_level_2_state,   78, 106 },
    { event_001, state_002, state_001, enter_situation_normal, situation_normal_state, 79,  99 },
    { event_001, state_003, state_005, enter_crisis_level_1,   crisis_level_1_state,   80, 103 },
    { event_001, state_008, state_007, enter_crisis_level_2,   crisis_level_2_state,   81, 105 },
    { event_001, state_004, state_006, enter_crisis_level_2,   crisis_level_2_state,   82, 104 },
    { event_002, state_002, state_003, enter_crisis_level_1,   crisis_level_1_state,   83, 101 },
    { event_002, state_008, state_004, enter_crisis_level_2,   crisis_level_2_state,   84, 102 },
    { event_002, state_001, state_005, enter_crisis_level_1,   crisis_level_1_state,   85, 103 },
    { event_002, state_007, state_006, enter_crisis_level_2,   crisis_level_2_state,   86, 104 },
    { event_003, state_005, state_001, enter_situation_normal, situation_normal_state, 87,  99 },
    { event_003, state_006, state_007, enter_crisis_level_2,   crisis_level_2_state,   88, 105 },
    { event_003, state_004, state_008, enter_crisis_level_2,   crisis_level_2_state,   89, 106 },
    { event_003, state_003, state_002, enter_crisis_level_0,   crisis_level_0_state,   90, 100 },
    { event_004, state_003, state_004, enter_crisis_level_2,   crisis_level_2_state,   91, 102 },
    { event_004, state_005, state_006, enter_crisis_level_2,   crisis_level_2_state,   92, 104 },
    { event_004, state_002, state_008, enter_crisis_level_2,   crisis_level_2_state,   93, 106 },
    { event_004, state_001, state_007, enter_crisis_level_2,   crisis_level_2_state,   94, 105 },
    { event_005, state_007, state_001, enter_situation_normal, situation_normal_state, 95,  99 },
    { event_005, state_008, state_002, enter_crisis_level_0,   crisis_level_0_state,   96, 100 },
    { event_005, state_006, state_005, enter_crisis_level_1,   crisis_level_1_state,   97, 103 },
    { event_005, state_004, state_003, enter_crisis_level_1,   crisis_level_1_state,   98, 101 },
};


#define event_tbl_len 24

NOTE: In this instance the state transition functions are prefixed by "enter_" and the state functions are prefixed by "crisis_level_" (except for the state function "situation_normal_state"). The code for these functions is supplied by the developer in the form of a C function and their names are entered as part of the state diagram. The state transition function is called by the state machine dispatcher to perform a specific task depending on the state transition i.e. in response to an event. The state function is repeatedly called by the state machine dispatcher to perform a specific task depending on the current state when there are no events outstanding. All the code supplied and generated will allow the state machine to be downloaded and run directly by an embedded micro controller.