digraph txc_client {

    node
        [shape=Mrecord width=1.5];

    subgraph cluster_txc_xdmc {

        label="txc_xdmc";

        //
        // States (Nodes)
        //

        "txc_xdmc::Started"
            [label="{Started|Entry/\l&nbsp;&nbsp;&nbsp;state_set(txs_initialized);\l}"];

        "txc_xdmc::DISCONNECTED"
            [label="{DISCONNECTED|Entry/\l&nbsp;&nbsp;&nbsp;connection_set(0);\l}"];

        "txc_xdmc::CONNECTED"
            [label="{CONNECTED|Entry/\l&nbsp;&nbsp;&nbsp;connection_set(1);\l}"];

        "txc_xdmc::GET_XCAP_CAPS"
            [label="{GET_XCAP_CAPS|Entry/\l&nbsp;&nbsp;&nbsp;get_caps();\l}"];

        "txc_xdmc::GET_OMADIR"
            [label="{GET_OMADIR|Entry/\l&nbsp;&nbsp;&nbsp;get_omadir();\l}"];

        "txc_xdmc::GET_RLIST"
            [label="{GET_RLIST|Entry/\l&nbsp;&nbsp;&nbsp;get_rlist();\l}"];

        "txc_xdmc::GET_RLS"
            [label="{GET_RLS|Entry/\l&nbsp;&nbsp;&nbsp;get_rls();\l}"];

        "txc_xdmc::GET_OMAPRES"
            [label="{GET_OMAPRES|Entry/\l&nbsp;&nbsp;&nbsp;get_omapres();\l}"];

        "txc_xdmc::GET_IETFPRES"
            [label="{GET_IETFPRES|Entry/\l&nbsp;&nbsp;&nbsp;get_ietfpres();\l}"];

        "txc_xdmc::GET_OMAPRESCONT"
            [label="{GET_OMAPRESCONT|Entry/\l&nbsp;&nbsp;&nbsp;get_omaprescont();\l}"];

        "%start"
            [label="" shape=circle style=filled fillcolor=black width=0.25];

        //
        // Transitions (Edges)
        //

        "txc_xdmc::Started" -> "txc_xdmc::GET_XCAP_CAPS"
            [label="Connect()/\l"];

        "txc_xdmc::GET_XCAP_CAPS" -> "txc_xdmc::DISCONNECTED"
            [label="Failure()/\l"];

        "txc_xdmc::GET_XCAP_CAPS" -> "txc_xdmc::GET_OMADIR"
            [label="Success()\l\[TXC_XDMC_FIRSTTIME(getOwner(fsm))\]/\l"];

        "txc_xdmc::GET_XCAP_CAPS" -> "txc_xdmc::CONNECTED"
            [label="Success()\l\[!TXC_XDMC_FIRSTTIME(getOwner(fsm))\]/\l"];

        "txc_xdmc::GET_OMADIR" -> "txc_xdmc::GET_RLIST"
            [label="Success()\l\[TXC_XDMC_FIRSTTIME(getOwner(fsm))\]/\l"];

        "txc_xdmc::GET_OMADIR" -> "txc_xdmc::GET_RLIST"
            [label="Failure()\l\[TXC_XDMC_FIRSTTIME(getOwner(fsm))\]/\l"];

        "txc_xdmc::GET_OMADIR" -> "txc_xdmc::CONNECTED"
            [label="Default()/\l"];

        "txc_xdmc::GET_RLIST" -> "txc_xdmc::GET_RLS"
            [label="Success()\l\[TXC_XDMC_FIRSTTIME(getOwner(fsm))\]/\l"];

        "txc_xdmc::GET_RLIST" -> "txc_xdmc::GET_RLS"
            [label="Failure()\l\[TXC_XDMC_FIRSTTIME(getOwner(fsm))\]/\l"];

        "txc_xdmc::GET_RLIST" -> "txc_xdmc::CONNECTED"
            [label="Default()/\l"];

        "txc_xdmc::GET_RLS" -> "txc_xdmc::GET_OMAPRES"
            [label="Success()\l\[TXC_XDMC_FIRSTTIME(getOwner(fsm))\]/\l"];

        "txc_xdmc::GET_RLS" -> "txc_xdmc::GET_OMAPRES"
            [label="Failure()\l\[TXC_XDMC_FIRSTTIME(getOwner(fsm))\]/\l"];

        "txc_xdmc::GET_RLS" -> "txc_xdmc::CONNECTED"
            [label="Default()/\l"];

        "txc_xdmc::GET_OMAPRES" -> "txc_xdmc::GET_OMAPRESCONT"
            [label="Success()\l\[TXC_XDMC_FIRSTTIME(getOwner(fsm))\]/\l"];

        "txc_xdmc::GET_OMAPRES" -> "txc_xdmc::GET_IETFPRES"
            [label="Failure()\l\[TXC_XDMC_FIRSTTIME(getOwner(fsm))\]/\l"];

        "txc_xdmc::GET_OMAPRES" -> "txc_xdmc::CONNECTED"
            [label="Default()/\l"];

        "txc_xdmc::GET_IETFPRES" -> "txc_xdmc::GET_OMAPRESCONT"
            [label="Success()\l\[TXC_XDMC_FIRSTTIME(getOwner(fsm))\]/\l"];

        "txc_xdmc::GET_IETFPRES" -> "txc_xdmc::GET_OMAPRESCONT"
            [label="Failure()\l\[TXC_XDMC_FIRSTTIME(getOwner(fsm))\]/\l"];

        "txc_xdmc::GET_IETFPRES" -> "txc_xdmc::CONNECTED"
            [label="Default()/\l"];

        "txc_xdmc::GET_OMAPRESCONT" -> "txc_xdmc::CONNECTED"
            [label="Default()/\l"];

        "%start" -> "txc_xdmc::Started"
    }

}
