digraph homing {
    HOME_IDLE -> HOME_START [label="en EMCMOT_HOME(j)"];
    HOME_START -> HOME_IDLE [label="home compartido\nswitch cerrado"];
    HOME_START -> HOME_SET_SWITCH_POSITION [label="sin switch para este eje\nimmediato"];
    HOME_START -> HOME_INITIAL_SEARCH_START [label="de otra forma\ninmediato"];
    HOME_INITIAL_BACKOFF_START -> HOME_INITIAL_BACKOFF_WAIT [label="despues de HOME_DELAY"];
    HOME_INITIAL_BACKOFF_WAIT -> HOME_INITIAL_SEARCH_START [label="home_sw_fall"];
    HOME_INITIAL_SEARCH_START -> HOME_INITIAL_BACKOFF_START [label="despues de HOME_DELAY\nsi switch home cerrado\ninmediato"];
    HOME_INITIAL_SEARCH_START -> HOME_INITIAL_SEARCH_WAIT [label="despues de HOME_DELAY\nsi switch home abierto\ninmediato"];
    HOME_INITIAL_SEARCH_WAIT -> HOME_SET_COARSE_POSITION [label="home_sw_rise\ninmediato"];
    HOME_SET_COARSE_POSITION -> HOME_FINAL_BACKOFF_START [label="busqueda y enclavamiento\ntienen igual direccion\ninmediato"]
    HOME_SET_COARSE_POSITION -> HOME_FALL_SEARCH_START [label="busqueda y enclavamiento\ntienen direccion opuesta\ninmediato"]
    HOME_FINAL_BACKOFF_START -> HOME_FINAL_BACKOFF_WAIT [label="despues de HOME_DELAY"];
    HOME_FINAL_BACKOFF_WAIT -> HOME_RISE_SEARCH_START [label="home_sw_fall\ninmediato"];
    HOME_RISE_SEARCH_START -> HOME_RISE_SEARCH_WAIT [label="despues de HOME_DELAY"];
    HOME_RISE_SEARCH_WAIT -> HOME_INDEX_SEARCH_START [label="home_sw_rise\nHOME_USE_INDEX\ninmediato"]
    HOME_RISE_SEARCH_WAIT -> HOME_SET_SWITCH_POSITION [label="home_sw_rise\n!HOME_USE_INDEX\ninmediato"]
    HOME_FALL_SEARCH_START -> HOME_FALL_SEARCH_WAIT [label="despues de HOME_DELAY"];
    HOME_FALL_SEARCH_WAIT -> HOME_INDEX_SEARCH_START [label="home_sw_fall\nHOME_USE_INDEX\ninmediato"]
    HOME_FALL_SEARCH_WAIT -> HOME_SET_SWITCH_POSITION [label="home_sw_fall\n!HOME_USE_INDEX\ninmediato"]
    HOME_INDEX_SEARCH_START -> HOME_INDEX_SEARCH_WAIT [label="inmediato"];
    HOME_INDEX_SEARCH_WAIT -> HOME_SET_INDEX_POSITION [label="index encontrado\ninmediato"];
    HOME_SET_SWITCH_POSITION -> HOME_FINAL_MOVE_START [label="inmediato"];
    HOME_SET_INDEX_POSITION -> HOME_FINAL_MOVE_START [label="inmediato"];
    HOME_FINAL_MOVE_START -> HOME_FINAL_MOVE_WAIT [label="despues de HOME_DELAY"];
    HOME_FINAL_MOVE_WAIT -> HOME_ABORT [label="en limite"];
    HOME_FINAL_MOVE_WAIT -> HOME_FINISHED [label="posicion home alcanzada"];
    HOME_FINISHED -> HOME_IDLE;
    cualquiera -> HOME_ABORT [label="limite tocado\nfin de movimiento"]
    HOME_ABORT -> HOME_IDLE;
}
