cacao  Release 0.1.03-dev
Compute And Control For Adaptive Optics
AOloopControl.c File Reference

Adaptive Optics Control loop engine. More...

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/syscall.h>
#include <gsl/gsl_math.h>
#include <time.h>
#include "CommandLineInterface/CLIcore.h"
#include "00CORE/00CORE.h"
#include "COREMOD_memory/COREMOD_memory.h"
#include "COREMOD_iofits/COREMOD_iofits.h"
#include "COREMOD_tools/COREMOD_tools.h"
#include "COREMOD_arith/COREMOD_arith.h"
#include "linopt_imtools/linopt_imtools.h"
#include "AOloopControl/AOloopControl.h"
#include "image_filter/image_filter.h"
#include "info/info.h"
#include "ZernikePolyn/ZernikePolyn.h"
#include "image_gen/image_gen.h"
#include "statistic/statistic.h"
#include "fft/fft.h"
#include "AOloopControl_IOtools/AOloopControl_IOtools.h"
#include "AOloopControl_PredictiveControl/AOloopControl_PredictiveControl.h"
#include "AOloopControl_acquireCalib/AOloopControl_acquireCalib.h"
#include "AOloopControl_computeCalib/AOloopControl_computeCalib.h"
#include "AOloopControl_perfTest/AOloopControl_perfTest.h"
Include dependency graph for AOloopControl.c:

Macros

#define MODULE_SHORTNAME_DEFAULT   ""
 
#define MODULE_DESCRIPTION   "AO loop control"
 
#define MODULE_APPLICATION   "cacao"
 
#define _GNU_SOURCE
 
#define likely(x)   __builtin_expect(!!(x), 1)
 
#define unlikely(x)   __builtin_expect(!!(x), 0)
 
#define NB_AOloopcontrol   10
 

Functions

AOloopControl - 1. INITIALIZATION, configurations
errno_t AOloopControl_loadconfigure_cli ()
 CLI function for AOloopControl_loadconfigure. More...
 
errno_t AOloopControl_aorun_cli ()
 CLI function for AOloopControl_stream3Dto2D. More...
 
int AOloopControl_bogusfunc ()
 
AOloopControl - 6. REAL TIME COMPUTING ROUTINES

calls CPU and GPU processing

errno_t AOloopControl_AOcompute_GUI_cli ()
 CLI function for AOloopControl_AOcompute_GUI. More...
 
errno_t AOloopControl_aorun_GUI_cli ()
 CLI function for AOloopControl_aorun_GUI. More...
 
errno_t AOloopControl_WFSzpupdate_loop_cli ()
 CLI function for AOloopControl_WFSzpupdate_loop. More...
 
errno_t AOloopControl_WFSzeropoint_sum_update_loop_cli ()
 CLI function for AOloopControl_WFSzeropoint_sum_update_loop. More...
 
errno_t AOloopControl_CompModes_loop_cli ()
 CLI function for AOloopControl_CompModes_loop. More...
 
errno_t AOloopControl_GPUmodecoeffs2dm_filt_loop_cli ()
 CLI function for AOloopControl_GPUmodecoeffs2dm_filt. More...
 
errno_t AOloopControl_computeWFSresidualimage_cli ()
 CLI function for AOloopControl_computeWFSresidualimage. More...
 
errno_t AOloopControl_ProcessModeCoefficients_cli ()
 CLI function for AOloopControl_ProcessModeCoefficients. More...
 
errno_t AOloopControl_AutoTuneGains_cli ()
 CLI function for AOloopControl_AutoTuneGains. More...
 
errno_t AOloopControl_dm2dm_offload_cli ()
 CLI function for AOloopControl_dm2dm_offload. More...
 
errno_t AOloopControl_sig2Modecoeff_cli ()
 CLI function for AOloopControl_sig2Modecoeff. More...
 
AOloopControl - 8. LOOP CONTROL INTERFACE
errno_t AOloopControl_setLoopNumber_cli ()
 CLI function for AOloopControl_setLoopNumber. More...
 
AOloopControl - 10. FOCAL PLANE SPECKLE MODULATION / CONTROL
errno_t AOloopControl_DMmodulateAB_cli ()
 CLI function for AOloopControl_DMmodulateAB. More...
 
AOloopControl - 11. PROCESS LOG FILES

Purpose

