AdaptiveOpticsControl
COREMOD_memory.h File Reference

Function prototypes for cfitsTK memory functions. More...

Go to the source code of this file.

Data Structures

struct  LOGSHIM_CONF
 
struct  TCP_BUFFER_METADATA
 

Functions

int_fast8_t init_COREMOD_memory ()
 
1. MANAGE MEMORY AND IDENTIFIERS
int_fast8_t memory_monitor (const char *termttyname)
 
long compute_nb_image ()
 
long compute_nb_variable ()
 
long long compute_image_memory ()
 
long compute_variable_memory ()
 
long image_ID (const char *name)
 
long image_ID_noaccessupdate (const char *name)
 
long variable_ID (const char *name)
 
long next_avail_image_ID ()
 
long next_avail_variable_ID ()
 
int_fast8_t delete_image_ID (const char *imname)
 
int_fast8_t delete_image_ID_prefix (const char *prefix)
 
int_fast8_t delete_variable_ID (const char *varname)
 
long create_variable_long_ID (const char *name, long value)
 
long create_variable_string_ID (const char *name, const char *value)
 
long create_image_ID (const char *name, long naxis, uint32_t *size, uint8_t atype, int shared, int nbkw)
 
int_fast8_t clearall ()
 
void * save_fits_function (void *ptr)
 
2. KEYWORDS
long image_write_keyword_L (const char *IDname, const char *kname, long value, const char *comment)
 
long image_write_keyword_D (const char *IDname, const char *kname, double value, const char *comment)
 
long image_write_keyword_S (const char *IDname, const char *kname, const char *value, const char *comment)
 
long image_list_keywords (const char *IDname)
 
long image_read_keyword_D (const char *IDname, const char *kname, double *val)
 
long image_read_keyword_L (const char *IDname, const char *kname, long *val)
 
3. READ SHARED MEM IMAGE AND SIZE
long read_sharedmem_image_size (const char *name, const char *fname)
 
long read_sharedmem_image (const char *name)
 
4. CREATE IMAGE
long create_1Dimage_ID (const char *ID_name, uint32_t xsize)
 
long create_1DCimage_ID (const char *ID_name, uint32_t xsize)
 
long create_2Dimage_ID (const char *ID_name, uint32_t xsize, uint32_t ysize)
 
long create_2Dimage_ID_double (const char *ID_name, uint32_t xsize, uint32_t ysize)
 
long create_2DCimage_ID (const char *ID_name, uint32_t xsize, uint32_t ysize)
 
long create_2DCimage_ID_double (const char *ID_name, uint32_t xsize, uint32_t ysize)
 
long create_3Dimage_ID (const char *ID_name, uint32_t xsize, uint32_t ysize, uint32_t zsize)
 
long create_3Dimage_ID_double (const char *ID_name, uint32_t xsize, uint32_t ysize, uint32_t zsize)
 
long create_3DCimage_ID (const char *ID_name, uint32_t xsize, uint32_t ysize, uint32_t zsize)
 
5. CREATE VARIABLE
long create_variable_ID (const char *name, double value)
 
6. COPY IMAGE
long copy_image_ID (const char *name, const char *newname, int shared)
 
long chname_image_ID (const char *ID_name, const char *new_name)
 
long COREMOD_MEMORY_cp2shm (const char *IDname, const char *IDshmname)
 
7. DISPLAY / LISTS
int_fast8_t init_list_image_ID_ncurses (const char *termttyname)
 
void close_list_image_ID_ncurses (void)
 
int_fast8_t list_image_ID_ncurses ()
 
int_fast8_t list_image_ID_ofp (FILE *fo)
 
int_fast8_t list_image_ID_ofp_simple (FILE *fo)
 
int_fast8_t list_image_ID ()
 
int_fast8_t list_image_ID_file (const char *fname)
 
int_fast8_t list_variable_ID ()
 
int_fast8_t list_variable_ID_file (const char *fname)
 
8. TYPE CONVERSIONS TO AND FROM COMPLEX
int_fast8_t mk_complex_from_reim (const char *re_name, const char *im_name, const char *out_name, int sharedmem)
 
