cfitsTK
AOloopControl.h
Go to the documentation of this file.
1 
14 #ifndef _AOLOOPCONTROL_H
15 #define _AOLOOPCONTROL_H
16 
17 
18 
19 
20 
21 
22 #define maxNBMB 100 // maximum number of mode blocks
23 #define MAXNBMODES 10000 // maximum number of control modes
24 #define MAX_NUMBER_TIMER 100
25 
26 
27 // logging
28 static int loadcreateshm_log = 0; // 1 if results should be logged in ASCII file
29 static FILE *loadcreateshm_fplog;
30 
31 
32 
33 
41 typedef struct
42 {
43  /* =============================================================================================== */
49  float loopfrequ;
51  // Hardware latency = time from DM command issued to WFS response changed
52  float hardwlatency;
55  // Computation time for direct WFS->DM mode through single matrix multiplication
56  float complatency;
59  // Computation time for full computation including open loop computation
63  int_fast8_t status;
64  int_fast8_t statusM;
65  int_fast8_t statusM1;
67  int_fast8_t GPUstatus[50];
68  uint_fast16_t NBtimer;
69  struct timespec timer[MAX_NUMBER_TIMER];
71  /* =============================================================================================== */
72 
73 
74 
75  /* =============================================================================================== */
80  int_fast8_t init;
81  uint_fast64_t cnt;
82  uint_fast64_t cntmax;
83  uint_fast64_t DMupdatecnt;
84  int_fast8_t kill;
85  char name[80];
86 
87  int_fast8_t init_RM;
88  int_fast8_t init_CM;
89  int_fast8_t init_CMc;
90  int_fast8_t initmapping;
91  char respMname[80];
92  char contrMname[80];
93 
94  /* =============================================================================================== */
95 
96 
97 
98  /* =============================================================================================== */
107  char WFSname[80];
108 
109  uint_fast32_t sizexWFS;
110  uint_fast32_t sizeyWFS;
111  uint_fast32_t sizeWFS;
112  uint_fast32_t activeWFScnt;
113  uint_fast32_t sizeWFS_active[100];
114  uint_fast64_t WFScnt;
115  uint_fast64_t WFScntRM;
117  int_fast8_t WFSnormalize;
118  float WFSnormfloor;
119  float WFStotalflux;
120  /* =============================================================================================== */
121 
122 
123 
124  /* =============================================================================================== */
129  char dmCname[80];
130  char dmdispname[80];
131  char dmRMname[80];
132  uint_fast8_t DMMODE;
133  uint_fast32_t sizexDM;
134  uint_fast32_t sizeyDM;
135  uint_fast32_t sizeDM;
136  uint_fast32_t activeDMcnt;
137  uint_fast32_t sizeDM_active;
139  /* =============================================================================================== */
140 
141 
142 
143  /* =============================================================================================== */
148  char DMmodesname[80];
149  // BLOCKS OF MODES
150  uint_fast16_t DMmodesNBblock;
151  uint_fast16_t NBmodes_block[100];
152  uint_fast16_t modeBlockIndex[MAXNBMODES];
153  uint_fast16_t indexmaxMB[maxNBMB];
154 
155  uint_fast16_t NBDMmodes;
156 
157  int_fast8_t init_wfsref0; // WFS reference image loaded
158 
159  float maxlimit; // maximum absolute value for mode values
160  float mult; // multiplication coefficient to be applied at each loop iteration
161 
162  /* =============================================================================================== */
163 
164 
165 
166 
167  /* =============================================================================================== */
172  int_fast8_t on;
173  float gain;
174  uint_fast16_t framesAve;
175  int_fast8_t DMprimaryWriteON;
176  int_fast8_t CMMODE;
177  int_fast8_t DMfilteredWriteON;
179  // MODAL AUTOTUNING
180  // limits
181  int_fast8_t AUTOTUNE_LIMITS_ON;
182  float AUTOTUNE_LIMITS_perc; // percentile limit for autotuning
183  float AUTOTUNE_LIMITS_mcoeff; // multiplicative coeff
184  float AUTOTUNE_LIMITS_delta; // autotune loop increment
185 
186  int_fast8_t AUTOTUNE_GAINS_ON;
191  /* =============================================================================================== */
192 
193 
194 
195  /* =============================================================================================== */
199  int_fast8_t ARPFon; // 1 if auto-regressive predictive filter is ON
201  float ARPFgain;
203  /* =============================================================================================== */
204 
205 
206 
207  /* =============================================================================================== */
212  int_fast8_t GPU0; // NB of GPU devices in set 0. 1+ if matrix multiplication done by GPU (set 0)
213  int_fast8_t GPU1; // NB of GPU devices in set 1. 1+ if matrix multiplication done by GPU (set 1)
214  int_fast8_t GPU2; // NB of GPU devices in set 2. 1+ if matrix multiplication done by GPU (set 2)
215  int_fast8_t GPU3; // NB of GPU devices in set 3. 1+ if matrix multiplication done by GPU (set 3)
216  int_fast8_t GPU4; // NB of GPU devices in set 4. 1+ if matrix multiplication done by GPU (set 4)
217  int_fast8_t GPU5; // NB of GPU devices in set 5. 1+ if matrix multiplication done by GPU (set 5)
218  int_fast8_t GPU6; // NB of GPU devices in set 6. 1+ if matrix multiplication done by GPU (set 6)
219  int_fast8_t GPU7; // NB of GPU devices in set 7. 1+ if matrix multiplication done by GPU (set 7)
220 
221  int_fast8_t GPUall; // 1 if scaling computations done by GPU
222  int_fast8_t GPUusesem; // 1 if using semaphores to control GPU
223  int_fast8_t AOLCOMPUTE_TOTAL_ASYNC; // 1 if performing image total in separate thread (runs faster, but image total dates from last frame)
224 
225  /* =============================================================================================== */
226 
227 
228 
229 
230 
231  /* =============================================================================================== */
236  // COMPUTED BY OPEN LOOP RETRIEVAL PROCESS
237  double RMSmodes;
239  uint_fast64_t RMSmodesCumulcnt;
240 
241  // block statistics (instantaneous)
242  double block_PFresrms[100]; // Prediction residual, meas RMS
243  double block_OLrms[100]; // open loop RMS
244  double block_Crms[100]; // correction RMS
245  double block_WFSrms[100]; // WFS residual RMS
246  double block_limFrac[100]; // fraction of mode coefficients exceeding limit
247 
248  double ALL_OLrms; // open loop RMS
249  double ALL_Crms; // correction RMS
250  double ALL_WFSrms; // WFS residual RMS
251  double ALL_limFrac; // fraction of mode coefficients exceeding limit
252 
253  // averaged
254  uint_fast32_t AveStats_NBpt; // averaging interval
255  double blockave_PFresrms[100]; // open loop RMS
256  double blockave_OLrms[100]; // open loop RMS
257  double blockave_Crms[100]; // correction RMS
258  double blockave_WFSrms[100]; // WFS residual RMS
259  double blockave_limFrac[100]; // fraction of mode coefficients exceeding limit
260 
261  double ALLave_OLrms; // open loop RMS
262  double ALLave_Crms; // correction RMS
263  double ALLave_WFSrms; // WFS residual RMS
264  double ALLave_limFrac; // fraction of mode coefficients exceeding limit
265 
266  /* =============================================================================================== */
267 
268 
269 
270  // semaphores for communication with GPU computing threads
271  //sem_t *semptr; // semaphore for this image
272 
274 
275 
276 
277 
278 
279 
280 
281 
282 
283 
284 
285 
286 
287 
288 
289 
290 
291 
292 
293 
294 
295 
296 
297 
298 
300 int_fast8_t init_AOloopControl();
301 
302 
303 
304 
305 
306 
307 
308 /* =============================================================================================== */
309 /* =============================================================================================== */
315 /* =============================================================================================== */
316 /* =============================================================================================== */
317 
318 
320 int_fast8_t AOloopControl_loadconfigure(long loop, int mode, int level);
321 
322 
324 int_fast8_t AOloopControl_InitializeMemory();
325 
326 
327 
328 
329 
330 
331 
332 
333 
334 
335 
336 
337 /* =============================================================================================== */
338 /* =============================================================================================== */
341 /* =============================================================================================== */
342 /* =============================================================================================== */
343 
344 
345 int_fast8_t AOloopControl_WFSzpupdate_loop(const char *IDzpdm_name, const char *IDzrespM_name, const char *IDwfszp_name);
346 
347 
348 int_fast8_t AOloopControl_WFSzeropoint_sum_update_loop(long loopnb, const char *ID_WFSzp_name, int NBzp, const char *IDwfsref0_name, const char *IDwfsref_name);
349 
351 int_fast8_t AOloopControl_run();
352 
353 
354 int_fast8_t ControlMatrixMultiply( float *cm_array, float *imarray, long m, long n, float *outvect);
355 
357 int_fast8_t set_DM_modes(long loop);
358 
359 int_fast8_t set_DM_modesRM(long loop);
360 
362 int_fast8_t AOcompute(long loop, int normalize);
363 
364 int_fast8_t AOloopControl_CompModes_loop(const char *ID_CM_name, const char *ID_WFSref_name, const char *ID_WFSim_name, const char *ID_WFSimtot_name, const char *ID_coeff_name);
365 
366 int_fast8_t AOloopControl_GPUmodecoeffs2dm_filt_loop(const char *modecoeffs_name, const char *DMmodes_name, int semTrigg, const char *out_name, int GPUindex, long loop, int offloadMode);
367 
368 long AOloopControl_sig2Modecoeff(const char *WFSim_name, const char *IDwfsref_name, const char *WFSmodes_name, const char *outname);
369 
370 long AOloopControl_computeWFSresidualimage(long loop, char *IDalpha_name);
371 
372 long AOloopControl_ComputeOpenLoopModes(long loop);
373 
374 int_fast8_t AOloopControl_AutoTuneGains(long loop, const char *IDout_name, float GainCoeff, long NBsamples);
375 
376 long AOloopControl_dm2dm_offload(const char *streamin, const char *streamout, float twait, float offcoeff, float multcoeff);
377 
378 
379 
380 
381 
382 
383 /* =============================================================================================== */
384 /* =============================================================================================== */
387 /* =============================================================================================== */
388 /* =============================================================================================== */
389 
390 int_fast8_t AOloopControl_setLoopNumber(long loop);
391 
392 int_fast8_t AOloopControl_setparam(long loop, const char *key, double value);
393 
394 
395 /* =============================================================================================== */
398 /* =============================================================================================== */
399 
400 int_fast8_t AOloopControl_loopon();
401 
402 int_fast8_t AOloopControl_loopoff();
403 
404 int_fast8_t AOloopControl_loopkill();
405 
406 int_fast8_t AOloopControl_loopstep(long loop, long NBstep);
407 
408 int_fast8_t AOloopControl_loopreset();
409 
410 
411 /* =============================================================================================== */
413 /* =============================================================================================== */
414 
415 int_fast8_t AOloopControl_logon();
416 
417 int_fast8_t AOloopControl_logoff();
418 
419 
420 /* =============================================================================================== */
422 /* =============================================================================================== */
423 
424 int_fast8_t AOloopControl_DMprimaryWrite_on();
425 
427 
429 
431 
432 
433 /* =============================================================================================== */
435 /* =============================================================================================== */
436 
438 
440 
441 int_fast8_t AOloopControl_set_AUTOTUNE_LIMITS_delta(float AUTOTUNE_LIMITS_delta);
442 
443 int_fast8_t AOloopControl_set_AUTOTUNE_LIMITS_perc(float AUTOTUNE_LIMITS_perc);
444 
445 int_fast8_t AOloopControl_set_AUTOTUNE_LIMITS_mcoeff(float AUTOTUNE_LIMITS_mcoeff);
446 
447 int_fast8_t AOloopControl_AUTOTUNE_GAINS_on();
448 
450 
451 /* =============================================================================================== */
453 /* =============================================================================================== */
454 
455 int_fast8_t AOloopControl_ARPFon();
456 
457 int_fast8_t AOloopControl_ARPFoff();
458 
459 /* =============================================================================================== */
461 /* =============================================================================================== */
462 
463 int_fast8_t AOloopControl_set_loopfrequ(float loopfrequ);
464 
465 int_fast8_t AOloopControl_set_hardwlatency_frame(float hardwlatency_frame);
466 
467 int_fast8_t AOloopControl_set_complatency_frame(float complatency_frame);
468 
469 int_fast8_t AOloopControl_set_wfsmextrlatency_frame(float wfsmextrlatency_frame);
470 
471 /* =============================================================================================== */
473 /* =============================================================================================== */
474 
475 int_fast8_t AOloopControl_setgain(float gain);
476 
477 int_fast8_t AOloopControl_setARPFgain(float gain);
478 
479 int_fast8_t AOloopControl_setWFSnormfloor(float WFSnormfloor);
480 
481 int_fast8_t AOloopControl_setmaxlimit(float maxlimit);
482 
483 int_fast8_t AOloopControl_setmult(float multcoeff);
484 
485 int_fast8_t AOloopControl_setframesAve(long nbframes);
486 
487 int_fast8_t AOloopControl_set_modeblock_gain(long loop, long blocknb, float gain, int add);// modal blocks
488 
489 int_fast8_t AOloopControl_scanGainBlock(long NBblock, long NBstep, float gainStart, float gainEnd, long NBgain);
490 
491 
492 
493 
494 
495 
496 
497 
498 
499 /* =============================================================================================== */
500 /* =============================================================================================== */
503 /* =============================================================================================== */
504 /* =============================================================================================== */
505 
506 int_fast8_t AOloopControl_OptimizePSF_LO(const char *psfstream_name, const char *IDmodes_name, const char *dmstream_name, long delayframe, long NBframes);
507 
508 int_fast8_t AOloopControl_DMmodulateAB(const char *IDprobeA_name, const char *IDprobeB_name, const char *IDdmstream_name, const char *IDrespmat_name, const char *IDwfsrefstream_name, double delay, long NBprobes);
509 
510 
511 
512 
513 /* =============================================================================================== */
514 /* =============================================================================================== */
517 /* =============================================================================================== */
518 /* =============================================================================================== */
519 
520 int_fast8_t AOloopControl_logprocess_modeval(const char *IDname);
521 
522 
523 
524 
525 
526 
527 
528 
529 
530 
531 
532 
533 
534 
535 /* =============================================================================================== */
536 /* =============================================================================================== */
538 /* =============================================================================================== */
539 /* =============================================================================================== */
540 
541 // "old" blocks (somewhat obsolete)
542 int_fast8_t AOloopControl_setgainrange(long m0, long m1, float gainval);
543 int_fast8_t AOloopControl_setlimitrange(long m0, long m1, float limval);
544 int_fast8_t AOloopControl_setmultfrange(long m0, long m1, float multfval);
545 int_fast8_t AOloopControl_setgainblock(long mb, float gainval);
546 int_fast8_t AOloopControl_setlimitblock(long mb, float limitval);
547 int_fast8_t AOloopControl_setmultfblock(long mb, float multfval);
548 
549 int_fast8_t AOloopControl_AutoTune();
550 
551 
552 
553 #endif
int_fast8_t AOloopControl_logon()
int_fast8_t AOloopControl_setgain(float gain)
Definition: AOloopControl.c:6223
int_fast8_t on
Definition: AOloopControl.h:172
int_fast8_t AOloopControl_scanGainBlock(long NBblock, long NBstep, float gainStart, float gainEnd, long NBgain)
Definition: AOloopControl.c:6454
int_fast8_t AOloopControl_run()
Main loop function.
Definition: AOloopControl.c:2875
uint_fast64_t WFScntRM
Definition: AOloopControl.h:115
int_fast8_t AOloopControl_setmult(float multcoeff)
Definition: AOloopControl.c:6275
int_fast8_t AOloopControl_WFSzpupdate_loop(const char *IDzpdm_name, const char *IDzrespM_name, const char *IDwfszp_name)
Definition: AOloopControl.c:2629
float AUTOTUNEGAINS_evolTimescale
Definition: AOloopControl.h:188
int_fast8_t GPU1
Definition: AOloopControl.h:213
int_fast8_t statusM1
Definition: AOloopControl.h:65
int_fast8_t GPU4
Definition: AOloopControl.h:216
int_fast8_t GPUusesem
Definition: AOloopControl.h:222
int_fast8_t AOloopControl_DMfilteredWrite_off()
Definition: AOloopControl.c:5988
int_fast8_t AOloopControl_setARPFgain(float gain)
Definition: AOloopControl.c:6235
int_fast8_t AOloopControl_AUTOTUNE_LIMITS_on()
Definition: AOloopControl.c:6007
double ALL_Crms
Definition: AOloopControl.h:249
Definition: AOloopControl.h:41
int_fast8_t AOloopControl_set_AUTOTUNE_LIMITS_mcoeff(float AUTOTUNE_LIMITS_mcoeff)
Definition: AOloopControl.c:6093
uint_fast16_t NBtimer
Definition: AOloopControl.h:68
int_fast8_t AOloopControl_DMfilteredWrite_on()
Definition: AOloopControl.c:5976
int_fast8_t AOloopControl_AutoTuneGains(long loop, const char *IDout_name, float GainCoeff, long NBsamples)
Definition: AOloopControl.c:5298
uint_fast32_t AveStats_NBpt
Definition: AOloopControl.h:254
double ALLave_WFSrms
Definition: AOloopControl.h:263
int_fast8_t AOloopControl_loopstep(long loop, long NBstep)
Definition: AOloopControl.c:5889
uint_fast32_t activeWFScnt
Definition: AOloopControl.h:112
int_fast8_t AOloopControl_setparam(long loop, const char *key, double value)
Definition: AOloopControl.c:5819
int_fast8_t init_RM
Definition: AOloopControl.h:87
float gain
Definition: AOloopControl.h:173
float mult
Definition: AOloopControl.h:160
long AOloopControl_dm2dm_offload(const char *streamin, const char *streamout, float twait, float offcoeff, float multcoeff)
Definition: AOloopControl.c:5754
float maxlimit
Definition: AOloopControl.h:159
int_fast8_t set_DM_modesRM(long loop)
Definition: AOloopControl.c:3305
int_fast8_t CMMODE
Definition: AOloopControl.h:176
int_fast8_t AOloopControl_set_wfsmextrlatency_frame(float wfsmextrlatency_frame)
Definition: AOloopControl.c:6204
int_fast8_t AOloopControl_AUTOTUNE_GAINS_off()
Definition: AOloopControl.c:6116
int_fast8_t AOloopControl_setmultfrange(long m0, long m1, float multfval)
Definition: AOloopControl.c:7319
uint_fast16_t NBDMmodes
Definition: AOloopControl.h:155
int_fast8_t AOloopControl_setmaxlimit(float maxlimit)
Definition: AOloopControl.c:6263
uint_fast32_t sizeyDM
Definition: AOloopControl.h:134
int_fast8_t GPU3
Definition: AOloopControl.h:215
int_fast8_t AOloopControl_loopkill()
Definition: AOloopControl.c:5877
int_fast8_t AOloopControl_loopreset()
Definition: AOloopControl.c:5909
int_fast8_t GPUall
Definition: AOloopControl.h:221
int_fast8_t AOloopControl_set_loopfrequ(float loopfrequ)
Definition: AOloopControl.c:6167
int_fast8_t init
Definition: AOloopControl.h:80
int_fast8_t AOcompute(long loop, int normalize)
Main computation function, runs once per loop iteration.
Definition: AOloopControl.c:3341
int_fast8_t AOloopControl_GPUmodecoeffs2dm_filt_loop(const char *modecoeffs_name, const char *DMmodes_name, int semTrigg, const char *out_name, int GPUindex, long loop, int offloadMode)
Definition: AOloopControl.c:3943
uint_fast32_t activeDMcnt
Definition: AOloopControl.h:136
int_fast8_t AOloopControl_ARPFon()
Definition: AOloopControl.c:6136
int_fast8_t init_wfsref0
Definition: AOloopControl.h:157
int_fast8_t AOloopControl_setLoopNumber(long loop)
Definition: AOloopControl.c:5805
int_fast8_t AOloopControl_AUTOTUNE_GAINS_on()
Definition: AOloopControl.c:6104
int_fast8_t AOloopControl_set_AUTOTUNE_LIMITS_delta(float AUTOTUNE_LIMITS_delta)
Definition: AOloopControl.c:6069
float hardwlatency_frame
Definition: AOloopControl.h:53
int_fast8_t DMfilteredWriteON
Definition: AOloopControl.h:177
int_fast8_t AOloopControl_DMmodulateAB(const char *IDprobeA_name, const char *IDprobeB_name, const char *IDdmstream_name, const char *IDrespmat_name, const char *IDwfsrefstream_name, double delay, long NBprobes)
Definition: AOloopControl.c:6590
double RMSmodesCumul
Definition: AOloopControl.h:238
long AUTOTUNEGAINS_NBsamples
Definition: AOloopControl.h:189
static int loadcreateshm_log
Definition: AOloopControl.h:28
int_fast8_t AOloopControl_logoff()
int_fast8_t AOloopControl_DMprimaryWrite_on()
Definition: AOloopControl.c:5952
int_fast8_t AOloopControl_set_complatency_frame(float complatency_frame)
Definition: AOloopControl.c:6192
uint_fast32_t sizeyWFS
Definition: AOloopControl.h:110
double ALLave_limFrac
Definition: AOloopControl.h:264
int_fast8_t AOloopControl_setlimitrange(long m0, long m1, float limval)
Definition: AOloopControl.c:7289
double ALLave_OLrms
Definition: AOloopControl.h:261
uint_fast16_t DMmodesNBblock
Definition: AOloopControl.h:150
float wfsmextrlatency
Definition: AOloopControl.h:60
int_fast8_t AOloopControl_InitializeMemory()
Initialize memory - function called within C code only (no CLI call)
int_fast8_t AOloopControl_OptimizePSF_LO(const char *psfstream_name, const char *IDmodes_name, const char *dmstream_name, long delayframe, long NBframes)
Definition: AOloopControl.c:6523
int_fast8_t GPU0
Definition: AOloopControl.h:212
uint_fast64_t cnt
Definition: AOloopControl.h:81
int_fast8_t GPU2
Definition: AOloopControl.h:214
double RMSmodes
Definition: AOloopControl.h:237
float AUTOTUNE_LIMITS_delta
Definition: AOloopControl.h:184
int_fast8_t init_CM
Definition: AOloopControl.h:88
int_fast8_t DMprimaryWriteON
Definition: AOloopControl.h:175
double ALL_OLrms
Definition: AOloopControl.h:248
uint_fast16_t framesAve
Definition: AOloopControl.h:174
float loopfrequ
Definition: AOloopControl.h:49
int_fast8_t AOloopControl_AUTOTUNE_LIMITS_off()
Definition: AOloopControl.c:6020
static FILE * loadcreateshm_fplog
Definition: AOloopControl.h:29
int_fast8_t GPU7
Definition: AOloopControl.h:219
int_fast8_t AUTOTUNE_LIMITS_ON
Definition: AOloopControl.h:181
int_fast8_t AOloopControl_setgainrange(long m0, long m1, float gainval)
Definition: AOloopControl.c:7259
int_fast8_t AOloopControl_setgainblock(long mb, float gainval)
Definition: AOloopControl.c:7349
float wfsmextrlatency_frame
Definition: AOloopControl.h:61
uint_fast64_t RMSmodesCumulcnt
Definition: AOloopControl.h:239
int_fast8_t set_DM_modes(long loop)
Sends modal commands to DM by matrix-vector multiplication.
Definition: AOloopControl.c:3235
long AOloopControl_computeWFSresidualimage(long loop, char *IDalpha_name)
Definition: AOloopControl.c:4191
float complatency
Definition: AOloopControl.h:56
double ALL_limFrac
Definition: AOloopControl.h:251
int_fast8_t init_CMc
Definition: AOloopControl.h:89
int_fast8_t AOloopControl_CompModes_loop(const char *ID_CM_name, const char *ID_WFSref_name, const char *ID_WFSim_name, const char *ID_WFSimtot_name, const char *ID_coeff_name)
Definition: AOloopControl.c:3822
int_fast8_t AOloopControl_set_AUTOTUNE_LIMITS_perc(float AUTOTUNE_LIMITS_perc)
Definition: AOloopControl.c:6082
uint_fast64_t DMupdatecnt
Definition: AOloopControl.h:83
int_fast8_t AOloopControl_ARPFoff()
Definition: AOloopControl.c:6148
float hardwlatency
Definition: AOloopControl.h:52
uint_fast64_t WFScnt
Definition: AOloopControl.h:114
double ALL_WFSrms
Definition: AOloopControl.h:250
int_fast8_t status
Definition: AOloopControl.h:63
int_fast8_t kill
Definition: AOloopControl.h:84
long AOloopControl_ComputeOpenLoopModes(long loop)
Definition: AOloopControl.c:4357
int_fast8_t AOloopControl_WFSzeropoint_sum_update_loop(long loopnb, const char *ID_WFSzp_name, int NBzp, const char *IDwfsref0_name, const char *IDwfsref_name)
Definition: AOloopControl.c:2759
int_fast8_t AOloopControl_setlimitblock(long mb, float limitval)
Definition: AOloopControl.c:7373
int_fast8_t AOloopControl_loopon()
Definition: AOloopControl.c:5850
int_fast8_t GPU5
Definition: AOloopControl.h:217
int_fast8_t statusM
Definition: AOloopControl.h:64
int_fast8_t AUTOTUNE_GAINS_ON
Definition: AOloopControl.h:186
uint_fast32_t sizexDM
Definition: AOloopControl.h:133
uint_fast32_t sizeDM_active
Definition: AOloopControl.h:137
uint_fast32_t sizeDM
Definition: AOloopControl.h:135
int_fast8_t AOloopControl_loadconfigure(long loop, int mode, int level)
Load configuation parameters from disk.
Definition: AOloopControl.c:1493
float WFSnormfloor
Definition: AOloopControl.h:118
long AOloopControl_sig2Modecoeff(const char *WFSim_name, const char *IDwfsref_name, const char *WFSmodes_name, const char *outname)
Definition: AOloopControl.c:4079
float WFStotalflux
Definition: AOloopControl.h:119
int_fast8_t AOloopControl_logprocess_modeval(const char *IDname)
Definition: AOloopControl.c:6814
float AUTOTUNE_LIMITS_mcoeff
Definition: AOloopControl.h:183
uint_fast32_t sizeWFS
Definition: AOloopControl.h:111
uint_fast64_t cntmax
Definition: AOloopControl.h:82
int_fast8_t AOloopControl_loopoff()
Definition: AOloopControl.c:5865
int_fast8_t AOloopControl_AutoTune()
Definition: AOloopControl.c:7445
uint_fast8_t DMMODE
Definition: AOloopControl.h:132
int_fast8_t init_AOloopControl()
Initialize AOloopControl command line interface.
float ARPFgain
Definition: AOloopControl.h:201
uint_fast32_t sizexWFS
Definition: AOloopControl.h:109
int_fast8_t AOloopControl_set_modeblock_gain(long loop, long blocknb, float gain, int add)
Definition: AOloopControl.c:6303
int_fast8_t initmapping
Definition: AOloopControl.h:90
float AUTOTUNE_LIMITS_perc
Definition: AOloopControl.h:182
int_fast8_t AOloopControl_DMprimaryWrite_off()
Definition: AOloopControl.c:5964
int_fast8_t GPU6
Definition: AOloopControl.h:218
float AUTOTUNEGAINS_updateGainCoeff
Definition: AOloopControl.h:187
int_fast8_t AOloopControl_setframesAve(long nbframes)
Definition: AOloopControl.c:6287
int_fast8_t AOLCOMPUTE_TOTAL_ASYNC
Definition: AOloopControl.h:223
double ALLave_Crms
Definition: AOloopControl.h:262
int_fast8_t AOloopControl_setmultfblock(long mb, float multfval)
Definition: AOloopControl.c:7396
int_fast8_t AOloopControl_set_hardwlatency_frame(float hardwlatency_frame)
Definition: AOloopControl.c:6179
int_fast8_t AOloopControl_setWFSnormfloor(float WFSnormfloor)
Definition: AOloopControl.c:6247
int_fast8_t WFSnormalize
Definition: AOloopControl.h:117
int_fast8_t ControlMatrixMultiply(float *cm_array, float *imarray, long m, long n, float *outvect)
Definition: AOloopControl.c:3213
float complatency_frame
Definition: AOloopControl.h:57