ngc 1.5.0
 
Loading...
Searching...
No Matches
ngcdcsACQ_DATA.hpp
Go to the documentation of this file.
1
8#ifndef ngcdcsACQ_DATA_H
9#define ngcdcsACQ_DATA_H
10
11
12#ifndef __cplusplus
13#error This is a C++ include file and cannot be used from plain C
14#endif
15
16#include <ngc/core/ngcb.h>
17#include <ngc/core/ngcbDrv.h>
18#include <ngc/core/ngcbOBJ.hpp>
19#include <ngc/core/ngcppInt.h>
21
28
31
33 int errPort;
34
37
40
43
46
48 int exp;
49
51 char host[64];
52
54 char dev[ngcppMAX_DEV][128];
55
57 int seqIdx;
58
60 char name[64];
61
63 char spec[64];
64
67 char *evar;
68 int i;
69
70 dataPort = 0; // chosen by system
71 cmdPort = 0; // chosen by system
72 errPort = 0; // chosen by system
73 numDataClient = 2; // two clients (RTD and SERVER)
74 joinerDelay = -1; // use system default
75 transferMode = ngcppTMODE_SCIENCE; // oldest frame in queue
76 connect = 1; // data connection enabled
77 exp = 1; // exposures enabled
78 seqIdx = 0; // associated to first sequencer
79
80 evar = getenv("HOSTNAME");
81 if (evar != NULL) str2str(host, evar, sizeof(host) - 1);
82 else strcpy(host, "localhost");
83
84 name[0] = '\0';
85 spec[0] = '\0';
86
87 sprintf(dev[0], ngcbDMA_DEFAULT_DEVICE);
88 for (i=1;i<ngcppMAX_DEV;i++) dev[i][0] = '\0';
89 }
90};
91
97 int type;
98
100 int sx;
101
103 int sy;
104
106 int nx;
107
109 int ny;
110
114 sx = 1; sy = 1; nx = 0; ny = 0;
115 }
116};
117
123 int type;
124
126 char name[64];
127
129 char paramName[64];
130
133
135 int gen;
136
138 int store;
139
142
145
147 int first;
148
150 int last;
151
154
156 int local;
157
159 int sx;
160
162 int sy;
163
165 int nx;
166
168 int ny;
169
172
175
178
180 int gen_x;
181
184
187
190 type = 0;
191 name[0] = '\0';
192 paramName[0] = '\0';
193 sem = NULL;
194 defined = 0;
195 gen = 0;
196 store = 0;
197 expCnt = 0; // always initialize to zero at exposure start
198 breakCnt = 0; // always initialize to zero at exposure start
199 first = 0; // always initialize to zero at exposure start
200 last = 0; // always initialize to zero at exposure start
201 breakCond = 0; // no break condition (take all until exp.-end)
202 local = 0; // do not store to locla media
203 sx = 1; // take frame as it is
204 sy = 1; // take frame as it is
205 nx = 0; // take frame as it is
206 ny = 0; // take frame as it is
207 store_x = -1; // invalidate
208 gen_x = -1; // invalidate
209 breakCond_x = -1; // invalidate
210 export2Shm = 1; // export to shared memory
211 }
212};
213
218{
219public:
222
224 explicit ngcdcsACQ_DATA(const ngcdcs_acq_cfg_t &cfg);
225
227 virtual ~ngcdcsACQ_DATA();
228
231
233 int numDet;
234
237
240
242 void Configure(const ngcdcs_acq_cfg_t &newConf);
243
246
248 int Initialize();
249
251
252 int Open();
253
255 int Close();
256
258 int Kill(int id);
259
261 int Fd();
262
264 int BitPix(int dataType);
265
267 int FrameDef(ngcdcs_framedef_t *frameDef);
268
270 int AvailableFrames();
271
273 int FrameType(const char *name);
274
276 int FrameIdx(int ftype);
277
279 void FrameName(char *name, int ftype);
280
282 void FrameParam(char *paramName, int ftype);
283
285 void FrameParam(char *paramName, const char *name);
286
288 void SetRequest(int ftype);
289
291 void SetRequest(int sx, int sy, int nx, int ny);
292
294 void SetRequest(int ftype, int sx, int sy, int nx, int ny);
295
297 int Request();
298
300 int Request(int ftype);
301
303 int Request(int sx, int sy, int nx, int ny);
304
306 int Request(int ftype, int sx, int sy, int nx, int ny);
307
309 int Retransmit();
310
312 int Retransmit(int sx, int sy, int nx, int ny);
313
315 int Cancel();
316
318 int Wait();
319
321 int Skip();
322
324 int GetFrame(void *buffer, int chipPid = 0);
325
327 int GetFrame(void *buffer, int sx, int sy, int nx, int ny,
328 int chipId = 0);
329
331 int GetFrame(ngcpp_frame_t *frame, int chipId = 0);
332
334 int GetFrame(ngcpp_frame_t *frame, int sx, int sy, int nx, int ny,
335 int chipId = 0);
336
337
339 int Accept(int flags=0);
340
342 int Accept(int sx, int sy, int nx, int ny, int flags=0);
343
345 int Receive(void *buffer, size_t offset, size_t size);
346
348 int Receive(ngcpp_frame_t *frame, size_t offset, size_t size);
349
351 void Scale(ngcpp_frame_t *frame);
352
354 void Scale(void *buffer, int nx, int ny, int *dataType, int *divisor);
355
357 void Scale(void *buffer, ngcdcs_finfo_t *f);
358
360 void Scale(void *buffer);
361
363 void Cv16(void *buffer);
364
366 void Cv16(void *buffer, ngcdcs_finfo_t *f);
367
369 int Valid();
370
372 int FrameType();
373
375 int FrameIdx();
376
378 void FrameName(char *);
379
381 int DataType();
382
384 int Divisor();
385
387 int BZERO();
388
390 double ExpFactor();
391
393 int FrameCounter();
394
396 int FrameCounter0();
397
399 int SetupId();
400
402 int StartX();
403
405 int StartY();
406
408 int NX();
409
411 int NY();
412
414 int Error();
415
417 size_t NumPix();
418
420 size_t FrameSize();
421
423 int DatumSize();
424
426 int BitPix();
427
429 double TimeStamp();
430
432 int Transferring();
433
435 int Term();
436
438 int AppDataSize();
439
441 char *AppData();
442
443protected:
444
445private:
447 void Init_();
448
450 ngcdcs_acq_cfg_t cfg_;
451
453 int fdData_;
454
456 int pending_;
457
459 ngcdcs_acqreq_t req_;
460
462 ngcpp_hdr_t header_;
463
466
468 int numTypes_;
469
471 int types_;
472};
473
474#endif
ngcbOBJ()
Constructor.
Definition ngcbOBJ.cpp:35
Definition ngcbTHREAD.hpp:68
int AppDataSize()
Return application data size.
Definition ngcdcsACQ_DATA.cpp:1115
int GetFrame(void *buffer, int chipPid=0)
Get frame as it is.
Definition ngcdcsACQ_DATA.cpp:822
int Wait()
Wait for data event.
Definition ngcdcsACQ_DATA.cpp:576
int Receive(void *buffer, size_t offset, size_t size)
Receive frame data.
Definition ngcdcsACQ_DATA.cpp:702
void Configure(const ngcdcs_acq_cfg_t &newConf)
Overall configuration.
Definition ngcdcsACQ_DATA.cpp:76
int FrameCounter0()
Return frame counter start value.
Definition ngcdcsACQ_DATA.cpp:971
int FrameDef(ngcdcs_framedef_t *frameDef)
Currently defined frame types.
Definition ngcdcsACQ_DATA.cpp:254
int DataType()
Return data type.
Definition ngcdcsACQ_DATA.cpp:961
int Initialize()
Intialize data connection.
Definition ngcdcsACQ_DATA.cpp:100
int NX()
Return x-dimension.
Definition ngcdcsACQ_DATA.cpp:1015
int Kill(int id)
Kill data client.
Definition ngcdcsACQ_DATA.cpp:208
int Open()
Open data connection ngcppScale(frame);.
Definition ngcdcsACQ_DATA.cpp:131
int FrameCounter()
Return frame counter.
Definition ngcdcsACQ_DATA.cpp:966
int Error()
Return error code.
Definition ngcdcsACQ_DATA.cpp:1025
int Close()
Close data connection.
Definition ngcdcsACQ_DATA.cpp:187
void FrameParam(char *paramName, int ftype)
Get frame parameter by type.
Definition ngcdcsACQ_DATA.cpp:318
void Scale(ngcpp_frame_t *frame)
Apply scale factor.
Definition ngcdcsACQ_DATA.cpp:829
void FrameName(char *name, int ftype)
Get frame name by frame type.
Definition ngcdcsACQ_DATA.cpp:303
int StartX()
Return start pixel in x-direction.
Definition ngcdcsACQ_DATA.cpp:1005
ngcdcs_acq_cfg_t * Cfg()
Get pointer to configuration.
Definition ngcdcsACQ_DATA.cpp:95
int Valid()
Valid frame received.
Definition ngcdcsACQ_DATA.cpp:941
int NY()
Return y-dimension.
Definition ngcdcsACQ_DATA.cpp:1020
void SetRequest(int ftype)
Setup data request (type)
Definition ngcdcsACQ_DATA.cpp:353
int Request()
Send data request (same request again)
Definition ngcdcsACQ_DATA.cpp:384
char * AppData()
Return pointer to application data.
Definition ngcdcsACQ_DATA.cpp:1120
size_t NumPix()
Return number of pixels in frame.
Definition ngcdcsACQ_DATA.cpp:1055
int BitPix()
Return current bitpix-value.
Definition ngcdcsACQ_DATA.cpp:1079
int numDet
Number of detectors in mosaic.
Definition ngcdcsACQ_DATA.hpp:233
virtual ~ngcdcsACQ_DATA()
Destructor.
Definition ngcdcsACQ_DATA.cpp:43
int SetupId()
Return setup-id.
Definition ngcdcsACQ_DATA.cpp:1000
int Retransmit()
Retransmit frame (same)
Definition ngcdcsACQ_DATA.cpp:528
double ExpFactor()
Return factor for EXPTIME.
Definition ngcdcsACQ_DATA.cpp:986
int Skip()
Skip data frame.
Definition ngcdcsACQ_DATA.cpp:599
int BZERO()
Return frame BZERO.
Definition ngcdcsACQ_DATA.cpp:981
int Fd()
Return data connection file descriptor.
Definition ngcdcsACQ_DATA.cpp:228
int FrameType()
Get current frame type.
Definition ngcdcsACQ_DATA.cpp:946
int DatumSize()
Return pixel datum size in bytes.
Definition ngcdcsACQ_DATA.cpp:1030
int FrameIdx()
Get index for current frame type.
Definition ngcdcsACQ_DATA.cpp:956
void Cv16(void *buffer)
Convert to 16 bit signed.
Definition ngcdcsACQ_DATA.cpp:917
int AvailableFrames()
Currently available frame types.
Definition ngcdcsACQ_DATA.cpp:348
int StartY()
Return start pixel in y-direction.
Definition ngcdcsACQ_DATA.cpp:1010
double TimeStamp()
Return MUDPI/RTMS timestamp (seconds since UNIX epoch)
Definition ngcdcsACQ_DATA.cpp:1084
int Accept(int flags=0)
Accept data frame (as is)
Definition ngcdcsACQ_DATA.cpp:616
int scale2float
Aways scale 32-bit integer to float.
Definition ngcdcsACQ_DATA.hpp:239
size_t FrameSize()
Return frame size in bytes.
Definition ngcdcsACQ_DATA.cpp:1067
int Divisor()
Return frame Divisor.
Definition ngcdcsACQ_DATA.cpp:976
ngcdcsACQ_DATA()
Constructor.
Definition ngcdcsACQ_DATA.cpp:28
int Cancel()
Cancel pending data request.
Definition ngcdcsACQ_DATA.cpp:536
int Transferring()
Return transferring flag.
Definition ngcdcsACQ_DATA.cpp:1091
int ioError
Flag for io-error.
Definition ngcdcsACQ_DATA.hpp:230
int Term()
Return termination flag.
Definition ngcdcsACQ_DATA.cpp:1103
int protocolVersion
Protocol version.
Definition ngcdcsACQ_DATA.hpp:236
Definition ngcdcsFINFO.hpp:287
#define ngcbDMA_DEFAULT_DEVICE
Definition ngcbDrv.h:50
#define str2str(s1, s2, n)
Definition ngcb.h:74
#define ngcppTMODE_SCIENCE
Definition ngcppInt.h:436
#define ngcppMAX_FRAME_TYPES
Definition ngcppInt.h:226
#define ngcppMAX_DEV
Definition ngcppInt.h:386
#define ngcppFRAME_ANY
Definition ngcppInt.h:231
Definition ngcdcsACQ_DATA.hpp:25
char dev[ngcppMAX_DEV][128]
Acquisition process DMA device name.
Definition ngcdcsACQ_DATA.hpp:54
ngcdcs_acq_cfg_t()
Constructor.
Definition ngcdcsACQ_DATA.hpp:66
int cmdPort
Optional command server port (default is zero)
Definition ngcdcsACQ_DATA.hpp:27
int numDataClient
Number of data clients.
Definition ngcdcsACQ_DATA.hpp:36
int transferMode
Data transfer mode.
Definition ngcdcsACQ_DATA.hpp:42
int dataPort
Optional data server port (default is zero)
Definition ngcdcsACQ_DATA.hpp:30
char host[64]
Acquisition process host.
Definition ngcdcsACQ_DATA.hpp:51
char name[64]
Optional name.
Definition ngcdcsACQ_DATA.hpp:60
int joinerDelay
Multicast joiner delay (microsecodns)
Definition ngcdcsACQ_DATA.hpp:39
int errPort
Optional error-stack server port (default is zero)
Definition ngcdcsACQ_DATA.hpp:33
char spec[64]
Type specifier (optional)
Definition ngcdcsACQ_DATA.hpp:63
int connect
Enable data connection.
Definition ngcdcsACQ_DATA.hpp:45
int seqIdx
Associated sequencer instance.
Definition ngcdcsACQ_DATA.hpp:57
int exp
Enable exposures.
Definition ngcdcsACQ_DATA.hpp:48
Definition ngcdcsACQ_DATA.hpp:95
int sx
Window (lower left x)
Definition ngcdcsACQ_DATA.hpp:100
ngcdcs_acqreq_t()
Constructor.
Definition ngcdcsACQ_DATA.hpp:112
int sy
Window (lower left y)
Definition ngcdcsACQ_DATA.hpp:103
int ny
Window (y-dimension)
Definition ngcdcsACQ_DATA.hpp:109
int type
Frame type.
Definition ngcdcsACQ_DATA.hpp:97
int nx
Window (x-Dimension)
Definition ngcdcsACQ_DATA.hpp:106
Definition ngcdcsFINFO.hpp:468
Definition ngcdcsACQ_DATA.hpp:121
int gen
Frame is generated.
Definition ngcdcsACQ_DATA.hpp:135
int first
Index of first frame in exposure.
Definition ngcdcsACQ_DATA.hpp:147
char name[64]
Frame type name.
Definition ngcdcsACQ_DATA.hpp:126
ngcbSEM * sem
Protection lock.
Definition ngcdcsACQ_DATA.hpp:171
ngcdcs_framedef_t()
Constructor.
Definition ngcdcsACQ_DATA.hpp:189
int ny
Window for this frame (size in y direction)
Definition ngcdcsACQ_DATA.hpp:168
int export2Shm
Export to shared memory.
Definition ngcdcsACQ_DATA.hpp:186
int last
Index of last frame received.
Definition ngcdcsACQ_DATA.hpp:150
int expCnt
Exposure counter.
Definition ngcdcsACQ_DATA.hpp:141
int store
Frame is stored.
Definition ngcdcsACQ_DATA.hpp:138
int gen_x
Saved generation flag.
Definition ngcdcsACQ_DATA.hpp:180
int breakCnt
Break counter.
Definition ngcdcsACQ_DATA.hpp:144
int sx
Window for this frame (lower left x)
Definition ngcdcsACQ_DATA.hpp:159
int breakCond
Break condition for exposure.
Definition ngcdcsACQ_DATA.hpp:153
int sy
Window for this frame (lower left y)
Definition ngcdcsACQ_DATA.hpp:162
int local
Store to local media on NGC LLCU.
Definition ngcdcsACQ_DATA.hpp:156
int nx
Window for this frame (size in x-direction)
Definition ngcdcsACQ_DATA.hpp:165
ngcdcsCUBE cube
Data cube object.
Definition ngcdcsACQ_DATA.hpp:174
char paramName[64]
Parameter name to switch type on/off.
Definition ngcdcsACQ_DATA.hpp:129
int store_x
Saved storage flag.
Definition ngcdcsACQ_DATA.hpp:177
int defined
Frame is defined.
Definition ngcdcsACQ_DATA.hpp:132
int type
Frame type.
Definition ngcdcsACQ_DATA.hpp:123
int breakCond_x
Saved break condition.
Definition ngcdcsACQ_DATA.hpp:183
Definition ngcppInt.h:554
Definition ngcppInt.h:562
Definition ngcppInt.h:518