#State transition diagram of the CAN Driver

blockdiag can_state_transition_diagram {

    orientation = landscape;
    default_fontsize = 18;
    node_width = 180;
    node_height = 40;
    span_width = 100;
    span_height = 40;

    #First Row
    bus_off [label = "Bus-Off"];
    recovering [label = "Recovering"];
    #Second Row
    uninstalled [label = "Uninstalled"];
    stopped [label = "Stopped"];
    running [label = "Running"];
    app_start[label = "Entry", shape = beginpoint];

    bus_off -> uninstalled [folded, thick, fontsize = 14, label = "F"];
    bus_off -> recovering [thick, fontsize = 14, label = "G"];
    recovering -> stopped [folded, thick, color = blue, fontsize = 14, label = "H"];
    
    uninstalled <-> stopped [thick, fontsize = 14, label = "A/B"];
    stopped <-> running [thick, fontsize = 14, label = "C/D"];
    running -> bus_off [folded, thick, color = red, fontsize = 14, label = "E"];
    
    app_start -> uninstalled [folded, style = dashed]
}