Initialization of the AO loop Control with all of the CLI command line interface commands

Arguments

Parameters
[in]modeINT mode sets up what function does
  • does nothing
  • also does nothing
errno_t AOloopControl_logprocess_modeval_cli ()
 CLI function for AOloopControl_logprocess_modeval. More...
 
errno_t AOloopControl_setgainrange (long m0, long m1, float gainval)
 
errno_t AOloopControl_setlimitrange (long m0, long m1, float limval)
 
errno_t AOloopControl_setmultfrange (long m0, long m1, float multfval)
 
errno_t AOloopControl_setgainblock (long mb, float gainval)
 
errno_t AOloopControl_setlimitblock (long mb, float limitval)
 
errno_t AOloopControl_setmultfblock (long mb, float multfval)
 
errno_t AOloopControl_AutoTune ()
 
AOloopControl - 6. REAL-TIME LOGGING - AOloopControl_RTstreamLOG.c
errno_t AOloopControl_RTstreamLOG_init_cli ()
 
errno_t AOloopControl_RTstreamLOG_printstatus_cli ()
 
errno_t AOloopControl_RTstreamLOG_GUI_cli ()
 
errno_t AOloopControl_RTstreamLOG_saveloop_cli ()
 
errno_t AOloopControl_RTstreamLOG_set_saveON_cli ()
 
errno_t AOloopControl_RTstreamLOG_set_saveOFF_cli ()
 
errno_t AOloopControl_RTstreamLOG_set_ON_cli ()
 
errno_t AOloopControl_RTstreamLOG_set_OFF_cli ()
 
errno_t AOloopControl_setparam_cli ()
 

Variables

static int DISABLE_CLI_AOloopControl = 0
 
long LOOPNUMBER = 0
 
AOloopControl_var aoloopcontrol_var
 

AOloopControl - 8.7. LOOP CONTROL INTERFACE - CONTROL LOOP PARAMETERS

AOLOOPCONTROL_CONFAOconf
 CLI function for AOloopControl_setframesAve. More...
 
errno_t AOloopControl_set_modeblock_gain_cli ()
 CLI function for AOloopControl_set_modeblock_gain. More...
 
errno_t AOloopControl_loopstep_cli ()
 CLI function for AOloopControl_loopstep. More...
 
errno_t AOloopControl_set_loopfrequ_cli ()
 CLI function for AOloopControl_set_loopfrequ. More...
 
errno_t AOloopControl_set_hardwlatency_frame_cli ()
 CLI function for AOloopControl_set_hardwlatency_frame. More...
 
errno_t AOloopControl_set_complatency_frame_cli ()
 CLI function for AOloopControl_set_complatency_frame. More...
 
errno_t AOloopControl_set_wfsmextrlatency_frame_cli ()
 CLI function for AOloopControl_set_wfsmextrlatency_frame. More...
 
errno_t AOloopControl_set_AUTOTUNE_LIMITS_delta_cli ()
 CLI function for AOloopControl_set_AUTOTUNE_LIMITS_delta. More...
 
errno_t AOloopControl_set_AUTOTUNE_LIMITS_perc_cli ()
 CLI function for AOloopControl_set_AUTOTUNE_LIMITS_perc. More...
 
errno_t AOloopControl_set_AUTOTUNE_LIMITS_mcoeff_cli ()
 CLI function for AOloopControl_set_AUTOTUNE_LIMITS_mcoeff. More...
 
errno_t AOloopControl_setgain_cli ()
 CLI function for AOloopControl_setgain. More...
 
errno_t AOloopControl_setARPFgain_cli ()
 CLI function for AOloopControl_setARPFgain. More...
 
errno_t AOloopControl_setARPFgainAutoMin_cli ()
 CLI function for AOloopControl_setARPFgain. More...
 
errno_t AOloopControl_setARPFgainAutoMax_cli ()
 CLI function for AOloopControl_setARPFgain. More...
 
errno_t AOloopControl_setWFSnormfloor_cli ()
 CLI function for AOloopControl_setWFSnormfloor. More...
 
errno_t AOloopControl_setmaxlimit_cli ()
 CLI function for AOloopControl_setmaxlimit. More...
 
errno_t AOloopControl_setmult_cli ()
 CLI function for AOloopControl_setmult. More...
 
