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 
221 
222 
223 
231 typedef struct
232 {
234  char name[80];
235  // mem offset = 80
236 
241  uint8_t naxis;
242  // mem offset = 81
243 
248  uint32_t size[3];
249  // mem offset = 93
250 
255  uint64_t nelement;
256  // mem offset = 101
257 
275  uint8_t atype;
276  // mem offset = 102
277 
278  double creation_time;
279  double last_access;
280  // mem offset = 118
281 
298  union
299  {
300  struct timespec ts;
302  } atime;
303  // mem offset = 134
304 
305 
306  uint8_t shared;
307  uint8_t status;
308  // mem offset = 136
309 
310  uint8_t logflag;
311  uint16_t sem;
312  // mem offset = 139
313 
314  uint64_t : 0; // align array to 8-byte boundary for speed -> pushed mem offset to 144
315 
316  uint64_t cnt0;
317  uint64_t cnt1;
318  uint64_t cnt2;
320  uint8_t write;
322  uint16_t NBkw;
324  // total size is 171 byte = 1368 bit
325 
326 } __attribute__ ((__packed__)) IMAGE_METADATA;
327 
328 
329 
330 
331 
332 
333 
334 
343 typedef struct
344 {
345  char name[80];
346  // mem offset = 80
347 
348 
357  uint8_t used;
358  // mem offset = 81
359 
360  int32_t shmfd;
361  // mem offset = 85
362 
363  uint64_t memsize;
364  // mem offset = 93
365 
366  sem_t *semlog;
367  // mem offset = 101
368 
369  IMAGE_METADATA *md;
370  // mem offset = 109
371 
372 
373  uint64_t : 0; // align array to 8-byte boundary for speed
374  // mem offset pushed to 112
375 
388  union
389  {
390  uint8_t *UI8; // char
391  int8_t *SI8;
392 
393  uint16_t *UI16; // unsigned short
394  int16_t *SI16;
395 
396  uint32_t *UI32;
397  int32_t *SI32; // int
398 
399  uint64_t *UI64;
400  int64_t *SI64; // long
401 
402  float *F;
403  double *D;
404 
407 
408  EVENT_UI8_UI8_UI16_UI8 *event1121;
409  } array;
410  // mem offset 120
411 
412  sem_t **semptr;
413  // mem offset 128
414 
415  IMAGE_KEYWORD *kw;
416  // mem offset 136
417 
418  // total size is 136 byte = 1088 bit
419 
420 } __attribute__ ((__packed__)) IMAGE;
421 
422 
423 
424 
425 #endif
int64_t firstlong
Definition: ImageStruct.h:128
int8_t * SI8
Definition: ImageStruct.h:391
uint8_t atype
Data type.
Definition: ImageStruct.h:275
uint16_t sem
Definition: ImageStruct.h:311
uint8_t used
Image usage flag.
Definition: ImageStruct.h:357
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:390
sem_t ** semptr
Definition: ImageStruct.h:412
complex_float * CF
Definition: ImageStruct.h:405
structure holding two 8-byte integers
Definition: ImageStruct.h:126
int16_t * SI16
Definition: ImageStruct.h:394
uint8_t logflag
Definition: ImageStruct.h:310
float im
Definition: ImageStruct.h:153
uint8_t shared
Definition: ImageStruct.h:306
uint8_t naxis
Number of axis.
Definition: ImageStruct.h:241
uint64_t nelement
Number of elements in image.
Definition: ImageStruct.h:255
Keyword The IMAGE_KEYWORD structure includes :
Definition: ImageStruct.h:103
int32_t * SI32
Definition: ImageStruct.h:397
EVENT_UI8_UI8_UI16_UI8 * event1121
Definition: ImageStruct.h:408
double last_access
Definition: ImageStruct.h:279
int32_t shmfd
Definition: ImageStruct.h:360
uint8_t lambda_index
Definition: ImageStruct.h:209
uint16_t NBkw
Definition: ImageStruct.h:322
uint8_t write
Definition: ImageStruct.h:320
Definition: ImageStruct.h:157
complex_double * CD
Definition: ImageStruct.h:406
sem_t * semlog
Definition: ImageStruct.h:366
float re
Definition: ImageStruct.h:152
uint64_t cnt0
Definition: ImageStruct.h:316
uint8_t status
Definition: ImageStruct.h:307
uint64_t * UI64
Definition: ImageStruct.h:399
double creation_time
Definition: ImageStruct.h:278
float * F
Definition: ImageStruct.h:402
double numf
Definition: ImageStruct.h:110
int64_t numl
Definition: ImageStruct.h:109
int64_t * SI64
Definition: ImageStruct.h:400
double im
Definition: ImageStruct.h:160
IMAGE_METADATA * md
Definition: ImageStruct.h:369
uint32_t * UI32
Definition: ImageStruct.h:396
double re
Definition: ImageStruct.h:159
TIMESPECFIXED tsfixed
Definition: ImageStruct.h:301
uint8_t ypix
Definition: ImageStruct.h:201
uint8_t xpix
Definition: ImageStruct.h:199
uint64_t cnt2
Definition: ImageStruct.h:318
Definition: ImageStruct.h:150
uint64_t memsize
Definition: ImageStruct.h:363
IMAGE_KEYWORD * kw
Definition: ImageStruct.h:415
uint64_t cnt1
Definition: ImageStruct.h:317
uint16_t * UI16
Definition: ImageStruct.h:393
int64_t secondlong
Definition: ImageStruct.h:129
double * D
Definition: ImageStruct.h:403