int_fast8_t mk_complex_from_amph (const char *am_name, const char *ph_name, const char *out_name, int sharedmem)
 
int_fast8_t mk_reim_from_complex (const char *in_name, const char *re_name, const char *im_name, int sharedmem)
 
int_fast8_t mk_amph_from_complex (const char *in_name, const char *am_name, const char *ph_name, int sharedmem)
 
int_fast8_t mk_reim_from_amph (const char *am_name, const char *ph_name, const char *re_out_name, const char *im_out_name, int sharedmem)
 
int_fast8_t mk_amph_from_reim (const char *re_name, const char *im_name, const char *am_out_name, const char *ph_out_name, int sharedmem)
 
9. VERIFY SIZE
int_fast8_t check_2Dsize (const char *ID_name, uint32_t xsize, uint32_t ysize)
 
int_fast8_t check_3Dsize (const char *ID_name, uint32_t xsize, uint32_t ysize, uint32_t zsize)
 
long COREMOD_MEMORY_check_2Dsize (const char *IDname, uint32_t xsize, uint32_t ysize)
 
long COREMOD_MEMORY_check_3Dsize (const char *IDname, uint32_t xsize, uint32_t ysize, uint32_t zsize)
 
10. COORDINATE CHANGE
int_fast8_t rotate_cube (const char *ID_name, const char *ID_out_name, int orientation)
 
11. SET IMAGE FLAGS / COUNTERS
long COREMOD_MEMORY_image_set_status (const char *IDname, int status)
 
long COREMOD_MEMORY_image_set_cnt0 (const char *IDname, int cnt0)
 
long COREMOD_MEMORY_image_set_cnt1 (const char *IDname, int cnt1)
 
12. MANAGE SEMAPHORES
long COREMOD_MEMORY_image_set_createsem (const char *IDname, long NBsem)
 
long COREMOD_MEMORY_image_set_sempost (const char *IDname, long index)
 
long COREMOD_MEMORY_image_set_sempost_byID (long ID, long index)
 
long COREMOD_MEMORY_image_set_sempost_loop (const char *IDname, long index, long dtus)
 
long COREMOD_MEMORY_image_set_semwait (const char *IDname, long index)
 
void * waitforsemID (void *ID)
 
long COREMOD_MEMORY_image_set_semwait_OR_IDarray (long *IDarray, long NB_ID)
 Wait for multiple images semaphores [OR], only works for sem0 only. More...
 
long COREMOD_MEMORY_image_set_semflush_IDarray (long *IDarray, long NB_ID)
 flush multiple semaphores More...
 
long COREMOD_MEMORY_image_set_semflush (const char *IDname, long index)
 set semaphore value to 0 More...
 
13. SIMPLE OPERATIONS ON STREAMS
long COREMOD_MEMORY_streamDiff (const char *IDstream0_name, const char *IDstream1_name, const char *IDstreammask_name, const char *IDstreamout_name, long semtrig)
 Difference between two streams. More...
 
long COREMOD_MEMORY_stream_halfimDiff (const char *IDstream_name, const char *IDstreamout_name, long semtrig)
 
long COREMOD_MEMORY_streamAve (const char *IDstream_name, int NBave, int mode, const char *IDout_name)
 Averages frames in stream. More...
 
long COREMOD_MEMORY_image_streamupdateloop (const char *IDinname, const char *IDoutname, long usperiod, long NBcubes, long period, long offsetus, const char *IDsync_name, int semtrig, int timingmode)
 takes a 3Dimage (circular buffer) and writes slices to a 2D image with time interval specified in us More...
 
long COREMOD_MEMORY_image_streamupdateloop_semtrig (const char *IDinname, const char *IDoutname, long period, long offsetus, const char *IDsync_name, int semtrig, int timingmode)
 takes a 3Dimage (circular buffer) and writes slices to a 2D image synchronized with an image semaphore More...
 
long COREMOD_MEMORY_streamDelay (const char *IDin_name, const char *IDout_name, long delayus, long dtus)
 
long COREMOD_MEMORY_SaveAll_snapshot (const char *dirname)
 
