digraph {
compound=true;
node [shape=Mrecord]
rankdir="LR"
Idle [label="Idle|entry / Function"];
DoorSelection [label="DoorSelection|entry / Function\nexit / Function"];
Step2_closeDoor [label="Step2_closeDoor|entry / Function\nexit / Function"];
Step3_openDoor [label="Step3_openDoor|entry / Function\nexit / Function"];
Step4_closeDoor [label="Step4_closeDoor|entry / Function\nexit / Function"];
Step5_open20Deg [label="Step5_open20Deg|entry / Function\nexit / Function"];
Step6_blockDoor [label="Step6_blockDoor|entry / Function\nexit / Function"];
Step7_driveTurning [label="Step7_driveTurning|entry / Function\nexit / Function"];
Step8_tightenScrew [label="Step8_tightenScrew|entry / Function\nexit / Function"];
Step9_calibration [label="Step9_calibration|entry / Function\nexit / Function"];
StepSuccess [label="StepSuccess|entry / Function"];
StepDeviceError [label="StepDeviceError|entry / Function"];
StepUserAbort [label="StepUserAbort|entry / Function"];

Idle -> DoorSelection [style="solid", label="StartCalibration"];
DoorSelection -> Step2_closeDoor [style="solid", label="UserConfirmation"];
DoorSelection -> StepUserAbort [style="solid", label="UserAbort"];
Step2_closeDoor -> Step3_openDoor [style="solid", label="UserConfirmation"];
Step2_closeDoor -> StepUserAbort [style="solid", label="UserAbort"];
Step3_openDoor -> Step4_closeDoor [style="solid", label="UserConfirmation"];
Step3_openDoor -> Step2_closeDoor [style="solid", label="DeviceRetry"];
Step3_openDoor -> StepUserAbort [style="solid", label="UserAbort"];
Step4_closeDoor -> Step5_open20Deg [style="solid", label="UserConfirmation"];
Step4_closeDoor -> StepUserAbort [style="solid", label="UserAbort"];
Step5_open20Deg -> Step6_blockDoor [style="solid", label="UserConfirmation"];
Step5_open20Deg -> StepUserAbort [style="solid", label="UserAbort"];
Step5_open20Deg -> StepDeviceError [style="solid", label="DeviceError"];
Step6_blockDoor -> Step7_driveTurning [style="solid", label="UserConfirmation"];
Step6_blockDoor -> Step2_closeDoor [style="solid", label="DeviceRetry"];
Step6_blockDoor -> StepUserAbort [style="solid", label="UserAbort"];
Step7_driveTurning -> Step8_tightenScrew [style="solid", label="DeviceTurningComplete"];
Step7_driveTurning -> Step5_open20Deg [style="solid", label="UserConfirmation"];
Step7_driveTurning -> StepUserAbort [style="solid", label="UserAbort"];
Step7_driveTurning -> StepDeviceError [style="solid", label="DeviceError"];
Step8_tightenScrew -> Step9_calibration [style="solid", label="UserConfirmation"];
Step8_tightenScrew -> StepUserAbort [style="solid", label="UserAbort"];
Step8_tightenScrew -> StepDeviceError [style="solid", label="DeviceError"];
Step9_calibration -> StepSuccess [style="solid", label="DeviceCalibrationComplete"];
Step9_calibration -> Step2_closeDoor [style="solid", label="DeviceRetry"];
Step9_calibration -> StepDeviceError [style="solid", label="DeviceError"];
StepSuccess -> Idle [style="solid", label="UserConfirmation"];
StepDeviceError -> Idle [style="solid", label="UserConfirmation"];
StepUserAbort -> Idle [style="solid", label="UserConfirmation"];
}