Dish Mode Transition Rules

Rules when no devices are being ignored

DISH_MODE_RULES_ALL_DEVICES = {
    # MAINTENANCE mode is not aggregated from operating modes of subdevices. It
    # is a separate mode that can be commanded directly on the dish manager.
    "STARTUP": rule_engine.Rule(
        "DS.operatingmode  == 'DSOperatingMode.STARTUP' or "
        "SPF.operatingmode  == 'SPFOperatingMode.STARTUP' or "
        "SPFRX.operatingmode  == 'SPFRxOperatingMode.STARTUP'"
    ),
    "STOW": rule_engine.Rule("DS.operatingmode  == 'DSOperatingMode.STOW'"),
    "CONFIG": rule_engine.Rule(
        "SPFRX.operatingmode  == 'SPFRxOperatingMode.CONFIGURE' "
        "or "
        "DS.indexerposition  == 'IndexerPosition.MOVING' "
    ),
    "OPERATE": rule_engine.Rule(
        "DS.operatingmode  == 'DSOperatingMode.POINT' and "
        "SPF.operatingmode  == 'SPFOperatingMode.OPERATE' and "
        "SPFRX.operatingmode  == 'SPFRxOperatingMode.OPERATE'"
    ),
    "STANDBY_LP": rule_engine.Rule(
        "DS.operatingmode == 'DSOperatingMode.STANDBY' and "
        "DS.powerstate  == 'DSPowerState.LOW_POWER' and "
        "SPF.operatingmode  != 'SPFOperatingMode.OPERATE'"
    ),
    "STANDBY_FP": rule_engine.Rule(
        "DS.operatingmode == 'DSOperatingMode.STANDBY' and "
        "DS.powerstate  == 'DSPowerState.FULL_POWER'"
    ),
}

Rules when ignoring SPFC device

DISH_MODE_RULES_SPF_IGNORED = {
    "STARTUP": rule_engine.Rule(
        "DS.operatingmode  == 'DSOperatingMode.STARTUP' or "
        "SPFRX.operatingmode  == 'SPFRxOperatingMode.STARTUP'"
    ),
    "STOW": rule_engine.Rule("DS.operatingmode  == 'DSOperatingMode.STOW'"),
    "CONFIG": rule_engine.Rule(
        "SPFRX.operatingmode  == 'SPFRxOperatingMode.CONFIGURE' "
        "or "
        "DS.indexerposition  == 'IndexerPosition.MOVING' "
    ),
    "OPERATE": rule_engine.Rule(
        "DS.operatingmode  == 'DSOperatingMode.POINT' and "
        "SPFRX.operatingmode  == 'SPFRxOperatingMode.OPERATE'"
    ),
    "STANDBY_LP": rule_engine.Rule(
        "DS.operatingmode == 'DSOperatingMode.STANDBY' and "
        "DS.powerstate  == 'DSPowerState.LOW_POWER'"
    ),
    "STANDBY_FP": rule_engine.Rule(
        "DS.operatingmode == 'DSOperatingMode.STANDBY' and "
        "DS.powerstate  == 'DSPowerState.FULL_POWER'"
    ),
}

Rules when ignoring SPFRx device

DISH_MODE_RULES_SPFRX_IGNORED = {
    "STARTUP": rule_engine.Rule(
        "DS.operatingmode  == 'DSOperatingMode.STARTUP' or "
        "SPF.operatingmode  == 'SPFOperatingMode.STARTUP'"
    ),
    "STOW": rule_engine.Rule("DS.operatingmode  == 'DSOperatingMode.STOW'"),
    "CONFIG": rule_engine.Rule("DS.indexerposition  == 'IndexerPosition.MOVING' "),
    "OPERATE": rule_engine.Rule(
        "DS.operatingmode  == 'DSOperatingMode.POINT' and "
        "SPF.operatingmode  == 'SPFOperatingMode.OPERATE'"
    ),
    "STANDBY_LP": rule_engine.Rule(
        "DS.operatingmode == 'DSOperatingMode.STANDBY' and "
        "DS.powerstate  == 'DSPowerState.LOW_POWER' and "
        "SPF.operatingmode  != 'SPFOperatingMode.OPERATE'"
    ),
    "STANDBY_FP": rule_engine.Rule(
        "DS.operatingmode == 'DSOperatingMode.STANDBY' and "
        "DS.powerstate  == 'DSPowerState.FULL_POWER'"
    ),
}

Rules when ignoring both SPFC and SPFRx devices

DISH_MODE_RULES_DS_ONLY = {
    "STARTUP": rule_engine.Rule("DS.operatingmode  == 'DSOperatingMode.STARTUP'"),
    "STOW": rule_engine.Rule("DS.operatingmode  == 'DSOperatingMode.STOW'"),
    "CONFIG": rule_engine.Rule("DS.indexerposition  == 'IndexerPosition.MOVING' "),
    "OPERATE": rule_engine.Rule("DS.operatingmode  == 'DSOperatingMode.POINT'"),
    "STANDBY_LP": rule_engine.Rule(
        "DS.operatingmode == 'DSOperatingMode.STANDBY' and "
        "DS.powerstate  == 'DSPowerState.LOW_POWER'"
    ),
    "STANDBY_FP": rule_engine.Rule(
        "DS.operatingmode == 'DSOperatingMode.STANDBY' and "
        "DS.powerstate  == 'DSPowerState.FULL_POWER'"
    ),
}