long COREMOD_MEMORY_SaveAll_sequ (const char *dirname, const char *IDtrig_name, long semtrig, long NBframes)
 
long COREMOD_MEMORY_image_NETWORKtransmit (const char *IDname, const char *IPaddr, int port, int mode, int RT_priority)
 
long COREMOD_MEMORY_image_NETWORKreceive (int port, int mode, int RT_priority)
 
long COREMOD_MEMORY_PixMapDecode_U (const char *inputstream_name, uint32_t xsizeim, uint32_t ysizeim, const char *NBpix_fname, const char *IDmap_name, const char *IDout_name, const char *IDout_pixslice_fname)
 
14. DATA LOGGING
int_fast8_t COREMOD_MEMORY_logshim_printstatus (const char *IDname)
 
int_fast8_t COREMOD_MEMORY_logshim_set_on (const char *IDname, int setv)
 
int_fast8_t COREMOD_MEMORY_logshim_set_logexit (const char *IDname, int setv)
 
long COREMOD_MEMORY_sharedMem_2Dim_log (const char *IDname, uint32_t zsize, const char *logdir, const char *IDlogdata_name)
 

Detailed Description

Function prototypes for cfitsTK memory functions.

Functions to handle images and streams

Author
O. Guyon
Date
18 Jun 2017
Bug:
No known bugs.

Function Documentation

int_fast8_t check_2Dsize ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize 
)
int_fast8_t check_3Dsize ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize,
uint32_t  zsize 
)
long chname_image_ID ( const char *  ID_name,
const char *  new_name 
)
int_fast8_t clearall ( )
void close_list_image_ID_ncurses ( void  )
long long compute_image_memory ( )
long compute_nb_image ( )
long compute_nb_variable ( )
long compute_variable_memory ( )
long copy_image_ID ( const char *  name,
const char *  newname,
int  shared 
)
long COREMOD_MEMORY_check_2Dsize ( const char *  IDname,
uint32_t  xsize,
uint32_t  ysize 
)
long COREMOD_MEMORY_check_3Dsize ( const char *  IDname,
uint32_t  xsize,
uint32_t  ysize,
uint32_t  zsize 
)
long COREMOD_MEMORY_cp2shm ( const char *  IDname,
const char *  IDshmname 
)

copy an image to shared memory

long COREMOD_MEMORY_image_NETWORKreceive ( int  port,
int  mode,
int  RT_priority 
)
long COREMOD_MEMORY_image_NETWORKtransmit ( const char *  IDname,
const char *  IPaddr,
int  port,
int  mode,
int  RT_priority 
)

continuously transmits 2D image through TCP link mode = 1, force counter to be used for synchronization, ignore semaphores if they exist

long COREMOD_MEMORY_image_set_cnt0 ( const char *  IDname,
int  cnt0 
)
long COREMOD_MEMORY_image_set_cnt1 ( const char *  IDname,
int  cnt1 
)
long COREMOD_MEMORY_image_set_createsem ( const char *  IDname,
long  NBsem 
)
long COREMOD_MEMORY_image_set_semflush ( const char *  IDname,
long  index 
)

set semaphore value to 0

long COREMOD_MEMORY_image_set_semflush_IDarray ( long *  IDarray,
long  NB_ID 
)

flush multiple semaphores

long COREMOD_MEMORY_image_set_sempost ( const char *  IDname,
long  index 
)
long COREMOD_MEMORY_image_set_sempost_byID ( long  ID,
long  index 
)
long COREMOD_MEMORY_image_set_sempost_loop ( const char *  IDname,
long  index,
long  dtus 
)
long COREMOD_MEMORY_image_set_semwait ( const char *  IDname,
long  index 
)
long COREMOD_MEMORY_image_set_semwait_OR_IDarray ( long *  IDarray,
long  NB_ID 
)

Wait for multiple images semaphores [OR], only works for sem0 only.

long COREMOD_MEMORY_image_set_status ( const char *  IDname,
int  status 
)
long COREMOD_MEMORY_image_streamupdateloop ( const char *  IDinname,
const char *  IDoutname,
long  usperiod,
long  NBcubes,
long  period,
long  offsetus,
const char *  IDsync_name,
int  semtrig,
int  timingmode 
)