errno_t AOloopControl_setgainrange_cli ()
 CLI function for AOloopControl_setgainrange. More...
 
errno_t AOloopControl_setlimitrange_cli ()
 CLI function for AOloopControl_setlimitrange. More...
 
errno_t AOloopControl_setmultfrange_cli ()
 CLI function for AOloopControl_setmultfrange. More...
 
errno_t AOloopControl_setgainblock_cli ()
 CLI function for AOloopControl_setgainblock. More...
 
errno_t AOloopControl_setlimitblock_cli ()
 CLI function for AOloopControl_setlimitblock. More...
 
errno_t AOloopControl_setmultfblock_cli ()
 CLI function for AOloopControl_setmultfblock. More...
 
errno_t AOloopControl_scanGainBlock_cli ()
 CLI function for AOloopControl_scanGainBlock. More...
 

Detailed Description

Adaptive Optics Control loop engine.

AO engine uses stream data structure

Files

Main files

AOloopControl_initmem.c Initialize memory AOloopControl_loadconfigure.c Load and save configuration AOloopControl_aorun.c Main level loop function, calls AOcompute AOloopControl_AOcompute.c AO Compute function, WFS to DM commands AOloopControl_wfs.c Read WFS data, low level processing of WFS data AOloopControl_dm.c Deformable mirror control, write modes to DM AOloopControl_dmwrite.c Turn DM write on/off AOloopControl_loop_ctr.c Loop control user interface AOloopControl_loop_onoff.c Turn loop on/off, pause, step AOloopControl_param.c Set parameters AOloopControl_read_param.c Read parameters AOloopControl_ProcessModeCoefficients.c Modal control AOloopControl_CompModes_loop.c Compute modes (loop)

I/O, telemetry

AOloopControl_RTstreamLOG.c Log real-time telemetry

Performance tuning / optimization

AOloopControl_arpf_onoff.c Autoregressive predictive control On/Off AOloopControl_predfilter_onoff.c Turn predictive control on/off AOloopControl_autotune.c Automatic loop tuning (mostly gain values) AOloopControl_process_files.c – EXPERIMENTAL – RM optimization from telemetry

AOloopControl_time_param.c ?? AOloopControl_sig2Modecoeff.c ?? AOloopControl_fpspeckle_mod.c Speckle modulation (experimental)

See also
http://oguyon.github.io/AdaptiveOpticsControl/src/AOloopControl/doc/AOloopControl.html

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE

◆ likely

#define likely (   x)    __builtin_expect(!!(x), 1)

◆ MODULE_APPLICATION

#define MODULE_APPLICATION   "cacao"

◆ MODULE_DESCRIPTION

#define MODULE_DESCRIPTION   "AO loop control"

◆ MODULE_SHORTNAME_DEFAULT

#define MODULE_SHORTNAME_DEFAULT   ""

◆ NB_AOloopcontrol

#define NB_AOloopcontrol   10

◆ unlikely

#define unlikely (   x)    __builtin_expect(!!(x), 0)

Function Documentation

◆ AOloopControl_AOcompute_GUI_cli()

errno_t AOloopControl_AOcompute_GUI_cli ( )

CLI function for AOloopControl_AOcompute_GUI.

◆ AOloopControl_aorun_cli()

errno_t AOloopControl_aorun_cli ( )

CLI function for AOloopControl_stream3Dto2D.

CLI function for AOloopControl_mkCM

◆ AOloopControl_aorun_GUI_cli()

errno_t AOloopControl_aorun_GUI_cli ( )

CLI function for AOloopControl_aorun_GUI.

◆ AOloopControl_AutoTune()

errno_t AOloopControl_AutoTune ( )

◆ AOloopControl_AutoTuneGains_cli()

errno_t AOloopControl_AutoTuneGains_cli ( )

CLI function for AOloopControl_AutoTuneGains.

◆ AOloopControl_bogusfunc()

int AOloopControl_bogusfunc ( )

◆ AOloopControl_CompModes_loop_cli()

errno_t AOloopControl_CompModes_loop_cli ( )

CLI function for AOloopControl_CompModes_loop.

◆ AOloopControl_computeWFSresidualimage_cli()

errno_t AOloopControl_computeWFSresidualimage_cli ( )

CLI function for AOloopControl_computeWFSresidualimage.

◆ AOloopControl_dm2dm_offload_cli()

