1blockdiag download_procedure_diagram { 2 node_height = 40; 3 node_width = 150; 4 span_width = 40; 5 span_height = 45; 6 default_fontsize = 12 7 orientation = portrait; 8 edge_layout = flowchart; 9 default_group_color = none; 10 11 // nodes 12 start [label = "Start", shape = flowchart.terminator]; 13 sync [label = "Synchronization", shape = box]; 14 success_cond [label = "Success?", shape = flowchart.condition]; 15 erase_data [label = "Erase data", shape = box]; 16 transmit_data [label = "Transmit data", shape = box]; 17 finish_cond [label = "Finish?", shape = flowchart.condition]; 18 transmit_finish [label = "Transmit finish frame", shape = box]; 19 finish [label = "Finish", shape = flowchart.terminator]; 20 // fake nodes to adjust shape and edge label position 21 succ_fin [shape = none]; 22 fincon_fin [shape = none]; 23 24 // edges 25 start -> sync -> success_cond; 26 success_cond -> erase_data [label = "Yes"]; 27 erase_data -> transmit_data; 28 transmit_data -> finish_cond; 29 success_cond -- succ_fin [label = "Timeout"]; 30 finish_cond -> transmit_finish [label = "Yes"]; 31 finish_cond -- fincon_fin [label = "Failure"]; 32 succ_fin -- fincon_fin; 33 fincon_fin -> finish; 34 transmit_finish -> finish; 35 36 // group 37 group{transmit_finish, fincon_fin}; 38 group{erase_data, succ_fin}; 39} 40