takes a 3Dimage (circular buffer) and writes slices to a 2D image with time interval specified in us

If NBcubes=1, then the circular buffer named IDinname is sent to IDoutname at a frequency of 1/usperiod MHz If NBcubes>1, several circular buffers are used, named ("%S_%03ld", IDinname, cubeindex). Semaphore semtrig of image IDsync_name triggers switch between circular buffers, with a delay of offsetus. The number of consecutive sem posts required to advance to the next circular buffer is period

Parameters
IDinnameName of DM circular buffer (appended by _000, _001 etc... if NBcubes>1)
IDoutnameOutput DM channel stream
usperiodInterval between consecutive frames [us]
NBcubesNumber of input DM circular buffers
periodIf NBcubes>1: number of input triggers required to advance to next input buffer
offsetusIf NBcubes>1: time offset [us] between input trigger and input buffer switch
IDsync_nameIf NBcubes>1: Stream used for synchronization
semtrigIf NBcubes>1: semaphore used for synchronization
timingmodeNot used

takes a 3Dimage (circular buffer) and writes slices to a 2D image with time interval specified in us

long COREMOD_MEMORY_image_streamupdateloop_semtrig ( const char *  IDinname,
const char *  IDoutname,
long  period,
long  offsetus,
const char *  IDsync_name,
int  semtrig,
int  timingmode 
)

takes a 3Dimage (circular buffer) and writes slices to a 2D image synchronized with an image semaphore

Parameters
[in]IDinname3D circular buffer of frames to be written
[out]IDoutname2D output stream
[in]periodnumber of semaphore waits required to advance to next slice in the circular buffer
[in]offsetusfixed time offset between trigger stream and output write
[in]IDsync_nametrigger stream
[in]smmtrigsemaphore index for trigger
[in]timingmode
int_fast8_t COREMOD_MEMORY_logshim_printstatus ( const char *  IDname)
int_fast8_t COREMOD_MEMORY_logshim_set_logexit ( const char *  IDname,
int  setv 
)
int_fast8_t COREMOD_MEMORY_logshim_set_on ( const char *  IDname,
int  setv 
)
long COREMOD_MEMORY_PixMapDecode_U ( const char *  inputstream_name,
uint32_t  xsizeim,
uint32_t  ysizeim,
const char *  NBpix_fname,
const char *  IDmap_name,
const char *  IDout_name,
const char *  IDout_pixslice_fname 
)
long COREMOD_MEMORY_SaveAll_sequ ( const char *  dirname,
const char *  IDtrig_name,
long  semtrig,
long  NBframes 
)
long COREMOD_MEMORY_SaveAll_snapshot ( const char *  dirname)
long COREMOD_MEMORY_sharedMem_2Dim_log ( const char *  IDname,
uint32_t  zsize,
const char *  logdir,
const char *  IDlogdata_name 
)

logs a shared memory stream onto disk uses semlog semaphore

uses data cube buffer to store frames if an image name logdata exists (should ideally be in shared mem), then this will be included in the timing txt file

create the 2 buffers

measure time

measure time

cases: index>zsize-1 buffer full wOK==0 && index>0

save image

long COREMOD_MEMORY_stream_halfimDiff ( const char *  IDstream_name,
const char *  IDstreamout_name,
long  semtrig 
)

difference between two halves of stream image

long COREMOD_MEMORY_streamAve ( const char *  IDstream_name,
int  NBave,
int  mode,
const char *  IDout_name 
)

Averages frames in stream.

Parameters
[in]IDstream_nameInput stream
[in]NBaveNumber of consecutive frames to be averaged together
[in]mode1: Perform average once, exit when completed and write output to local image 2: Run forever, write output to shared mem stream
[out]IDout_nameoutput stream name
long COREMOD_MEMORY_streamDelay ( const char *  IDin_name,
const char *  IDout_name,
long  delayus,
long  dtus 
)

IDout_name is a time-delayed copy of IDin_name