errno_t AOloopControl_dm2dm_offload_cli ( )

CLI function for AOloopControl_dm2dm_offload.

◆ AOloopControl_DMmodulateAB_cli()

errno_t AOloopControl_DMmodulateAB_cli ( )

CLI function for AOloopControl_DMmodulateAB.

◆ AOloopControl_GPUmodecoeffs2dm_filt_loop_cli()

errno_t AOloopControl_GPUmodecoeffs2dm_filt_loop_cli ( )

CLI function for AOloopControl_GPUmodecoeffs2dm_filt.

◆ AOloopControl_loadconfigure_cli()

errno_t AOloopControl_loadconfigure_cli ( )

CLI function for AOloopControl_loadconfigure.

◆ AOloopControl_logprocess_modeval_cli()

errno_t AOloopControl_logprocess_modeval_cli ( )

CLI function for AOloopControl_logprocess_modeval.

◆ AOloopControl_loopstep_cli()

errno_t AOloopControl_loopstep_cli ( )

CLI function for AOloopControl_loopstep.

◆ AOloopControl_ProcessModeCoefficients_cli()

errno_t AOloopControl_ProcessModeCoefficients_cli ( )

CLI function for AOloopControl_ProcessModeCoefficients.

◆ AOloopControl_RTstreamLOG_GUI_cli()

errno_t AOloopControl_RTstreamLOG_GUI_cli ( )

◆ AOloopControl_RTstreamLOG_init_cli()

errno_t AOloopControl_RTstreamLOG_init_cli ( )

◆ AOloopControl_RTstreamLOG_printstatus_cli()

errno_t AOloopControl_RTstreamLOG_printstatus_cli ( )

◆ AOloopControl_RTstreamLOG_saveloop_cli()

errno_t AOloopControl_RTstreamLOG_saveloop_cli ( )

◆ AOloopControl_RTstreamLOG_set_OFF_cli()

errno_t AOloopControl_RTstreamLOG_set_OFF_cli ( )

◆ AOloopControl_RTstreamLOG_set_ON_cli()

errno_t AOloopControl_RTstreamLOG_set_ON_cli ( )

◆ AOloopControl_RTstreamLOG_set_saveOFF_cli()

errno_t AOloopControl_RTstreamLOG_set_saveOFF_cli ( )

◆ AOloopControl_RTstreamLOG_set_saveON_cli()

errno_t AOloopControl_RTstreamLOG_set_saveON_cli ( )

◆ AOloopControl_scanGainBlock_cli()

errno_t AOloopControl_scanGainBlock_cli ( )

CLI function for AOloopControl_scanGainBlock.

◆ AOloopControl_set_AUTOTUNE_LIMITS_delta_cli()

errno_t AOloopControl_set_AUTOTUNE_LIMITS_delta_cli ( )

CLI function for AOloopControl_set_AUTOTUNE_LIMITS_delta.

◆ AOloopControl_set_AUTOTUNE_LIMITS_mcoeff_cli()

errno_t AOloopControl_set_AUTOTUNE_LIMITS_mcoeff_cli ( )

CLI function for AOloopControl_set_AUTOTUNE_LIMITS_mcoeff.

◆ AOloopControl_set_AUTOTUNE_LIMITS_perc_cli()

errno_t AOloopControl_set_AUTOTUNE_LIMITS_perc_cli ( )

CLI function for AOloopControl_set_AUTOTUNE_LIMITS_perc.

◆ AOloopControl_set_complatency_frame_cli()

errno_t AOloopControl_set_complatency_frame_cli ( )

CLI function for AOloopControl_set_complatency_frame.

◆ AOloopControl_set_hardwlatency_frame_cli()

errno_t AOloopControl_set_hardwlatency_frame_cli ( )

CLI function for AOloopControl_set_hardwlatency_frame.

◆ AOloopControl_set_loopfrequ_cli()

errno_t AOloopControl_set_loopfrequ_cli ( )

CLI function for AOloopControl_set_loopfrequ.

◆ AOloopControl_set_modeblock_gain_cli()

errno_t AOloopControl_set_modeblock_gain_cli ( )

CLI function for AOloopControl_set_modeblock_gain.

◆ AOloopControl_set_wfsmextrlatency_frame_cli()

errno_t AOloopControl_set_wfsmextrlatency_frame_cli ( )

