1. iarc.c iarc_start_readout() if(NDR < 0 || COAD > 36) should be: if(NDR < 0 || NDR > 36) Can COAD, NDR, be zero? Or is 1 minimum value? (Later discovered this function is not used at all?) 2. ic_set_bias() in iarc_controller.c if (bias < 0 || bias > 4) ---> 4 is not OK, should be if (bias < 0 || bias > 3)? Note: iarc_help.h has an INRANGE macro: if( !INRANGE(0, bias, 3)) 3. iarc_setup.str_dvbuf has no initial value. WEBGUI did not set it on the go, so no images were sent to DV. Can be fixed by initializing dvbuf to "A"? Also strncpy() for to str_dvbuf bad, use strxcpy(). 4. Save/DV options... Can we modify the logic, so it goes like: if( n_save_flag ) save data using datapath/filename if( n_dven ) tell DV to read disk file. else data data as datapath/temp.fits tell DV to read disk files. to: if( n_save_flag ) save data using datapath/filename if( n_dven ) if( n_save_flag ) tell dv to read datapath/filename else send data to DV via socket. why? for shared memory, could do --save 0 and --devn off. The above setting will write the temp.fits and send to DV. Later, may not want Saving or DV if using shared memory. 5. dv_rotate_image() bug: if n_dvrotation is not 0, -90, 180, -90, will send 'unknown' command to DV. 6. RAMP mode. Maybe we should talk about this mode. I want to better understand what is mode will be. 7. iarc_helper.c log functions... printl should just do fprintf cio_opf, buffer) - calling print_log() does another vsprintf() write( log_sockfd, buffer, strlen(buffer)) - call print_netlog does another vsprintf() also print_log(), and print_netlog() does a vsprintf() regards if FILE/fd is open. 8. GOs ... seems to be some errors in the coadding login in the handle_data_*_threaded() functions clients should pass full name as -f, n_filenum not used at all? Should iarc_server get rid of -n, and just use the -f as the filename. then client can use any naming convension it needs? SINGLE seem to coadd all frame, even itime_ndr frames? DOUBLE did not sum data into sig_buf. So I got some ped_buf-0 images. Maybe the data handling code is working in progress....?? 9. Suggestion 1. put all variable (house keeping, status, user option) in iarc_setup. Some are, and some aren't.. maybe in progress. 2. remove iarc.c - unnecessary layer? 3. commands to return error indicator.. OK ERR 4. Document directory. - I started some notes in /home/s2/public_html/software/arc client_howto.html - how a client could use the socket interface to take data. iarc_server.html - kind of like a man page for the iarc_server ic_controller.html - just my note on the controller code. Maybe you can start a iarc/doc directory. The client_howto.html and iarc_server could be include. X. I could work on shared memory interface, but would like discussion. iarc_server: -sm_create {0|1} - iarc should attach(0) or creates(1) the shared memory. go: -sm {0|1} - 1=copy data to shared memory. 0=do nothing. x. at start up, create or connect to shared memory per -sm_create command line arg. x. add code in iarc_data_handler.c to copy data to shared memory. if( iarc_setup.sm_enable ) { ..... } x. add iarc_setup_copy to shared memory. update during the GO.