ngc 1.5.0
 
Loading...
Searching...
No Matches
ngcdtt.hpp
Go to the documentation of this file.
1
8#ifndef ngcdtt_H
9#define ngcdtt_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/*
17 * System Headers
18 */
19#include <stdlib.h>
20#include <stdio.h>
21#include <sys/select.h>
22#include <unistd.h>
23
24/*
25 * Local Headers
26 */
27#include <ngc/core/ngcppInt.h>
28#include <ngc/core/ngcbSocket.h>
32
36#define ngcdttMOD_ID "ngcdtt"
37
41void ngcdttKillHandler(int sig);
42
46void ngcdttBreakHandler(int sig);
47
51void ngcdttExitHandler(int sig);
52
56#define ngcdttSTATE_OFF 0 //< state OFF
57#define ngcdttSTATE_ONLINE 1 //< state ONLINE
58
62#define ngcdttMAX_CON 8
63
69 char acqHost[64];
70
73
75 char camera[128];
76
78 int nxMax;
79
81 int nyMax;
82
84 int numBuf;
85
87 double freq;
88
90 int win[4];
91
94 char *evar = getenv("NGCPP_DATA");
95 if (evar != NULL) sscanf(evar, "%10d", &acqPort);
96 else acqPort = 0;
97
98 evar = getenv("NGCPP_HOST");
99 if (evar != NULL) str2str(acqHost, evar, 63);
100 else
101 {
102 evar = getenv("HOSTNAME");
103 if (evar != NULL) str2str(acqHost, evar, 63);
104 else strcpy(acqHost, "localhost");
105 }
106
107 evar = getenv("RTD_CAMERA");
108 if (evar != NULL) str2str(camera, evar, 63);
109 else strcpy(camera, "NGC_CAM");
110
111 nxMax = 2048; nyMax = 2048;
112 win[0] = 1; win[1] = 1; win[2] = 0; win[3] = 0;
113 numBuf = 2;
114 freq = 0.0;
115 }
116};
117
121class ngcdtt {
122public:
125
127 int cv32;
128
131
133 int nxMax;
134
136 int nyMax;
137
139 double frequency;
140
143
146
148 ngcdtt();
149
151 explicit ngcdtt(ngcdttPUBLISH *display);
152
154 virtual ~ngcdtt();
155
157 virtual void InstallSignalHandlers();
158
160 int ParseArguments(int argc, char **argv);
161
163 void PrintUsage(const char *argv0);
164
166 int Configure(const char *arg, const char *value = NULL);
167
169 void Service(const char *value);
170
172 int ServicePort();
173
175 void URI(const char *value);
176
178 void Datastream(const char *value);
179
181 void DCS(const char *value);
182
184 void DefaultFrame(const char *value);
185
187 void ConnectionId(int id);
188
190 void ExecReply(int stat, const char *msg);
191
193 int Initialize();
194
196 void Abort();
197
199 void StopMainLoop();
200
202 int MainLoop();
203
205 char *ErrMsg();
206
208 void Verbose(const char *format, ...)
209 __attribute__ ((format(printf, 2, 3)));
210
212 void Log(const char *msg);
213
215 void Verbose(int flag);
216
218 void VerboseLevel(int level);
219
221 void LogLevel(int level);
222
224 int VerboseLevel();
225
227 int LogLevel();
228
230 void ExitSignal(int sig);
231
232protected:
235
237 char acqHost[64];
238
241
243 char camera[128];
244
246 char dcsInst[64];
247
249 char dcsHost[64];
250
253
255 const char *Process();
256
258 const char *Version();
259
261 const char *Instance();
262
264 void Shutdown();
265
267 void DataService(const char *host, int port);
268
270 int DataOpen();
271
273 void DataClose();
274
276 int CamOpen();
277
279 void CamClose();
280
282 int Connected();
283
285 int Enabled();
286
288 void Status(int flag);
289
291 void Start();
292
294 void Stop();
295
297 void Invert();
298
300 void Invert(int flag);
301
303 int InvertStatus();
304
306 int SelectFrame(const char *name);
307
309 void CurrentFrame(char *name);
310
312 int Window(int sx, int sy, int nx, int ny);
313
315 int SX();
316
318 int SY();
319
321 int NX();
322
324 int NY();
325
327 void Retransmit();
328
330 int Store();
331
333 void Clear();
334
336 int Subtract(int flag);
337
339 int DS9(const char *cmd, char *reply, size_t max);
340
342 virtual void Alarm(const char *msg);
343
345 virtual int MsgInit(int *fd);
346
348 virtual void MsgShutdown();
349
351 virtual int MsgHandler(int fd);
352
354 virtual void Logger(const char *msg);
355
357 virtual int Select(fd_set *readMask, struct timeval *timeout);
358
360 virtual void DbAttrState(int state);
361
363 virtual void DbAttrFrames(int types);
364
366 virtual void DbAttrConnected(int value);
367
369 virtual void DbAttrEnabled(int value);
370
372 virtual void DbAttrInvert(int value);
373
375 virtual void DbAttrSelFrame(const char *name);
376
378 virtual void DbAttrWin(int sx, int sy, int nx, int ny);
379
381 virtual int DbGetCfg(const char *p, ngcdcs_rtdacq_t *acq);
382
383private:
385 void Init_();
386
388 char procName_[256];
389
391 char versionString_[256];
392
394 char instance_[64];
395
397 int aborted_;
398
400 int active_;
401
403 char erms_[256];
404
406 int test_;
407
409 int native_;
410
412 int verboseLevel_;
413
415 int verboseLevelSaved_;
416
418 int logLevel_;
419
421 int logOnStdout_;
422
424 int execHandle_;
425
427 int dcsPort_;
428
430 char thisHost_[64];
431
433 char acqSrv_[256];
434
436 int acqFd_;
437
439 int connectionId_;
440
442 int stopFd_[2];
443
445 int tmode_;
446
448 char type_[64];
449
451 int enabled_;
452
454 int connected_;
455
457 char ftype_[64];
458
460 char selFrame_[64];
461
463 ngcpp_req_t request_;
464
466 int oneShot_;
467
469 int rtiInvert_;
470
472 ngcdttFP fp_;
473
475 int msgFd_;
476
478 uint64_t frameCounter_;
479
481 void Display_(int idx);
482
484 void Scale_(ngcpp_frame_t *frame);
485
487 void Invert_(void *array, ngcpp_hdr_t hdr);
488
490 int TcpInit_();
491
493 void TcpShutdown_();
494
496 void CleanupCmd_(char *cmdLine, int *cmdLen);
497
499 int TcpReadCmd_(int fd, char *cmdString, int maxLen);
500
502 int TcpWriteReply_(int fd, const char *replyString, int success);
503
505 int TcpHandleCmd_(int idx);
506
508 void TcpSendMsg_(const char *cmd, const char *msg = NULL);
509
511 int TcpGetReply_(char *msg, size_t max = 0);
512
514 void TcpReadRtdCmd_(int fd, char *cmd);
515
517 void TcpHandleRtdCmd_(int fd);
518
520 int SocketQuery_(int fd);
521
523 int FdIsSet_(struct pollfd *fds, int n, int fd);
524
526 char service_[64];
527
529 ngcbSHMDB *tcpdb_;
530
532 int srvCmdPort_;
533
535 int srvSocket_;
536
538 int clientSocket_[ngcdttMAX_CON];
539
541 int rtdPid_;
542
544 int rtdPort_;
545
547 int rtdSocket_;
548
550 int UpdateFrames_(int frames);
551};
552
553#endif
Definition ngcbSHMDB.hpp:55
Definition ngcdttPUBLISH.hpp:58
Definition ngcdttPUBLISH.hpp:737
int Subtract(int flag)
Enable/disable bias frame subtraction.
Definition ngcdttDisp.cpp:264
int ServicePort()
Get request/reply service port.
Definition ngcdttMain.cpp:477
int cv32
Enforce conversion to 32 bit.
Definition ngcdtt.hpp:127
virtual int MsgInit(int *fd)
Initialize Initialize message system interface.
Definition ngcdttMain.cpp:1022
const char * Process()
Return process name.
Definition ngcdttMain.cpp:259
const char * Instance()
Return instance name.
Definition ngcdttMain.cpp:271
double frequency
Maximum display frequency (Hz)
Definition ngcdtt.hpp:139
void ConnectionId(int id)
Set connection id (override default)
Definition ngcdttMain.cpp:506
int DS9(const char *cmd, char *reply, size_t max)
Execute DS9 command.
Definition ngcdttDisp.cpp:294
virtual void DbAttrState(int state)
Write system state to database.
Definition ngcdttMain.cpp:1749
virtual void MsgShutdown()
Shutdown message system interface.
Definition ngcdttMain.cpp:1028
virtual int Select(fd_set *readMask, struct timeval *timeout)
Select call.
Definition ngcdttMain.cpp:1034
ngcdtt()
Constructor.
Definition ngcdttMain.cpp:189
int nxMax
Maximum x-dimension.
Definition ngcdtt.hpp:133
void VerboseLevel(int level)
Set verbose level.
Definition ngcdttMain.cpp:279
void Invert()
Invert image.
Definition ngcdttDisp.cpp:95
int SX()
Return lower left x-coordinate of requested window.
Definition ngcdttDisp.cpp:205
void ExitSignal(int sig)
Handle EXIT-signal.
Definition ngcdttMain.cpp:1002
int Connected()
Return connected status.
Definition ngcdttDisp.cpp:78
void CurrentFrame(char *name)
Get current frame type (name)
Definition ngcdttDisp.cpp:154
int ParseArguments(int argc, char **argv)
Parse arguments.
Definition ngcdttMain.cpp:512
void Clear()
Clear bias frame.
Definition ngcdttDisp.cpp:253
int interruptible
Interruptible connection.
Definition ngcdtt.hpp:145
virtual void DbAttrFrames(int types)
Write frame list to database.
Definition ngcdttMain.cpp:1751
char dcsInst[64]
DCS instance.
Definition ngcdtt.hpp:246
char dcsHost[64]
DCS host.
Definition ngcdtt.hpp:249
const char * Version()
Return version.
Definition ngcdttMain.cpp:265
int dcsMod
DCS acquisition module index.
Definition ngcdtt.hpp:142
void Verbose(const char *format,...) __attribute__((format(printf
Verbose output.
Definition ngcdttMain.cpp:955
int MainLoop()
Enter the gateway main-loop.
Definition ngcdttMain.cpp:1047
void CamClose()
Close camera.
Definition ngcdttDisp.cpp:44
char camera[128]
Camera name.
Definition ngcdtt.hpp:243
int Initialize()
Initialize.
Definition ngcdttMain.cpp:774
int NX()
Return dimension in x-direction of requested window.
Definition ngcdttDisp.cpp:209
void Service(const char *value)
Set request/reply service name.
Definition ngcdttMain.cpp:472
int NY()
Return dimension in y-direction of requested window.
Definition ngcdttDisp.cpp:211
virtual void DbAttrInvert(int value)
Write image inversion flag to database.
Definition ngcdttMain.cpp:1757
int ignoreSignal
Ignore signal in main-loop select call.
Definition ngcdtt.hpp:124
int Enabled()
Return enabled status.
Definition ngcdttDisp.cpp:80
void Stop()
Stop (disable transfer)
Definition ngcdttDisp.cpp:93
virtual void InstallSignalHandlers()
Install signal handlers.
Definition ngcdttMain.cpp:282
int CamOpen()
Open camera.
Definition ngcdttDisp.cpp:25
ngcdttPUBLISH * publisher
Publisher object.
Definition ngcdtt.hpp:234
int SelectFrame(const char *name)
Select frame type by name and return 1, if setup has changed.
Definition ngcdttDisp.cpp:120
int nyMax
Maximum y-dimension.
Definition ngcdtt.hpp:136
void Datastream(const char *value)
Set datastream name.
Definition ngcdttMain.cpp:491
void PrintUsage(const char *argv0)
Print usage.
Definition ngcdttMain.cpp:293
void ExecReply(int stat, const char *msg)
Send execution reply message and status (1 = success, 0 = failure)
Definition ngcdttMain.cpp:763
void Status(int flag)
Set transfer status (enable=1, disable=0)
Definition ngcdttDisp.cpp:82
void void Log(const char *msg)
Log message.
Definition ngcdttMain.cpp:984
virtual void Logger(const char *msg)
Application specific logger.
Definition ngcdttMain.cpp:1032
int Store()
Store bias frame.
Definition ngcdttDisp.cpp:215
void DCS(const char *value)
Assign DCS instance.
Definition ngcdttMain.cpp:496
void Shutdown()
Request shutdown.
Definition ngcdttMain.cpp:1020
virtual int DbGetCfg(const char *p, ngcdcs_rtdacq_t *acq)
Get acquisition process configuration from DCS database.
Definition ngcdttAcq.cpp:28
virtual void DbAttrConnected(int value)
Write connected flag to database.
Definition ngcdttMain.cpp:1753
int autoEnable
Auto enable.
Definition ngcdtt.hpp:130
int acqPort
Acquisition process port.
Definition ngcdtt.hpp:240
void Retransmit()
Request frame retransmission.
Definition ngcdttDisp.cpp:213
virtual void Alarm(const char *msg)
Issue alarm.
Definition ngcdttDisp.cpp:60
virtual void DbAttrWin(int sx, int sy, int nx, int ny)
Write window parameters to database.
Definition ngcdttMain.cpp:1761
void DataClose()
Close data connection.
Definition ngcdttAcq.cpp:226
int Window(int sx, int sy, int nx, int ny)
Set new window and return 1, if setup has changed.
Definition ngcdttDisp.cpp:181
ngcdtt_dsup_t defaultSetup
DTT default setup.
Definition ngcdtt.hpp:252
virtual void DbAttrEnabled(int value)
Write enabled flag to database.
Definition ngcdttMain.cpp:1755
void LogLevel(int level)
Set logging level.
Definition ngcdttMain.cpp:280
int SY()
Return lower left y-coordinate of requested window.
Definition ngcdttDisp.cpp:207
void DataService(const char *host, int port)
Assign data service (host and port)
Definition ngcdttAcq.cpp:53
void Abort()
Abort.
Definition ngcdttMain.cpp:916
char * ErrMsg()
Return actual error message.
Definition ngcdttMain.cpp:769
virtual int MsgHandler(int fd)
Message handler.
Definition ngcdttMain.cpp:1030
int DataOpen()
Open data connection.
Definition ngcdttAcq.cpp:58
int Configure(const char *arg, const char *value=NULL)
Set configuration parameter.
Definition ngcdttMain.cpp:349
void URI(const char *value)
Set broker URI.
Definition ngcdttMain.cpp:482
virtual ~ngcdtt()
Destructor.
Definition ngcdttMain.cpp:213
void DefaultFrame(const char *value)
Assign default display frame type.
Definition ngcdttMain.cpp:501
void Start()
Start (enable transfer)
Definition ngcdttDisp.cpp:91
int InvertStatus()
Return image inversion flag.
Definition ngcdttDisp.cpp:118
void StopMainLoop()
Stop the gateway main-loop (asynchronous call)
Definition ngcdttMain.cpp:1039
char acqHost[64]
Acquisition process host.
Definition ngcdtt.hpp:237
virtual void DbAttrSelFrame(const char *name)
Write selected frame to database.
Definition ngcdttMain.cpp:1759
#define str2str(s1, s2, n)
Definition ngcb.h:74
#define ngcdttMAX_CON
Definition ngcdtt.hpp:62
void ngcdttKillHandler(int sig)
Definition ngcdttMain.cpp:60
void ngcdttBreakHandler(int sig)
Definition ngcdttMain.cpp:65
void ngcdttExitHandler(int sig)
Definition ngcdttMain.cpp:32
Definition ngcdcsRTD.hpp:26
Definition ngcdtt.hpp:67
int numBuf
Number of display buffers.
Definition ngcdtt.hpp:84
int nxMax
Maximum x-dimension.
Definition ngcdtt.hpp:78
char acqHost[64]
Acquisition process host.
Definition ngcdtt.hpp:69
ngcdtt_dsup_t()
Constructor.
Definition ngcdtt.hpp:93
int win[4]
Requested window.
Definition ngcdtt.hpp:90
char camera[128]
Camera name.
Definition ngcdtt.hpp:75
double freq
Maximum display frequency (Hz)
Definition ngcdtt.hpp:87
int nyMax
Maximum y-dimension.
Definition ngcdtt.hpp:81
int acqPort
Acquisition process port.
Definition ngcdtt.hpp:72
Definition ngcppInt.h:554
Definition ngcppInt.h:518
Definition ngcppInt.h:489