long COREMOD_MEMORY_streamDiff ( const char *  IDstream0_name,
const char *  IDstream1_name,
const char *  IDstreammask_name,
const char *  IDstreamout_name,
long  semtrig 
)

Difference between two streams.

long create_1DCimage_ID ( const char *  ID_name,
uint32_t  xsize 
)
long create_1Dimage_ID ( const char *  ID_name,
uint32_t  xsize 
)
long create_2DCimage_ID ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize 
)
long create_2DCimage_ID_double ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize 
)
long create_2Dimage_ID ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize 
)
long create_2Dimage_ID_double ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize 
)
long create_3DCimage_ID ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize,
uint32_t  zsize 
)
long create_3Dimage_ID ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize,
uint32_t  zsize 
)
long create_3Dimage_ID_double ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize,
uint32_t  zsize 
)
long create_image_ID ( const char *  name,
long  naxis,
uint32_t *  size,
uint8_t  atype,
int  shared,
int  nbkw 
)
long create_variable_ID ( const char *  name,
double  value 
)

floating point double

long create_variable_long_ID ( const char *  name,
long  value 
)

long

long create_variable_string_ID ( const char *  name,
const char *  value 
)

string

int_fast8_t delete_image_ID ( const char *  imname)
int_fast8_t delete_image_ID_prefix ( const char *  prefix)
int_fast8_t delete_variable_ID ( const char *  varname)
long image_ID ( const char *  name)
long image_ID_noaccessupdate ( const char *  name)
long image_list_keywords ( const char *  IDname)
long image_read_keyword_D ( const char *  IDname,
const char *  kname,
double *  val 
)
long image_read_keyword_L ( const char *  IDname,
const char *  kname,
long *  val 
)
long image_write_keyword_D ( const char *  IDname,
const char *  kname,
double  value,
const char *  comment 
)
long image_write_keyword_L ( const char *  IDname,
const char *  kname,
long  value,
const char *  comment 
)
long image_write_keyword_S ( const char *  IDname,
const char *  kname,
const char *  value,
const char *  comment 
)
int_fast8_t init_COREMOD_memory ( )
int_fast8_t init_list_image_ID_ncurses ( const char *  termttyname)
int_fast8_t list_image_ID ( )
int_fast8_t list_image_ID_file ( const char *  fname)
int_fast8_t list_image_ID_ncurses ( )
int_fast8_t list_image_ID_ofp ( FILE *  fo)
int_fast8_t list_image_ID_ofp_simple ( FILE *  fo)
int_fast8_t list_variable_ID ( )
int_fast8_t list_variable_ID_file ( const char *  fname)
int_fast8_t memory_monitor ( const char *  termttyname)
int_fast8_t mk_amph_from_complex ( const char *  in_name,
const char *  am_name,
const char *  ph_name,
int  sharedmem 
)
int_fast8_t mk_amph_from_reim ( const char *  re_name,
const char *  im_name,
const char *  am_out_name,
const char *  ph_out_name,
int  sharedmem 
)
int_fast8_t mk_complex_from_amph ( const char *  am_name,
const char *  ph_name,
const char *  out_name,
int  sharedmem 
)
int_fast8_t mk_complex_from_reim ( const char *  re_name,
const char *  im_name,
const char *  out_name,
int  sharedmem 
)
int_fast8_t mk_reim_from_amph ( const char *  am_name,
const char *  ph_name,
const char *  re_out_name,
const char *  im_out_name,
int  sharedmem 
)
int_fast8_t mk_reim_from_complex ( const char *  in_name,
const char *  re_name,
const char *  im_name,
int  sharedmem 
)
long next_avail_image_ID ( )
long next_avail_variable_ID ( )
long read_sharedmem_image ( const char *  name)
long read_sharedmem_image_size ( const char *  name,
const char *  fname 
)
int_fast8_t rotate_cube ( const char *  ID_name,
const char *  ID_out_name,
int  orientation 
)
void* save_fits_function ( void *  ptr)
long variable_ID ( const char *  name)
void* waitforsemID ( void *  ID)