CLI function for AOloopControl_set_wfsmextrlatency_frame.

◆ AOloopControl_setARPFgain_cli()

errno_t AOloopControl_setARPFgain_cli ( )

CLI function for AOloopControl_setARPFgain.

◆ AOloopControl_setARPFgainAutoMax_cli()

errno_t AOloopControl_setARPFgainAutoMax_cli ( )

CLI function for AOloopControl_setARPFgain.

◆ AOloopControl_setARPFgainAutoMin_cli()

errno_t AOloopControl_setARPFgainAutoMin_cli ( )

CLI function for AOloopControl_setARPFgain.

◆ AOloopControl_setgain_cli()

errno_t AOloopControl_setgain_cli ( )

CLI function for AOloopControl_setgain.

◆ AOloopControl_setgainblock()

errno_t AOloopControl_setgainblock ( long  mb,
float  gainval 
)

◆ AOloopControl_setgainblock_cli()

errno_t AOloopControl_setgainblock_cli ( )

CLI function for AOloopControl_setgainblock.

◆ AOloopControl_setgainrange()

errno_t AOloopControl_setgainrange ( long  m0,
long  m1,
float  gainval 
)

◆ AOloopControl_setgainrange_cli()

errno_t AOloopControl_setgainrange_cli ( )

CLI function for AOloopControl_setgainrange.

◆ AOloopControl_setlimitblock()

errno_t AOloopControl_setlimitblock ( long  mb,
float  limitval 
)

◆ AOloopControl_setlimitblock_cli()

errno_t AOloopControl_setlimitblock_cli ( )

CLI function for AOloopControl_setlimitblock.

◆ AOloopControl_setlimitrange()

errno_t AOloopControl_setlimitrange ( long  m0,
long  m1,
float  limval 
)

◆ AOloopControl_setlimitrange_cli()

errno_t AOloopControl_setlimitrange_cli ( )

CLI function for AOloopControl_setlimitrange.

◆ AOloopControl_setLoopNumber_cli()

errno_t AOloopControl_setLoopNumber_cli ( )

CLI function for AOloopControl_setLoopNumber.

◆ AOloopControl_setmaxlimit_cli()

errno_t AOloopControl_setmaxlimit_cli ( )

CLI function for AOloopControl_setmaxlimit.

◆ AOloopControl_setmult_cli()

errno_t AOloopControl_setmult_cli ( )

CLI function for AOloopControl_setmult.

◆ AOloopControl_setmultfblock()

errno_t AOloopControl_setmultfblock ( long  mb,
float  multfval 
)

◆ AOloopControl_setmultfblock_cli()

errno_t AOloopControl_setmultfblock_cli ( )

CLI function for AOloopControl_setmultfblock.

◆ AOloopControl_setmultfrange()

errno_t AOloopControl_setmultfrange ( long  m0,
long  m1,
float  multfval 
)

◆ AOloopControl_setmultfrange_cli()

errno_t AOloopControl_setmultfrange_cli ( )

CLI function for AOloopControl_setmultfrange.

◆ AOloopControl_setparam_cli()

errno_t AOloopControl_setparam_cli ( )

◆ AOloopControl_setWFSnormfloor_cli()

errno_t AOloopControl_setWFSnormfloor_cli ( )

CLI function for AOloopControl_setWFSnormfloor.

◆ AOloopControl_sig2Modecoeff_cli()

errno_t AOloopControl_sig2Modecoeff_cli ( )

CLI function for AOloopControl_sig2Modecoeff.

◆ AOloopControl_WFSzeropoint_sum_update_loop_cli()

errno_t AOloopControl_WFSzeropoint_sum_update_loop_cli ( )

CLI function for AOloopControl_WFSzeropoint_sum_update_loop.

◆ AOloopControl_WFSzpupdate_loop_cli()

errno_t AOloopControl_WFSzpupdate_loop_cli ( )

CLI function for AOloopControl_WFSzpupdate_loop.

Variable Documentation

◆ AOconf

CLI function for AOloopControl_setframesAve.

◆ aoloopcontrol_var

AOloopControl_var aoloopcontrol_var

◆ DISABLE_CLI_AOloopControl

int DISABLE_CLI_AOloopControl = 0
static

◆ LOOPNUMBER

long LOOPNUMBER = 0