ngc 1.4.0
 
Loading...
Searching...
No Matches
ngcdcsACQ_DATA.hpp
Go to the documentation of this file.
1
7#ifndef ngcdcsACQ_DATA_H
8#define ngcdcsACQ_DATA_H
9
10
11#ifndef __cplusplus
12#error This is a C++ include file and cannot be used from plain C
13#endif
14
15#include <ngc/core/ngcb.h>
16#include <ngc/core/ngcbDrv.h>
17#include <ngc/core/ngcbOBJ.hpp>
18#include <ngc/core/ngcppInt.h>
20
27
30
32 int errPort;
33
36
39
42
45
47 int exp;
48
50 char host[64];
51
53 char dev[ngcppMAX_DEV][128];
54
56 int seqIdx;
57
59 char name[64];
60
62 char spec[64];
63
66 char *evar;
67 int i;
68
69 dataPort = 0; // chosen by system
70 cmdPort = 0; // chosen by system
71 errPort = 0; // chosen by system
72 numDataClient = 2; // two clients (RTD and SERVER)
73 joinerDelay = -1; // use system default
74 transferMode = ngcppTMODE_SCIENCE; // oldest frame in queue
75 connect = 1; // data connection enabled
76 exp = 1; // exposures enabled
77 seqIdx = 0; // associated to first sequencer
78
79 evar = getenv("HOSTNAME");
80 if (evar != NULL) str2str(host, evar, sizeof(host) - 1);
81 else strcpy(host, "localhost");
82
83 name[0] = '\0';
84 spec[0] = '\0';
85
86 sprintf(dev[0], ngcbDMA_DEFAULT_DEVICE);
87 for (i=1;i<ngcppMAX_DEV;i++) dev[i][0] = '\0';
88 }
89};
90
96 int type;
97
99 int sx;
100
102 int sy;
103
105 int nx;
106
108 int ny;
109
113 sx = 1; sy = 1; nx = 0; ny = 0;
114 }
115};
116
122 int type;
123
125 char name[64];
126
128 char paramName[64];
129
132
134 int gen;
135
137 int store;
138
141
144
146 int first;
147
149 int last;
150
153
155 int local;
156
158 int sx;
159
161 int sy;
162
164 int nx;
165
167 int ny;
168
171
174
177
179 int gen_x;
180
183
186
189 type = 0;
190 name[0] = '\0';
191 paramName[0] = '\0';
192 sem = NULL;
193 defined = 0;
194 gen = 0;
195 store = 0;
196 expCnt = 0; // always initialize to zero at exposure start
197 breakCnt = 0; // always initialize to zero at exposure start
198 first = 0; // always initialize to zero at exposure start
199 last = 0; // always initialize to zero at exposure start
200 breakCond = 0; // no break condition (take all until exp.-end)
201 local = 0; // do not store to locla media
202 sx = 1; // take frame as it is
203 sy = 1; // take frame as it is
204 nx = 0; // take frame as it is
205 ny = 0; // take frame as it is
206 store_x = -1; // invalidate
207 gen_x = -1; // invalidate
208 breakCond_x = -1; // invalidate
209 export2Shm = 1; // export to shared memory
210 }
211};
212
217{
218public:
221
223 explicit ngcdcsACQ_DATA(const ngcdcs_acq_cfg_t &cfg);
224
226 virtual ~ngcdcsACQ_DATA();
227
230
232 int numDet;
233
236
239
241 void Configure(const ngcdcs_acq_cfg_t &newConf);
242
245
247 int Initialize();
248
250
251 int Open();
252
254 int Close();
255
257 int Kill(int id);
258
260 int Fd();
261
263 int BitPix(int dataType);
264
266 int FrameDef(ngcdcs_framedef_t *frameDef);
267
269 int AvailableFrames();
270
272 int FrameType(const char *name);
273
275 int FrameIdx(int ftype);
276
278 void FrameName(char *name, int ftype);
279
281 void FrameParam(char *paramName, int ftype);
282
284 void FrameParam(char *paramName, const char *name);
285
287 void SetRequest(int ftype);
288
290 void SetRequest(int sx, int sy, int nx, int ny);
291
293 void SetRequest(int ftype, int sx, int sy, int nx, int ny);
294
296 int Request();
297
299 int Request(int ftype);
300
302 int Request(int sx, int sy, int nx, int ny);
303
305 int Request(int ftype, int sx, int sy, int nx, int ny);
306
308 int Retransmit();
309
311 int Retransmit(int sx, int sy, int nx, int ny);
312
314 int Cancel();
315
317 int Wait();
318
320 int Skip();
321
323 int GetFrame(void *buffer, int chipPid = 0);
324
326 int GetFrame(void *buffer, int sx, int sy, int nx, int ny,
327 int chipId = 0);
328
330 int GetFrame(ngcpp_frame_t *frame, int chipId = 0);
331
333 int GetFrame(ngcpp_frame_t *frame, int sx, int sy, int nx, int ny,
334 int chipId = 0);
335
336
338 int Accept(int flags=0);
339
341 int Accept(int sx, int sy, int nx, int ny, int flags=0);
342
344 int Receive(void *buffer, size_t offset, size_t size);
345
347 int Receive(ngcpp_frame_t *frame, size_t offset, size_t size);
348
350 void Scale(ngcpp_frame_t *frame);
351
353 void Scale(void *buffer, int nx, int ny, int *dataType, int *divisor);
354
356 void Scale(void *buffer, ngcdcs_finfo_t *f);
357
359 void Scale(void *buffer);
360
362 void Cv16(void *buffer);
363
365 void Cv16(void *buffer, ngcdcs_finfo_t *f);
366
368 int Valid();
369
371 int FrameType();
372
374 int FrameIdx();
375
377 void FrameName(char *);
378
380 int DataType();
381
383 int Divisor();
384
386 int BZERO();
387
389 double ExpFactor();
390
392 int FrameCounter();
393
395 int FrameCounter0();
396
398 int SetupId();
399
401 int StartX();
402
404 int StartY();
405
407 int NX();
408
410 int NY();
411
413 int Error();
414
416 size_t NumPix();
417
419 size_t FrameSize();
420
422 int DatumSize();
423
425 int BitPix();
426
428 double TimeStamp();
429
431 int Transferring();
432
434 int Term();
435
437 int AppDataSize();
438
440 char *AppData();
441
442protected:
443
444private:
446 void Init_();
447
449 ngcdcs_acq_cfg_t cfg_;
450
452 int fdData_;
453
455 int pending_;
456
458 ngcdcs_acqreq_t req_;
459
461 ngcpp_hdr_t header_;
462
465
467 int numTypes_;
468
470 int types_;
471};
472
473#endif
ngcbOBJ()
Constructor.
Definition ngcbOBJ.cpp:34
Definition ngcbTHREAD.hpp:67
int AppDataSize()
Return application data size.
Definition ngcdcsACQ_DATA.cpp:1114
int GetFrame(void *buffer, int chipPid=0)
Get frame as it is.
Definition ngcdcsACQ_DATA.cpp:821
int Wait()
Wait for data event.
Definition ngcdcsACQ_DATA.cpp:575
int Receive(void *buffer, size_t offset, size_t size)
Receive frame data.
Definition ngcdcsACQ_DATA.cpp:701
void Configure(const ngcdcs_acq_cfg_t &newConf)
Overall configuration.
Definition ngcdcsACQ_DATA.cpp:75
int FrameCounter0()
Return frame counter start value.
Definition ngcdcsACQ_DATA.cpp:970
int FrameDef(ngcdcs_framedef_t *frameDef)
Currently defined frame types.
Definition ngcdcsACQ_DATA.cpp:253
int DataType()
Return data type.
Definition ngcdcsACQ_DATA.cpp:960
int Initialize()
Intialize data connection.
Definition ngcdcsACQ_DATA.cpp:99
int NX()
Return x-dimension.
Definition ngcdcsACQ_DATA.cpp:1014
int Kill(int id)
Kill data client.
Definition ngcdcsACQ_DATA.cpp:207
int Open()
Open data connection ngcppScale(frame);.
Definition ngcdcsACQ_DATA.cpp:130
int FrameCounter()
Return frame counter.
Definition ngcdcsACQ_DATA.cpp:965
int Error()
Return error code.
Definition ngcdcsACQ_DATA.cpp:1024
int Close()
Close data connection.
Definition ngcdcsACQ_DATA.cpp:186
void FrameParam(char *paramName, int ftype)
Get frame parameter by type.
Definition ngcdcsACQ_DATA.cpp:317
void Scale(ngcpp_frame_t *frame)
Apply scale factor.
Definition ngcdcsACQ_DATA.cpp:828
void FrameName(char *name, int ftype)
Get frame name by frame type.
Definition ngcdcsACQ_DATA.cpp:302
int StartX()
Return start pixel in x-direction.
Definition ngcdcsACQ_DATA.cpp:1004
ngcdcs_acq_cfg_t * Cfg()
Get pointer to configuration.
Definition ngcdcsACQ_DATA.cpp:94
int Valid()
Valid frame received.
Definition ngcdcsACQ_DATA.cpp:940
int NY()
Return y-dimension.
Definition ngcdcsACQ_DATA.cpp:1019
void SetRequest(int ftype)
Setup data request (type)
Definition ngcdcsACQ_DATA.cpp:352
int Request()
Send data request (same request again)
Definition ngcdcsACQ_DATA.cpp:383
char * AppData()
Return pointer to application data.
Definition ngcdcsACQ_DATA.cpp:1119
size_t NumPix()
Return number of pixels in frame.
Definition ngcdcsACQ_DATA.cpp:1054
int BitPix()
Return current bitpix-value.
Definition ngcdcsACQ_DATA.cpp:1078
int numDet
Number of detectors in mosaic.
Definition ngcdcsACQ_DATA.hpp:232
virtual ~ngcdcsACQ_DATA()
Destructor.
Definition ngcdcsACQ_DATA.cpp:42
int SetupId()
Return setup-id.
Definition ngcdcsACQ_DATA.cpp:999
int Retransmit()
Retransmit frame (same)
Definition ngcdcsACQ_DATA.cpp:527
double ExpFactor()
Return factor for EXPTIME.
Definition ngcdcsACQ_DATA.cpp:985
int Skip()
Skip data frame.
Definition ngcdcsACQ_DATA.cpp:598
int BZERO()
Return frame BZERO.
Definition ngcdcsACQ_DATA.cpp:980
int Fd()
Return data connection file descriptor.
Definition ngcdcsACQ_DATA.cpp:227
int FrameType()
Get current frame type.
Definition ngcdcsACQ_DATA.cpp:945
int DatumSize()
Return pixel datum size in bytes.
Definition ngcdcsACQ_DATA.cpp:1029
int FrameIdx()
Get index for current frame type.
Definition ngcdcsACQ_DATA.cpp:955
void Cv16(void *buffer)
Convert to 16 bit signed.
Definition ngcdcsACQ_DATA.cpp:916
int AvailableFrames()
Currently available frame types.
Definition ngcdcsACQ_DATA.cpp:347
int StartY()
Return start pixel in y-direction.
Definition ngcdcsACQ_DATA.cpp:1009
double TimeStamp()
Return MUDPI/RTMS timestamp (seconds since UNIX epoch)
Definition ngcdcsACQ_DATA.cpp:1083
int Accept(int flags=0)
Accept data frame (as is)
Definition ngcdcsACQ_DATA.cpp:615
int scale2float
Aways scale 32-bit integer to float.
Definition ngcdcsACQ_DATA.hpp:238
size_t FrameSize()
Return frame size in bytes.
Definition ngcdcsACQ_DATA.cpp:1066
int Divisor()
Return frame Divisor.
Definition ngcdcsACQ_DATA.cpp:975
ngcdcsACQ_DATA()
Constructor.
Definition ngcdcsACQ_DATA.cpp:27
int Cancel()
Cancel pending data request.
Definition ngcdcsACQ_DATA.cpp:535
int Transferring()
Return transferring flag.
Definition ngcdcsACQ_DATA.cpp:1090
int ioError
Flag for io-error.
Definition ngcdcsACQ_DATA.hpp:229
int Term()
Return termination flag.
Definition ngcdcsACQ_DATA.cpp:1102
int protocolVersion
Protocol version.
Definition ngcdcsACQ_DATA.hpp:235
Definition ngcdcsFINFO.hpp:285
#define ngcbDMA_DEFAULT_DEVICE
Definition ngcbDrv.h:49
#define str2str(s1, s2, n)
Definition ngcb.h:73
#define ngcppTMODE_SCIENCE
Definition ngcppInt.h:434
#define ngcppMAX_FRAME_TYPES
Definition ngcppInt.h:225
#define ngcppMAX_DEV
Definition ngcppInt.h:384
#define ngcppFRAME_ANY
Definition ngcppInt.h:230
Definition ngcdcsACQ_DATA.hpp:24
char dev[ngcppMAX_DEV][128]
Acquisition process DMA device name.
Definition ngcdcsACQ_DATA.hpp:53
ngcdcs_acq_cfg_t()
Constructor.
Definition ngcdcsACQ_DATA.hpp:65
int cmdPort
Optional command server port (default is zero)
Definition ngcdcsACQ_DATA.hpp:26
int numDataClient
Number of data clients.
Definition ngcdcsACQ_DATA.hpp:35
int transferMode
Data transfer mode.
Definition ngcdcsACQ_DATA.hpp:41
int dataPort
Optional data server port (default is zero)
Definition ngcdcsACQ_DATA.hpp:29
char host[64]
Acquisition process host.
Definition ngcdcsACQ_DATA.hpp:50
char name[64]
Optional name.
Definition ngcdcsACQ_DATA.hpp:59
int joinerDelay
Multicast joiner delay (microsecodns)
Definition ngcdcsACQ_DATA.hpp:38
int errPort
Optional error-stack server port (default is zero)
Definition ngcdcsACQ_DATA.hpp:32
char spec[64]
Type specifier (optional)
Definition ngcdcsACQ_DATA.hpp:62
int connect
Enable data connection.
Definition ngcdcsACQ_DATA.hpp:44
int seqIdx
Associated sequencer instance.
Definition ngcdcsACQ_DATA.hpp:56
int exp
Enable exposures.
Definition ngcdcsACQ_DATA.hpp:47
Definition ngcdcsACQ_DATA.hpp:94
int sx
Window (lower left x)
Definition ngcdcsACQ_DATA.hpp:99
ngcdcs_acqreq_t()
Constructor.
Definition ngcdcsACQ_DATA.hpp:111
int sy
Window (lower left y)
Definition ngcdcsACQ_DATA.hpp:102
int ny
Window (y-dimension)
Definition ngcdcsACQ_DATA.hpp:108
int type
Frame type.
Definition ngcdcsACQ_DATA.hpp:96
int nx
Window (x-Dimension)
Definition ngcdcsACQ_DATA.hpp:105
Definition ngcdcsFINFO.hpp:462
Definition ngcdcsACQ_DATA.hpp:120
int gen
Frame is generated.
Definition ngcdcsACQ_DATA.hpp:134
int first
Index of first frame in exposure.
Definition ngcdcsACQ_DATA.hpp:146
char name[64]
Frame type name.
Definition ngcdcsACQ_DATA.hpp:125
ngcbSEM * sem
Protection lock.
Definition ngcdcsACQ_DATA.hpp:170
ngcdcs_framedef_t()
Constructor.
Definition ngcdcsACQ_DATA.hpp:188
int ny
Window for this frame (size in y direction)
Definition ngcdcsACQ_DATA.hpp:167
int export2Shm
Export to shared memory.
Definition ngcdcsACQ_DATA.hpp:185
int last
Index of last frame received.
Definition ngcdcsACQ_DATA.hpp:149
int expCnt
Exposure counter.
Definition ngcdcsACQ_DATA.hpp:140
int store
Frame is stored.
Definition ngcdcsACQ_DATA.hpp:137
int gen_x
Saved generation flag.
Definition ngcdcsACQ_DATA.hpp:179
int breakCnt
Break counter.
Definition ngcdcsACQ_DATA.hpp:143
int sx
Window for this frame (lower left x)
Definition ngcdcsACQ_DATA.hpp:158
int breakCond
Break condition for exposure.
Definition ngcdcsACQ_DATA.hpp:152
int sy
Window for this frame (lower left y)
Definition ngcdcsACQ_DATA.hpp:161
int local
Store to local media on NGC LLCU.
Definition ngcdcsACQ_DATA.hpp:155
int nx
Window for this frame (size in x-direction)
Definition ngcdcsACQ_DATA.hpp:164
ngcdcsCUBE cube
Data cube object.
Definition ngcdcsACQ_DATA.hpp:173
char paramName[64]
Parameter name to switch type on/off.
Definition ngcdcsACQ_DATA.hpp:128
int store_x
Saved storage flag.
Definition ngcdcsACQ_DATA.hpp:176
int defined
Frame is defined.
Definition ngcdcsACQ_DATA.hpp:131
int type
Frame type.
Definition ngcdcsACQ_DATA.hpp:122
int breakCond_x
Saved break condition.
Definition ngcdcsACQ_DATA.hpp:182
Definition ngcppInt.h:552
Definition ngcppInt.h:560
Definition ngcppInt.h:516