ngc 1.4.0
 
Loading...
Searching...
No Matches
ngcdtt.hpp
Go to the documentation of this file.
1
7#ifndef ngcdtt_H
8#define ngcdtt_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/*
16 * System Headers
17 */
18#include <stdlib.h>
19#include <stdio.h>
20#include <sys/select.h>
21#include <unistd.h>
22
23/*
24 * Local Headers
25 */
26#include <ngc/core/ngcppInt.h>
27#include <ngc/core/ngcbSocket.h>
31
35#define ngcdttMOD_ID "ngcdtt"
36
40void ngcdttKillHandler(int sig);
41
45void ngcdttBreakHandler(int sig);
46
50void ngcdttExitHandler(int sig);
51
55#define ngcdttSTATE_OFF 0 //< state OFF
56#define ngcdttSTATE_ONLINE 1 //< state ONLINE
57
61#define ngcdttMAX_CON 8
62
68 char acqHost[64];
69
72
74 char camera[128];
75
77 int nxMax;
78
80 int nyMax;
81
83 int numBuf;
84
86 double freq;
87
89 int win[4];
90
93 char *evar = getenv("NGCPP_DATA");
94 if (evar != NULL) sscanf(evar, "%10d", &acqPort);
95 else acqPort = 0;
96
97 evar = getenv("NGCPP_HOST");
98 if (evar != NULL) str2str(acqHost, evar, 63);
99 else
100 {
101 evar = getenv("HOSTNAME");
102 if (evar != NULL) str2str(acqHost, evar, 63);
103 else strcpy(acqHost, "localhost");
104 }
105
106 evar = getenv("RTD_CAMERA");
107 if (evar != NULL) str2str(camera, evar, 63);
108 else strcpy(camera, "NGC_CAM");
109
110 nxMax = 2048; nyMax = 2048;
111 win[0] = 1; win[1] = 1; win[2] = 0; win[3] = 0;
112 numBuf = 2;
113 freq = 0.0;
114 }
115};
116
120class ngcdtt {
121public:
124
126 int cv32;
127
130
132 int nxMax;
133
135 int nyMax;
136
138 double frequency;
139
142
145
147 ngcdtt();
148
150 explicit ngcdtt(ngcdttPUBLISH *display);
151
153 virtual ~ngcdtt();
154
156 virtual void InstallSignalHandlers();
157
159 int ParseArguments(int argc, char **argv);
160
162 void PrintUsage(const char *argv0);
163
165 int Configure(const char *arg, const char *value = NULL);
166
168 void Service(const char *value);
169
171 int ServicePort();
172
174 void URI(const char *value);
175
177 void Datastream(const char *value);
178
180 void DCS(const char *value);
181
183 void DefaultFrame(const char *value);
184
186 void ConnectionId(int id);
187
189 void ExecReply(int stat, const char *msg);
190
192 int Initialize();
193
195 void Abort();
196
198 void StopMainLoop();
199
201 int MainLoop();
202
204 char *ErrMsg();
205
207 void Verbose(const char *format, ...)
208 __attribute__ ((format(printf, 2, 3)));
209
211 void Log(const char *msg);
212
214 void Verbose(int flag);
215
217 void VerboseLevel(int level);
218
220 void LogLevel(int level);
221
223 int VerboseLevel();
224
226 int LogLevel();
227
229 void ExitSignal(int sig);
230
231protected:
234
236 char acqHost[64];
237
240
242 char camera[128];
243
245 char dcsInst[64];
246
248 char dcsHost[64];
249
252
254 const char *Process();
255
257 const char *Version();
258
260 const char *Instance();
261
263 void Shutdown();
264
266 void DataService(const char *host, int port);
267
269 int DataOpen();
270
272 void DataClose();
273
275 int CamOpen();
276
278 void CamClose();
279
281 int Connected();
282
284 int Enabled();
285
287 void Status(int flag);
288
290 void Start();
291
293 void Stop();
294
296 void Invert();
297
299 void Invert(int flag);
300
302 int InvertStatus();
303
305 int SelectFrame(const char *name);
306
308 void CurrentFrame(char *name);
309
311 int Window(int sx, int sy, int nx, int ny);
312
314 int SX();
315
317 int SY();
318
320 int NX();
321
323 int NY();
324
326 void Retransmit();
327
329 int Store();
330
332 void Clear();
333
335 int Subtract(int flag);
336
338 int DS9(const char *cmd, char *reply, size_t max);
339
341 virtual void Alarm(const char *msg);
342
344 virtual int MsgInit(int *fd);
345
347 virtual void MsgShutdown();
348
350 virtual int MsgHandler(int fd);
351
353 virtual void Logger(const char *msg);
354
356 virtual int Select(fd_set *readMask, struct timeval *timeout);
357
359 virtual void DbAttrState(int state);
360
362 virtual void DbAttrFrames(int types);
363
365 virtual void DbAttrConnected(int value);
366
368 virtual void DbAttrEnabled(int value);
369
371 virtual void DbAttrInvert(int value);
372
374 virtual void DbAttrSelFrame(const char *name);
375
377 virtual void DbAttrWin(int sx, int sy, int nx, int ny);
378
380 virtual int DbGetCfg(const char *p, ngcdcs_rtdacq_t *acq);
381
382private:
384 void Init_();
385
387 char procName_[256];
388
390 char versionString_[256];
391
393 char instance_[64];
394
396 int aborted_;
397
399 int active_;
400
402 char erms_[256];
403
405 int test_;
406
408 int native_;
409
411 int verboseLevel_;
412
414 int verboseLevelSaved_;
415
417 int logLevel_;
418
420 int logOnStdout_;
421
423 int execHandle_;
424
426 int dcsPort_;
427
429 char thisHost_[64];
430
432 char acqSrv_[256];
433
435 int acqFd_;
436
438 int connectionId_;
439
441 int stopFd_[2];
442
444 int tmode_;
445
447 char type_[64];
448
450 int enabled_;
451
453 int connected_;
454
456 char ftype_[64];
457
459 char selFrame_[64];
460
462 ngcpp_req_t request_;
463
465 int oneShot_;
466
468 int rtiInvert_;
469
471 ngcdttFP fp_;
472
474 int msgFd_;
475
477 uint64_t frameCounter_;
478
480 void Display_(int idx);
481
483 void Scale_(ngcpp_frame_t *frame);
484
486 void Invert_(void *array, ngcpp_hdr_t hdr);
487
489 int TcpInit_();
490
492 void TcpShutdown_();
493
495 void CleanupCmd_(char *cmdLine, int *cmdLen);
496
498 int TcpReadCmd_(int fd, char *cmdString, int maxLen);
499
501 int TcpWriteReply_(int fd, const char *replyString, int success);
502
504 int TcpHandleCmd_(int idx);
505
507 void TcpSendMsg_(const char *cmd, const char *msg = NULL);
508
510 int TcpGetReply_(char *msg, size_t max = 0);
511
513 void TcpReadRtdCmd_(int fd, char *cmd);
514
516 void TcpHandleRtdCmd_(int fd);
517
519 int SocketQuery_(int fd);
520
522 int FdIsSet_(struct pollfd *fds, int n, int fd);
523
525 char service_[64];
526
528 ngcbSHMDB *tcpdb_;
529
531 int srvCmdPort_;
532
534 int srvSocket_;
535
537 int clientSocket_[ngcdttMAX_CON];
538
540 int rtdPid_;
541
543 int rtdPort_;
544
546 int rtdSocket_;
547
549 int UpdateFrames_(int frames);
550};
551
552#endif
Definition ngcbSHMDB.hpp:54
Definition ngcdttPUBLISH.hpp:57
Definition ngcdttPUBLISH.hpp:736
int Subtract(int flag)
Enable/disable bias frame subtraction.
Definition ngcdttDisp.cpp:263
int ServicePort()
Get request/reply service port.
Definition ngcdttMain.cpp:476
int cv32
Enforce conversion to 32 bit.
Definition ngcdtt.hpp:126
virtual int MsgInit(int *fd)
Initialize Initialize message system interface.
Definition ngcdttMain.cpp:1021
const char * Process()
Return process name.
Definition ngcdttMain.cpp:258
const char * Instance()
Return instance name.
Definition ngcdttMain.cpp:270
double frequency
Maximum display frequency (Hz)
Definition ngcdtt.hpp:138
void ConnectionId(int id)
Set connection id (override default)
Definition ngcdttMain.cpp:505
int DS9(const char *cmd, char *reply, size_t max)
Execute DS9 command.
Definition ngcdttDisp.cpp:293
virtual void DbAttrState(int state)
Write system state to database.
Definition ngcdttMain.cpp:1748
virtual void MsgShutdown()
Shutdown message system interface.
Definition ngcdttMain.cpp:1027
virtual int Select(fd_set *readMask, struct timeval *timeout)
Select call.
Definition ngcdttMain.cpp:1033
ngcdtt()
Constructor.
Definition ngcdttMain.cpp:188
int nxMax
Maximum x-dimension.
Definition ngcdtt.hpp:132
void VerboseLevel(int level)
Set verbose level.
Definition ngcdttMain.cpp:278
void Invert()
Invert image.
Definition ngcdttDisp.cpp:94
int SX()
Return lower left x-coordinate of requested window.
Definition ngcdttDisp.cpp:204
void ExitSignal(int sig)
Handle EXIT-signal.
Definition ngcdttMain.cpp:1001
int Connected()
Return connected status.
Definition ngcdttDisp.cpp:77
void CurrentFrame(char *name)
Get current frame type (name)
Definition ngcdttDisp.cpp:153
int ParseArguments(int argc, char **argv)
Parse arguments.
Definition ngcdttMain.cpp:511
void Clear()
Clear bias frame.
Definition ngcdttDisp.cpp:252
int interruptible
Interruptible connection.
Definition ngcdtt.hpp:144
virtual void DbAttrFrames(int types)
Write frame list to database.
Definition ngcdttMain.cpp:1750
char dcsInst[64]
DCS instance.
Definition ngcdtt.hpp:245
char dcsHost[64]
DCS host.
Definition ngcdtt.hpp:248
const char * Version()
Return version.
Definition ngcdttMain.cpp:264
int dcsMod
DCS acquisition module index.
Definition ngcdtt.hpp:141
void Verbose(const char *format,...) __attribute__((format(printf
Verbose output.
Definition ngcdttMain.cpp:954
int MainLoop()
Enter the gateway main-loop.
Definition ngcdttMain.cpp:1046
void CamClose()
Close camera.
Definition ngcdttDisp.cpp:43
char camera[128]
Camera name.
Definition ngcdtt.hpp:242
int Initialize()
Initialize.
Definition ngcdttMain.cpp:773
int NX()
Return dimension in x-direction of requested window.
Definition ngcdttDisp.cpp:208
void Service(const char *value)
Set request/reply service name.
Definition ngcdttMain.cpp:471
int NY()
Return dimension in y-direction of requested window.
Definition ngcdttDisp.cpp:210
virtual void DbAttrInvert(int value)
Write image inversion flag to database.
Definition ngcdttMain.cpp:1756
int ignoreSignal
Ignore signal in main-loop select call.
Definition ngcdtt.hpp:123
int Enabled()
Return enabled status.
Definition ngcdttDisp.cpp:79
void Stop()
Stop (disable transfer)
Definition ngcdttDisp.cpp:92
virtual void InstallSignalHandlers()
Install signal handlers.
Definition ngcdttMain.cpp:281
int CamOpen()
Open camera.
Definition ngcdttDisp.cpp:24
ngcdttPUBLISH * publisher
Publisher object.
Definition ngcdtt.hpp:233
int SelectFrame(const char *name)
Select frame type by name and return 1, if setup has changed.
Definition ngcdttDisp.cpp:119
int nyMax
Maximum y-dimension.
Definition ngcdtt.hpp:135
void Datastream(const char *value)
Set datastream name.
Definition ngcdttMain.cpp:490
void PrintUsage(const char *argv0)
Print usage.
Definition ngcdttMain.cpp:292
void ExecReply(int stat, const char *msg)
Send execution reply message and status (1 = success, 0 = failure)
Definition ngcdttMain.cpp:762
void Status(int flag)
Set transfer status (enable=1, disable=0)
Definition ngcdttDisp.cpp:81
void void Log(const char *msg)
Log message.
Definition ngcdttMain.cpp:983
virtual void Logger(const char *msg)
Application specific logger.
Definition ngcdttMain.cpp:1031
int Store()
Store bias frame.
Definition ngcdttDisp.cpp:214
void DCS(const char *value)
Assign DCS instance.
Definition ngcdttMain.cpp:495
void Shutdown()
Request shutdown.
Definition ngcdttMain.cpp:1019
virtual int DbGetCfg(const char *p, ngcdcs_rtdacq_t *acq)
Get acquisition process configuration from DCS database.
Definition ngcdttAcq.cpp:27
virtual void DbAttrConnected(int value)
Write connected flag to database.
Definition ngcdttMain.cpp:1752
int autoEnable
Auto enable.
Definition ngcdtt.hpp:129
int acqPort
Acquisition process port.
Definition ngcdtt.hpp:239
void Retransmit()
Request frame retransmission.
Definition ngcdttDisp.cpp:212
virtual void Alarm(const char *msg)
Issue alarm.
Definition ngcdttDisp.cpp:59
virtual void DbAttrWin(int sx, int sy, int nx, int ny)
Write window parameters to database.
Definition ngcdttMain.cpp:1760
void DataClose()
Close data connection.
Definition ngcdttAcq.cpp:225
int Window(int sx, int sy, int nx, int ny)
Set new window and return 1, if setup has changed.
Definition ngcdttDisp.cpp:180
ngcdtt_dsup_t defaultSetup
DTT default setup.
Definition ngcdtt.hpp:251
virtual void DbAttrEnabled(int value)
Write enabled flag to database.
Definition ngcdttMain.cpp:1754
void LogLevel(int level)
Set logging level.
Definition ngcdttMain.cpp:279
int SY()
Return lower left y-coordinate of requested window.
Definition ngcdttDisp.cpp:206
void DataService(const char *host, int port)
Assign data service (host and port)
Definition ngcdttAcq.cpp:52
void Abort()
Abort.
Definition ngcdttMain.cpp:915
char * ErrMsg()
Return actual error message.
Definition ngcdttMain.cpp:768
virtual int MsgHandler(int fd)
Message handler.
Definition ngcdttMain.cpp:1029
int DataOpen()
Open data connection.
Definition ngcdttAcq.cpp:57
int Configure(const char *arg, const char *value=NULL)
Set configuration parameter.
Definition ngcdttMain.cpp:348
void URI(const char *value)
Set broker URI.
Definition ngcdttMain.cpp:481
virtual ~ngcdtt()
Destructor.
Definition ngcdttMain.cpp:212
void DefaultFrame(const char *value)
Assign default display frame type.
Definition ngcdttMain.cpp:500
void Start()
Start (enable transfer)
Definition ngcdttDisp.cpp:90
int InvertStatus()
Return image inversion flag.
Definition ngcdttDisp.cpp:117
void StopMainLoop()
Stop the gateway main-loop (asynchronous call)
Definition ngcdttMain.cpp:1038
char acqHost[64]
Acquisition process host.
Definition ngcdtt.hpp:236
virtual void DbAttrSelFrame(const char *name)
Write selected frame to database.
Definition ngcdttMain.cpp:1758
#define str2str(s1, s2, n)
Definition ngcb.h:73
#define ngcdttMAX_CON
Definition ngcdtt.hpp:61
void ngcdttKillHandler(int sig)
Definition ngcdttMain.cpp:59
void ngcdttBreakHandler(int sig)
Definition ngcdttMain.cpp:64
void ngcdttExitHandler(int sig)
Definition ngcdttMain.cpp:31
Definition ngcdcsRTD.hpp:25
Definition ngcdtt.hpp:66
int numBuf
Number of display buffers.
Definition ngcdtt.hpp:83
int nxMax
Maximum x-dimension.
Definition ngcdtt.hpp:77
char acqHost[64]
Acquisition process host.
Definition ngcdtt.hpp:68
ngcdtt_dsup_t()
Constructor.
Definition ngcdtt.hpp:92
int win[4]
Requested window.
Definition ngcdtt.hpp:89
char camera[128]
Camera name.
Definition ngcdtt.hpp:74
double freq
Maximum display frequency (Hz)
Definition ngcdtt.hpp:86
int nyMax
Maximum y-dimension.
Definition ngcdtt.hpp:80
int acqPort
Acquisition process port.
Definition ngcdtt.hpp:71
Definition ngcppInt.h:552
Definition ngcppInt.h:516
Definition ngcppInt.h:487