-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathyao_disp.i
47 lines (42 loc) · 1.33 KB
/
yao_disp.i
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
/* yao_disp
* Proof of concept to display yao data from an external
* yao process dedicated to display
* This should have 2 main advantages:
* - it doesn't take resources from the main yao process
* - it allows for a clean separation of both function, code-wise and
* performance wise. Possibly allows for easiest coding of
* display-on-demand, i.e. the user selects what he/she wants to
* display (e.g. psf, phase)
* Right now, this si just a test that display wfs image and residual
* phase for wfs #1 (only for shwfs). But it works. Some sync issues,
* plus I need to code how to launch this (probably with spawn within
* a yao session, not sure)
*/
require,"svipc.i";
require,"yao.i";
shmkey=0x0badcafe;
semkey=0x0badbeef;
shm_init,shmkey;
max_disp_freq = 1.;
status = create_yao_window();
shm_var,shmkey,swrite(format="wfs%d_fimage",1),ffimage;
shm_var,shmkey,swrite(format="wfs%d_phase",1),phase;
loopCounter = shm_read(shmkey,"loop_counter")(1);
func yao_disp(void)
{
extern loopCounter;
lc = shm_read(shmkey,"loop_counter")(1);
if (loopCounter==lc) {
// no display, just wait some small amount of time
after,0.1/max_disp_freq,yao_disp;
return;
}
loopCounter = lc;
write,format="Loop Counter = %d\n",loopCounter;
fma;
plsys,1;
pli,phase;
plsys,2;
pli,ffimage;
after,1./max_disp_freq,yao_disp;
}