cfitsTK
ImageStruct.h
Go to the documentation of this file.
1 
21 #ifndef _IMAGESTRUCT_H
22 #define _IMAGESTRUCT_H
23 
24 #include <stdint.h>
25 #include <stdio.h>
26 #include <unistd.h>
27 #include <stdlib.h>
28 #include <sys/types.h>
29 #include <unistd.h>
30 #include <semaphore.h>
31 
32 
33 
34 #define SHAREDMEMDIR "/tmp"
37 #define SEMAPHORE_MAXVAL 10
47 // Data types are defined as machine-independent types for portability
48 
49 #define _DATATYPE_UINT8 1
50 #define SIZEOF_DATATYPE_UINT8 1
51 
52 #define _DATATYPE_INT8 2
53 #define SIZEOF_DATATYPE_INT8 1
54 
55 #define _DATATYPE_UINT16 3
56 #define SIZEOF_DATATYPE_UINT16 2
57 
58 #define _DATATYPE_INT16 4
59 #define SIZEOF_DATATYPE_INT16 2
60 
61 #define _DATATYPE_UINT32 5
62 #define SIZEOF_DATATYPE_UINT32 4
63 
64 #define _DATATYPE_INT32 6
65 #define SIZEOF_DATATYPE_INT32 4
66 
67 #define _DATATYPE_UINT64 7
68 #define SIZEOF_DATATYPE_UINT64 8
69 
70 #define _DATATYPE_INT64 8
71 #define SIZEOF_DATATYPE_INT64 8
72 
73 #define _DATATYPE_FLOAT 9
74 #define SIZEOF_DATATYPE_FLOAT 4
75 
76 #define _DATATYPE_DOUBLE 10
77 #define SIZEOF_DATATYPE_DOUBLE 8
78 
79 #define _DATATYPE_COMPLEX_FLOAT 11
80 #define SIZEOF_DATATYPE_COMPLEX_FLOAT 8
81 
82 #define _DATATYPE_COMPLEX_DOUBLE 12
83 #define SIZEOF_DATATYPE_COMPLEX_DOUBLE 16
84 
85 #define _DATATYPE_EVENT_UI8_UI8_UI16_UI8 20
86 #define SIZEOF_DATATYPE_EVENT_UI8_UI8_UI16_UI8 5
87 
88 
89 
90 
91 #define Dtype 9
92 #define CDtype 11
103 typedef struct
104 {
105  char name[16];
106  char type;
108  union {
109  int64_t numl;
110  double numf;
111  char valstr[16];
112  } value;
113 
114  char comment[80];
115 
116 } __attribute__ ((__packed__)) IMAGE_KEYWORD;
117 
118 
119 
120 
121 
126 typedef struct
127 {
128  int64_t firstlong;
129  int64_t secondlong;
130 } TIMESPECFIXED;
131 
132 
133 
134 
135 
136 
137 
138 
139 
140 
141 
142 
143 
144 
145 
146 
147 
148 
149 
150 typedef struct
151 {
152  float re;
153  float im;
154 } complex_float;
155 
156 
157 typedef struct
158 {
159  double re;
160  double im;
162 
163 
164 
165 
197 typedef struct
198 {
199  uint8_t xpix;
200 
201  uint8_t ypix;
202 
207  uint16_t dtus;
208 
209  uint8_t lambda_index;
210 
211 } __attribute__ ((__packed__)) EVENT_UI8_UI8_UI16_UI8;
212 
213 
214 
215 
216 
217 
218 
219 
220 
228 typedef struct
229 {
231  char name[80];
232  // mem offset = 80
233 
238  uint8_t naxis;
239  // mem offset = 81
240 
245  uint32_t size[3];
246  // mem offset = 93
247 
252  uint64_t nelement;
253  // mem offset = 101
254 
272  uint8_t atype;
273  // mem offset = 102
274 
275  double creation_time;
276  double last_access;
277  // mem offset = 118
278 
295  union
296  {
297  struct timespec ts;
299  } atime;
300  // mem offset = 134
301 
302 
303  uint8_t shared;
304  uint8_t status;
305  // mem offset = 136
306 
307  uint8_t logflag;
308  uint16_t sem;
309  // mem offset = 139
310 
311  uint64_t : 0; // align array to 8-byte boundary for speed -> pushed mem offset to 144
312 
313  uint64_t cnt0;
314  uint64_t cnt1;
315  uint64_t cnt2;
317  uint8_t write;
319  uint16_t NBkw;
321  // total size is 171 byte = 1368 bit
322 
323 } __attribute__ ((__packed__)) IMAGE_METADATA;
324 
325 
326 
327 
328 
329 
330 
331 
340 typedef struct
341 {
342  char name[80];
343  // mem offset = 80
344 
345 
354  uint8_t used;
355  // mem offset = 81
356 
357  int32_t shmfd;
358  // mem offset = 85
359 
360  uint64_t memsize;
361  // mem offset = 93
362 
363  sem_t *semlog;
364  // mem offset = 101
365 
366  IMAGE_METADATA *md;
367  // mem offset = 109
368 
369 
370  uint64_t : 0; // align array to 8-byte boundary for speed
371  // mem offset pushed to 112
372 
385  union
386  {
387  uint8_t *UI8; // char
388  int8_t *SI8;
389 
390  uint16_t *UI16; // unsigned short
391  int16_t *SI16;
392 
393  uint32_t *UI32;
394  int32_t *SI32; // int
395 
396  uint64_t *UI64;
397  int64_t *SI64; // long
398 
399  float *F;
400  double *D;
401 
404 
405  EVENT_UI8_UI8_UI16_UI8 *event1121;
406  } array;
407  // mem offset 120
408 
409  sem_t **semptr;
410  // mem offset 128
411 
412  IMAGE_KEYWORD *kw;
413  // mem offset 136
414 
415  // total size is 136 byte = 1088 bit
416 
417 } __attribute__ ((__packed__)) IMAGE;
418 
419 
420 
421 
422 #endif
int64_t firstlong
Definition: ImageStruct.h:128
int8_t * SI8
Definition: ImageStruct.h:388
uint8_t atype
Data type.
Definition: ImageStruct.h:272
uint16_t sem
Definition: ImageStruct.h:308
uint8_t used
Image usage flag.
Definition: ImageStruct.h:354
char type
Definition: ImageStruct.h:106
uint16_t dtus
Detection time since beginning of "exposure" [us].
Definition: ImageStruct.h:207
uint8_t * UI8
Definition: ImageStruct.h:387
sem_t ** semptr
Definition: ImageStruct.h:409
complex_float * CF
Definition: ImageStruct.h:402
structure holding two 8-byte integers
Definition: ImageStruct.h:126
int16_t * SI16
Definition: ImageStruct.h:391
uint8_t logflag
Definition: ImageStruct.h:307
float im
Definition: ImageStruct.h:153
uint8_t shared
Definition: ImageStruct.h:303
uint8_t naxis
Number of axis.
Definition: ImageStruct.h:238
uint64_t nelement
Number of elements in image.
Definition: ImageStruct.h:252
int32_t * SI32
Definition: ImageStruct.h:394
EVENT_UI8_UI8_UI16_UI8 * event1121
Definition: ImageStruct.h:405
double last_access
Definition: ImageStruct.h:276
int32_t shmfd
Definition: ImageStruct.h:357
uint8_t lambda_index
Definition: ImageStruct.h:209
uint16_t NBkw
Definition: ImageStruct.h:319
uint8_t write
Definition: ImageStruct.h:317
Definition: ImageStruct.h:157
complex_double * CD
Definition: ImageStruct.h:403
int_fast8_t __attribute__((hot))
Definition: AOloopControl.c:3128
sem_t * semlog
Definition: ImageStruct.h:363
float re
Definition: ImageStruct.h:152
uint64_t cnt0
Definition: ImageStruct.h:313
uint8_t status
Definition: ImageStruct.h:304
uint64_t * UI64
Definition: ImageStruct.h:396
double creation_time
Definition: ImageStruct.h:275
float * F
Definition: ImageStruct.h:399
double numf
Definition: ImageStruct.h:110
int64_t numl
Definition: ImageStruct.h:109
int64_t * SI64
Definition: ImageStruct.h:397
double im
Definition: ImageStruct.h:160
IMAGE_METADATA * md
Definition: ImageStruct.h:366
uint32_t * UI32
Definition: ImageStruct.h:393
double re
Definition: ImageStruct.h:159
TIMESPECFIXED tsfixed
Definition: ImageStruct.h:298
uint8_t ypix
Definition: ImageStruct.h:201
uint8_t xpix
Definition: ImageStruct.h:199
uint64_t cnt2
Definition: ImageStruct.h:315
Definition: ImageStruct.h:150
uint64_t memsize
Definition: ImageStruct.h:360
IMAGE_KEYWORD * kw
Definition: ImageStruct.h:412
uint64_t cnt1
Definition: ImageStruct.h:314
uint16_t * UI16
Definition: ImageStruct.h:390
int64_t secondlong
Definition: ImageStruct.h:129
double * D
Definition: ImageStruct.h:400