From 32d62050a0b356dde12e086c0de3daa7452c6541 Mon Sep 17 00:00:00 2001 From: Christoffer Fremling Date: Fri, 16 Oct 2026 11:45:13 +0200 Subject: [PATCH] slicecamd: expose fine-acquire goal and precision in the config file FINE_ACQUIRE_GOAL and FINE_ACQUIRE_PRECISION are parsed into fineacquire_state.goal_arcsec and prec_arcsec, which were compile-time constants. Defaults in slicecamd.cfg.in are the existing values, 0.4 and 0.35, so behaviour is unchanged. --- Config/slicecamd.cfg.in | 11 +++++++++++ slicecamd/slicecam_interface.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/Config/slicecamd.cfg.in b/Config/slicecamd.cfg.in index 3bd6316a..8c5ccab9 100644 --- a/Config/slicecamd.cfg.in +++ b/Config/slicecamd.cfg.in @@ -119,6 +119,17 @@ FINE_ACQUIRE_GAIN_LARGE=1.0 # FINE_ACQUIRE_GAIN_THRESHOLD=2.0 +# FINE_ACQUIRE_GOAL= +# Residual (arcsec) at or below which fine acquisition is converged. +# +FINE_ACQUIRE_GOAL=0.4 + +# FINE_ACQUIRE_PRECISION= +# MAD scatter per axis (arcsec) at or below which a cycle's samples are +# considered settled enough to evaluate a move. +# +FINE_ACQUIRE_PRECISION=0.35 + # FINE_ACQUIRE_EXPTIME_MIN / _MAX = # Clamp range for auto-adjusted fine-acquisition exposure time. # diff --git a/slicecamd/slicecam_interface.cpp b/slicecamd/slicecam_interface.cpp index ec21083e..372dd860 100644 --- a/slicecamd/slicecam_interface.cpp +++ b/slicecamd/slicecam_interface.cpp @@ -1457,6 +1457,32 @@ namespace Slicecam { applied++; } + if ( config.param[entry] == "FINE_ACQUIRE_GOAL" ) { + try { this->fineacquire_state.goal_arcsec = std::stod( config.arg[entry] ); } + catch ( const std::exception &e ) { + message.str(""); message << "ERROR invalid FINE_ACQUIRE_GOAL " + << config.arg[entry] << ": " << e.what(); + logwrite( function, message.str() ); + return ERROR; + } + message.str(""); message << "SLICECAMD:config:" << config.param[entry] << "=" << config.arg[entry]; + logwrite( function, message.str() ); + applied++; + } + + if ( config.param[entry] == "FINE_ACQUIRE_PRECISION" ) { + try { this->fineacquire_state.prec_arcsec = std::stod( config.arg[entry] ); } + catch ( const std::exception &e ) { + message.str(""); message << "ERROR invalid FINE_ACQUIRE_PRECISION " + << config.arg[entry] << ": " << e.what(); + logwrite( function, message.str() ); + return ERROR; + } + message.str(""); message << "SLICECAMD:config:" << config.param[entry] << "=" << config.arg[entry]; + logwrite( function, message.str() ); + applied++; + } + if ( config.param[entry] == "FINE_ACQUIRE_EXPTIME_MIN" ) { try { this->fineacquire_state.exptime_min = std::stod( config.arg[entry] ); } catch ( const std::exception &e ) {