# nml -> normal
# brd -> board
# ss -> subsystem
# ass -> assembly
# ctrl -> controller
# dh -> device handler
# dft -> default
# All uppermost system components are automatically subsystems
system:
  eps:
    pcdu:
      id: 0x442000a1
    acu:
      id: 0x44250003
    pdu1:
      id: 0x44250001
    pdu2:
      id: 0x44250002
  tcs:
    tcs-ctrl:
    tcs-brd-ass:
      id: 0x73000003
  acs:
    acs-brd-ass:
      id: 0x73000001
    sus-brd-ass:
      id: 0x73000002
    acs-ctrl:
    rw:
    mgt:
    str:
  payload:
    scex-dh:
    ploc-ss:
    cam-switcher:
    pl-pcdu-dh:
  com:
    syrlinks-dh:


modes:
  # If nothing is specified for a particular mode, use default configuration
  default:
    system:
      # The power system is/should always be on. We can't even turn it off
      eps: nml
        pcdu: nml
        acu: nml
        pdu1: nml
        pdu2: nml
      tcs: nml
        tcs-brd-ass: nml
        tcs-ctrl: nml
      payload: off
        scex: off
        ploc-ss: off
        cam-ss: off
        pl-pcdu-dh: off
      com: nml
        syrlinks-dh: nml
      acs:
        mgt: nml
        acs-brd-ass: nml
        sus-brd-ass: nml
  detumble:
    system:
      acs: detumble
        acs-ctrl: detumble
        # Requires MGM and Gyros
        rw: off
        str: off
  safe:
    system:
      acs: safe
        acs-ctrl: safe
        rw: off
        str: off
    submodes:
      cold: 1
      system:
        # Inherit rest of mode table from default submode
        tcs:
          tcs-ctrl: heat
  idle:
    system:
      acs: idle
        acs-ctrl: idle
        rw: nml
        str: off
    submodes:
      charge: 1
      system:
        # Inherit rest of mode table from default submode
        acs:
          rw: off
  target-gs:
    system:
      acs: target-pt
        acs-ctrl: target-pt
        rw: nml
        str: nml
  target-gs-pl-dac:
    system:
      acs: target-pt
        acs-ctrl: target-pt
        rw: nml
        str: nml
      payload: dac
        cam-switcher: off
        scex: off
        ploc-ss: nml
        pl-pcdu-dh: on
  target-gs-pl-cam:
    system:
      acs: target-pt
        acs-ctrl: target-pt
        rw: nml
        str: nml
      payload: cam
        cam-switcher: on
        scex: off
        ploc-ss: nml
          submode: dac-off
        pl-pcdu-dh: on
  target-gs-pl-data:
    system:
      acs: target-pt
        acs-ctrl: target-pt
        rw: nml
        str: nml
      payload: pl-data
        cam-switcher: off
        scex: off
        ploc-ss: nml
          submode: dac-off
        pl-pcdu-ss: on
  earth-obsv:
    acs: target-pt
      acs-ctrl: target-pt
      rw: nml
      str: nml
    payload: earth-obsv
      cam-switcher: on
      scex: off
      ploc-ss: off
      pl-pcdu-ss: off
  scex:
    acs: target-pt
      acs-ctrl: target-pt
      rw: nml
      str: nml
    payload: scex
      cam-switcher: off
      scex: on
      ploc-ss: off
      pl-pcdu-ss: off

