Skip to content

Commit

Permalink
Merge pull request #1898 from jluhrs/feature/SEQNG-1274
Browse files Browse the repository at this point in the history
SEQNG-1274 Run GSAOI dome flats even if GeMS was not configured.
  • Loading branch information
jluhrs authored Sep 22, 2021
2 parents f4f22cb + 1185da7 commit 8278d0a
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 13 deletions.
16 changes: 10 additions & 6 deletions modules/server/src/main/scala/seqexec/server/gems/Gems.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ import edu.gemini.spModel.gemini.gems.CanopusWfs
import edu.gemini.spModel.gemini.gsaoi.GsaoiOdgw
import edu.gemini.spModel.guide.StandardGuideOptions
import edu.gemini.spModel.target.obsComp.TargetObsCompConstants.GUIDE_WITH_OIWFS_PROP
import org.typelevel.log4cats.Logger
import seqexec.server.CleanConfig
import seqexec.server.CleanConfig.extractItem
import seqexec.server.ConfigUtilOps._
import seqexec.server.SeqexecFailure
import seqexec.server.altair.AltairController.AltairConfig
import seqexec.server.gems.Gems.GemsWfsState
import seqexec.server.gems.GemsController.Cwfs1Usage
Expand Down Expand Up @@ -55,7 +55,8 @@ object Gems {
controller: GemsController[F],
config: GemsConfig,
guideConfigDb: GuideConfigDb[F]
) extends Gems[F] {
)(implicit L: Logger[F])
extends Gems[F] {

override val cfg: GemsConfig = config

Expand Down Expand Up @@ -97,9 +98,12 @@ object Gems {
)
)
case _ =>
SeqexecFailure
.Execution("Attempting to run GeMS sequence before GeMS has being configured.")
.raiseError[F, PauseResume[F]]
// If there is no configuration coming from TCC we just ignore it. This is the case when taking dome flats
// We check in TcsSouth.scala that it is not an error
L.info(
"No GeMS guide configuration from TCC. GeMS control skipped for unguided step."
) *>
PauseResume[F](none, none).pure[F]
}
}

Expand Down Expand Up @@ -137,7 +141,7 @@ object Gems {
OIUsage.fromBoolean(opConfig.isOIUsed && stepConfig.isOIUsed)
)

def fromConfig[F[_]: MonadError[*[_], Throwable]](
def fromConfig[F[_]: MonadError[*[_], Throwable]: Logger](
guideConfigDb: GuideConfigDb[F],
config: CleanConfig
): F[GemsController[F] => Gems[F]] = {
Expand Down
26 changes: 19 additions & 7 deletions modules/server/src/main/scala/seqexec/server/tcs/TcsSouth.scala
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import seqexec.server.ConfigUtilOps._
import seqexec.server.InstrumentGuide
import seqexec.server.SeqexecFailure
import seqexec.server.gems.Gems
import seqexec.server.gems.GemsController.GemsConfig
import seqexec.server.gems.GemsController.{ GemsConfig, GemsOff }
import seqexec.server.tcs.TcsController.AGConfig
import seqexec.server.tcs.TcsController.AoGuidersConfig
import seqexec.server.tcs.TcsController.AoTcsConfig
Expand Down Expand Up @@ -130,9 +130,27 @@ case class TcsSouth[F[_]: Sync: Logger] private (
config.instrument
): TcsSouthConfig).pure[F]

private def anyGeMSGuiderActive(gc: TcsSouth.TcsSeqConfig[F]): Boolean =
gc.guideWithCWFS1.exists(_.isActive) ||
gc.guideWithCWFS2.exists(_.isActive) ||
gc.guideWithCWFS3.exists(_.isActive) ||
gc.guideWithODGW1.exists(_.isActive) ||
gc.guideWithODGW2.exists(_.isActive) ||
gc.guideWithODGW3.exists(_.isActive) ||
gc.guideWithODGW4.exists(_.isActive)

private def buildTcsAoConfig(gc: GuideConfig): F[TcsSouthConfig] =
gc.gaosGuide
.flatMap(_.toOption)
.fold {
// Only raise an error if there is no GeMS config coming from TCS and step has a GeMS guider active.
if (anyGeMSGuiderActive(config))
SeqexecFailure
.Execution("Attempting to run GeMS sequence before GeMS was configured.")
.raiseError[F, GemsConfig]
else
GemsOff.pure[F].widen[GemsConfig]
}(_.pure[F])
.map { aog =>
AoTcsConfig[GemsGuiders, GemsConfig](
gc.tcsGuide,
Expand Down Expand Up @@ -193,12 +211,6 @@ case class TcsSouth[F[_]: Sync: Logger] private (
config.instrument
): TcsSouthConfig
}
.map(_.pure[F])
.getOrElse(
SeqexecFailure
.Execution("Attempting to run GeMS sequence before GeMS was configured.")
.raiseError[F, TcsSouthConfig]
)

def buildTcsConfig: F[TcsSouthConfig] =
guideDb.value.flatMap { c =>
Expand Down

0 comments on commit 8278d0a

Please sign in to comment.