/// object FSM's states
enum OBJ_STATES {
        OBJ_STATE_INIT,
        OBJ_STATE_1,
        OBJ_STATE_2,
        ...
};

/// object FSM container
struct obj_fsm {
        enum OBJ_STATES state;    ///< current state
        char var1;                ///< variable 1
        char var2;                ///< variable 2
        ...
};

/// actual object FSM
static struct obj_fsm obj_fsm;

/// initialize object
void init_obj (void)
{
        obj_fsm.state = OBJ_STATE_INIT;
}

/// update object FSM state
void update_obj (void)
{
        switch (obj_fsm.state) {

        case OBJ_STATE_INIT:
                ...
                obj_fsm.state = OBJ_STATE_1;
                break;

        case OBJ_STATE_1:
                ...
        }
}