/* vending machine */

digraph {
  pad=0.5; bgcolor="lightgrey";
  node [shape="box"; style="filled";  fillcolor="cyan"];
  edge [labelfontsize=10; minlen=2; labeldistance=4;  ];
  VEND_IDLE -> VEND_PRE_SHOW [taillabel="EVT_SELECT_BUTTON"];
  VEND_PRE_SHOW -> VEND_IDLE [taillabel="EVT_TIMER"];
  VEND_PRE_SHOW -> VEND_DISPENSE [taillabel="EVT_PAYMENT"];
  VEND_IDLE -> VEND_WAIT_SELECT [taillabel="EVT_PAYMENT"];
  VEND_WAIT_SELECT -> VEND_DISPENSE [taillabel="EVT_SELECT_BUTTON"];
  VEND_DISPENSE -> VEND_PRODUCT_READY [taillabel="EVT_DISPENSE_COMPLETE"];
  VEND_PRODUCT_READY -> VEND_IDLE [taillabel="EVT_BIN_EMPTY"];
  VEND_IDLE [label="VEND_IDLE\ndisplay attraction mode"];
  VEND_PRE_SHOW [label="VEND_PRE_SHOW\nrequest payment"];
  VEND_WAIT_SELECT [label="VEND_WAIT_SELECT\nrequest selection"];
  VEND_DISPENSE [label="VEND_DISPENSE\noperate motor"];
  VEND_PRODUCT_READY [label="VEND_PRODUCT_READY\nuser can remove product"];
}