sequences:
  default:
  acs:
    off:
      fallback: none
      seq-id: off
      target:
        name: off-target
        tab-id: 0x61000000
        modes: ignore
      trans:
        0:
          name: off-trans
          tab-id: 0x61000001
          modes:
            acs-ctrl: off
            acs-brd-ass: off
            sus-brd-ass: off
            rw: off
            mgt: off
            str: off
    detumble:
      seq-id: 1
      target:
        name: detumble-target
        tab-id: 0x61000100
        modes:
          acs-ctrl: detumble
          mgt: nml
          sus-brd-ass: nml
          acs-brd-ass: nml
          rw: ignore
          str: ignore
        trans:
          0:
            name: detumble-trans-0
            tab-id: 0x61000101
            modes:
              acs-ctrl: ignore
              mgt: nml
              rw: off
              str: off
              sus-brd-ass: nml
              acs-brd-ass: nml
          1:
            name: detumble-trans-1
            tab-id: 0x61000102
            modes:
              acs-ctrl: detumble
              mgt: ignore
              acs-brd-ass: ignore
              sus-brd-ass: ignore
              rw: ignore
              str: ignore
    safe:
      seq-id: 2
      target:
        name: safe-target
        tab-id: 0x61000200
        modes:
          acs-ctrl: safe
          mgt: nml
          acs-brd-ass: nml
          sus-brd-ass: nml
          rw: ignore
          str: ignore
      trans:
        0:
          name: safe-trans-1
          tab-id: 0x61000201
          modes:
            acs-ctrl: ignore
            mgt: nml
            acs-brd-ass: nml
            sus-brd-ass: nml
            rw: off
            str: off
        1:
          name: safe-trans-2
          tab-id: 0x61000202
          modes:
            acs-ctrl: safe
            mgt: ignore
            acs-brd-ass: ignore
            sus-brd-ass: ignore
            rw: ignore
            str: ignore
    idle:
      seq-id: 3
      target:
        name: idle-target
        tab-id: 0x61000300
        modes:
          acs-ctrl: idle
          mgt: nml
          acs-brd-ass: nml
          sus-brd-ass: nml
          rw: nml
          str: ignore
      trans:
        0:
          name: idle-trans-0
          tab-id: 0x61000301
          modes:
            acs-ctrl: ignore
            mgt: nml
            acs-brd-ass: nml
            sus-brd-ass: nml
            rw: nml
            str: off
        1:
          name: idle-trans-1
          tab-id: 0x61000302
          modes:
            acs-ctrl: idle
            mgt: ignore
            acs-brd-ass: ignore
            sus-brd-ass: ignore
            rw: ignore
            str: ignore
    idle-charge:
      derive: idle
      seq-id: 4
      target:
        name: idle-charge-target
        tab-id: 0x61000400
        modes:
          acs-ctrl: idle
            submode: charge
      trans:
        0:
          name: idle-charge-trans-0
          tab-id: 0x61000401
          modes:
            rw: off
        1:
          name: idle-charge-trans-1
          tab-id: 0x61000402
          modes:
            acs-ctrl: idle
              submode: charge
    target-pt:
      seq-id: 5
      target:
        name: target-pt-target
        tab-id: 0x61000500
        modes:
          acs-ctrl: target-pt
          mgt: nml
          acs-brd-ass: nml
          sus-brd-ass: nml
          rw: nml
          str: nml
      trans:
        0:
          name: target-pt-trans-0
          tab-id: 0x61000501
          modes:
            acs-ctrl: ignore
            mgt: nml
            acs-brd-ass: nml
            sus-brd-ass: nml
            rw: nml
            str: nml
        1:
          name: target-pt-trans-1
          tab-id: 0x61000502
          modes:
            acs-ctrl: target-pt
            mgt: ignore
            acs-brd-ass: ignore
            sus-brd-ass: ignore
            rw: ignore
            str: ignore
  payload:
    off:
      seq-id: 0
      target:
        name: off-target
        tab-id: 0x70000000
        modes: ignore
      trans:
        0:
          name: off-trans-0
          tab-id: 0x70000001
          modes:
            ploc-switcher: off
            cam-switcher: off
            scex-dh: off
            ploc-ss: off
            pl-pcdu-dh: off
    dac:
      seq-id: 1
      target:
        name: target-dac
        tab-id: 0x70000100
        modes:
          ploc-switcher: on
          cam-switcher: off
          scex-dh: off
          ploc-ss: dac
          pl-pcdu-dh: nml
            submode: all-on
      trans:
        0:
          name: dac-trans-0
          tab-id: 0x70000101
          modes:
            ploc-switcher: on
            cam-switcher: off
            scex-dh: off
            ploc-ss: on
              submode: dac-on
            pl-pcdu-dh: ignore
    cam:
      seq-id: 2
      target:
        name: target-cam
        tab-id: 0x70000200
        modes:
          ploc-switcher: on
          cam-switcher: on
          scex-dh: off
          ploc-ss: on
            submode: dac-off
          pl-pcdu-dh: nml
            submode: all-on
      trans:
        0:
          name: cam-trans-0
          tab-id: 0x70000201
          modes:
            ploc-switcher: on
            cam-switcher: off
            scex-dh: off
            ploc-ss: on
              submode: dac-off
            pl-pcdu-dh: ignore
    pl-data:
      seq-id: 3
      target:
        name: target-pl-data
        tab-id: 0x70000300
        modes:
          ploc-switcher: on
          cam-switcher: off
          scex-dh: off
          ploc-ss: on
            submode: dac-off
          pl-pcdu-dh: nml
            submode: all-on
    earth-obsv:
      seq-id: 4
      target:
        name: target-earth-obsv
        tab-id: 0x70000400
        modes:
          ploc-switcher: on
          cam-switcher: on
          scex-dh: off
          ploc-ss: on
            submode: dac-off
          pl-pcdu-dh: off
      trans:
        0:
          name: trans-earth-obsv-0
          tab-id: 0x70000401
          modes:
            ploc-switcher: on
            cam-switcher: on
            scex-dh: off
            ploc-ss: on
              submode: dac-off
            pl-pcdu-dh: off
    scex:
      seq-id: 4
      target: scex
        name: target-scex
        tab-id: 0x70000500
        modes:
          ploc-switcher: off
          cam-switcher: off
          scex-dh: on
          ploc-ss: off
          pl-pcdu-dh: off
      trans:
        0:
          name: trans-scex-0
          tab-id: 0x70000501
          modes:
            ploc-switcher: off
            cam-switcher: off
            scex-dh: on
            ploc-ss: off
            pl-pcdu-dh: off
  system:
    detumble:
      seq-id: 0
      target:
        name: target-detumble
        tab-id: 0x73000000
        modes:
          acs: detumble
          tcs: nml
          com: nml
          payload: ignore
          eps: nml