-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathAOloopControl_perfTest_LinSim.c
147 lines (93 loc) · 3.92 KB
/
AOloopControl_perfTest_LinSim.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/**
* @file AOloopControl_perfTest_LinSim.c
* @brief Adaptive Optics Control loop linear simulator
*
* Uses response matrix for linear simulation
*
*
*
* @bug No known bugs.
*
*
*/
#define _GNU_SOURCE
// uncomment for test print statements to stdout
//#define _PRINT_TEST
/* =============================================================================================== */
/* =============================================================================================== */
/* HEADER FILES */
/* =============================================================================================== */
/* =============================================================================================== */
#include <string.h>
#include <math.h>
#include "CommandLineInterface/CLIcore.h"
#include "COREMOD_memory/COREMOD_memory.h"
#include "COREMOD_iofits/COREMOD_iofits.h"
#include "00CORE/00CORE.h"
#include "linopt_imtools/linopt_imtools.h"
#include "info/info.h"
#include "AOloopControl/AOloopControl.h"
#include "AOloopControl_perfTest/AOloopControl_perfTest.h"
/* =============================================================================================== */
/* =============================================================================================== */
/* DEFINES, MACROS */
/* =============================================================================================== */
/* =============================================================================================== */
# ifdef _OPENMP
# include <omp.h>
#define OMP_NELEMENT_LIMIT 1000000
# endif
/* =============================================================================================== */
/* =============================================================================================== */
/* GLOBAL DATA DECLARATION */
/* =============================================================================================== */
/* =============================================================================================== */
/* =============================================================================================== */
/* MAIN DATA STRUCTURES */
/* =============================================================================================== */
int_fast8_t AOcontrolLoop_perfTest_LinearSimulator_FPCONF(
const char *fpsname,
uint32_t CMDmode
)
{
uint16_t loopstatus;
// SETUP FPS
FUNCTION_PARAMETER_STRUCT fps = function_parameter_FPCONFsetup(fpsname, CMDmode, &loopstatus);
if( loopstatus == 0 ) // stop fps
return 0;
// ALLOCATE ENTRIES
void * pNull = NULL;
int fpi; // function parameter index
fpi = function_parameter_add_entry(&fps, ".DMxsize", "Deformable mirror X size", FPTYPE_INT64, FPFLAG_DEFAULT_INPUT, pNull);
fpi = function_parameter_add_entry(&fps, ".DMysize", "Deformable mirror Y size", FPTYPE_INT64, FPFLAG_DEFAULT_INPUT, pNull);
// RUN UPDATE LOOP
while( loopstatus == 1 )
{
if( function_parameter_FPCONFloopstep(&fps, CMDmode, &loopstatus) == 1)
{
// here goes the logic
functionparameter_CheckParametersAll(&fps); // check all parameter values
}
}
function_parameter_FPCONFexit( &fps );
return(0);
}
int_fast8_t AOcontrolLoop_perfTest_LinearSimulator_RUN(
const char *fpsname
)
{
FUNCTION_PARAMETER_STRUCT fps;
int FPSINTERFACE = 1;
if(function_parameter_struct_connect(fpsname, &fps, FPSCONNECT_RUN) == -1)
{
printf("ERROR: fps \"%s\" does not exist -> running without FPS interface\n", fpsname);
FPSINTERFACE = 0;
}
else
{
FPSINTERFACE = 1;
}
if(FPSINTERFACE == 1)
function_parameter_struct_disconnect(&fps);
return(0);
}