# misc_ITC.dot
#
# N.B.  Although dot(1) doesn't care (much) about white space,
#       bin/idf_d2d DOES.  So, check before editing...
#
# Written by Rich Morin <rdm@slac.stanford.edu>

digraph G {
  label="\nSource (EPU 0) to Spacecraft\n"
  margin="0.1"
  node[ fontname="Arial", fontsize="9", height=0.25, width=0.375 ];
  ranksep="0.2";
  rankdir="LR";

    DTe0         [ style="solid",
                   shape="ellipse",       label="Dest.\n(EPU 0)",
                   URL="#",
                   tooltip="Destination Task on EPU 0"                     ];

    STe0         [ style="solid,filled",
                   shape="ellipse",       label="Source\n(EPU 0)",
                   URL="#",
                   tooltip="Source Task on EPU 0"                          ];

    DTe1         [ style="solid",
                   shape="ellipse",       label="Dest.\n(EPU 1)",
                   URL="#",
                   tooltip="Destination Task on EPU 1"                     ];

    STe1         [ style="solid",
                   shape="ellipse",       label="Source\n(EPU 1)",
                   URL="#",
                   tooltip="Source Task on EPU 1"                          ];

    DTs          [ style="solid",
                   shape="ellipse",       label="Dest.\n(SIU)",
                   URL="#",
                   tooltip="Destination Task on SIU"                       ];

    STs          [ style="solid",
                   shape="ellipse",       label="Source\n(SIU)",
                   URL="#",
                   tooltip="Source Task on SIU"                            ];

    LCBe0        [ style="solid,filled",
                   shape="doubleoctagon", label="LCB\n(EPU 0)",
                   URL="#",
                   tooltip="LAT Communication Board for EPU 0"             ];

    LCBe1        [ style="solid",
                   shape="doubleoctagon", label="LCB\n(EPU 1)",
                   URL="#",
                   tooltip="LAT Communication Board for EPU 1"             ];

  { rank=same;
    EB           [ style="solid,filled",
                   shape="doubleoctagon", label="EB",
                   URL="#",
                   tooltip="Event Builder"                                 ];

    LI           [ style="solid",
                   shape="doubleoctagon", label="LAT",
                   URL="#",
                   tooltip="Large Area Telescope"                          ];

    SSR          [ style="solid",
                   shape="doubleoctagon", label="SSR",
                   URL="#",
                   tooltip="Solid State Recorder"                          ];
  }

    dLCBe0       [ style="solid,filled",
                   shape="ellipse",       label="dLCB\n(EPU 0)",
                   URL="#",
                   tooltip="LCB driver on EPU 0"                           ];

    dLCBe1       [ style="solid",
                   shape="ellipse",       label="dLCB\n(EPU 1)",
                   URL="#",
                   tooltip="LCB driver on EPU 1"                           ];

    dLCBs        [ style="solid,filled",
                   shape="ellipse",       label="dLCB\n(SIU)",
                   URL="#",
                   tooltip="LCB driver on SIU"                             ];

    LCBs         [ style="solid,filled",
                   shape="doubleoctagon", label="LCB\n(SIU)",
                   URL="#",
                   tooltip="LAT Communication Board for SIU"               ];

    SC           [ style="solid,filled",
                   shape="doubleoctagon", label="SC",
                   URL="#",
                   tooltip="Spacecraft"                                    ];

    uCTS         [ style="solid,filled",
                   shape="ellipse",       label="uCTS",
                   URL="#",
                   tooltip="Command and Telemetry Service (CTS) utility"   ];

    uLCSs        [ style="solid",
                   shape="ellipse",       label="uLCS\n(SIU)",
                   URL="#",
                   tooltip="LCB Service utility on SIU"                    ];

    uLCSe0       [ style="solid,filled",
                   shape="ellipse",       label="uLCS\n(EPU 0)",
                   URL="#",
                   tooltip="LCB Service utility on EPU 0"                  ];

    uLCSe1       [ style="solid",
                   shape="ellipse",       label="uLCS\n(EPU 1)",
                   URL="#",
                   tooltip="LCB Service utility on EPU 1"                  ];

    uRT          [ style="solid,filled",
                   shape="ellipse",       label="uRT",
                   URL="#",
                   tooltip="Remote Terminal utility"                       ];


    dLCBe0       -> DTe0    [ style="solid"           ];
    dLCBe0       -> LCBe0   [ style="solid", dir=both ];

    dLCBe1       -> DTe1    [ style="solid"           ];
    dLCBe1       -> LCBe1   [ style="solid", dir=both ];

    dLCBs        -> DTs     [ style="solid"           ];
    dLCBs        -> uCTS    [ style="solid"           ];
    dLCBs        -> LCBs    [ style="solid", dir=both ];

    EB           -> LCBe0   [ style="solid", dir=both ];
    EB           -> LCBe1   [ style="solid", dir=both ];
    EB           -> LCBs    [ style="solid", dir=both ];
    EB           -> SSR     [ style="solid"           ];

    uLCSe0       -> dLCBe0  [ style="solid"           ];

    uLCSe1       -> dLCBe1  [ style="solid"           ];

    uLCSs        -> dLCBs   [ style="solid"           ];

    LI           -> EB      [ style="solid"           ];

    SC           -> uRT     [ style="solid", dir=both ];

    STe0         -> DTe0    [ style="solid"           ];
    STe0         -> uLCSe0  [ style="solid"           ];

    STe1         -> DTe1    [ style="solid"           ];
    STe1         -> uLCSe1  [ style="solid"           ];

    STs          -> DTs     [ style="solid"           ];
    STs          -> uCTS    [ style="solid"           ];
    STs          -> uLCSs   [ style="solid"           ];

    uCTS         -> uRT     [ style="solid"           ];

    uRT          -> DTs     [ style="solid"           ];
}
