13#error This is a C++ include file and cannot be used from plain C
31#define ngcdcsEXP_NONE 0
32#define ngcdcsEXP_INACTIVE 1
33#define ngcdcsEXP_PENDING 2
34#define ngcdcsEXP_INTEGRATING 4
35#define ngcdcsEXP_PAUSED 8
36#define ngcdcsEXP_READING 16
37#define ngcdcsEXP_PROCESSING 32
38#define ngcdcsEXP_TRANSFERRING 64
39#define ngcdcsEXP_COMPL_SUCCESS 128
40#define ngcdcsEXP_COMPL_FAILURE 256
41#define ngcdcsEXP_COMPL_ABORTED 512
42#define ngcdcsEXP_COMPL_STOPPED 1024
47#define ngcdcsEXP_STARTING (ngcdcsEXP_INTEGRATING | ngcdcsEXP_INACTIVE)
52#define ngcdcsEXP_WIPING (ngcdcsEXP_READING | ngcdcsEXP_INACTIVE)
57#define ngcdcsEXP_ACTIVE(status) ((status > ngcdcsEXP_INACTIVE) && \
58 (status < ngcdcsEXP_COMPL_SUCCESS))
63#define ngcdcsEXP_SUSTAINED 1
64#define ngcdcsEXP_SINGLE 2
69#define ngcdcsEXP_FORMAT_SINGLE 1
70#define ngcdcsEXP_FORMAT_CUBE 2
71#define ngcdcsEXP_FORMAT_EXTENSION 3
72#define ngcdcsEXP_FORMAT_SINGLE_EXT 4
73#define ngcdcsEXP_FORMAT_CUBE_EXT 5
74#define ngcdcsEXP_FORMAT_GENERIC_1 6
75#define ngcdcsEXP_FORMAT_GENERIC_2 7
80#define ngcdcsEXP_NAMING_REQUEST 1
81#define ngcdcsEXP_NAMING_SEQUENCE 2
82#define ngcdcsEXP_NAMING_AUTO 3
83#define ngcdcsEXP_NAMING_REC_ID 4
84#define ngcdcsEXP_NAMING_AUTO_ID 5
89#define ngcdcsEXP_MAX_CLIENTS 8
94#define ngcdcsEXP_EVT_IMG 0x01
95#define ngcdcsEXP_EVT_2AG 0x02
96#define ngcdcsEXP_EVT_ERR 0x04
97#define ngcdcsEXP_EVT_LOCK 0x08
98#define ngcdcsEXP_EVT_UNLOCK 0x10
151 strcpy(
id, other.
id);
161 strcpy(
id, other.
id);
337 if (fdIn_ == pipe_[0]) fdIn_ = -1;
338 close(pipe_[0]); pipe_[0] = -1;
342 if (fdOut_ == pipe_[1]) fdOut_ = -1;
343 shutdown(pipe_[1], SHUT_WR);
344 close(pipe_[1]); pipe_[1] = -1;
351 if (semExpEvt_ != NULL)
delete semExpEvt_;
352 if (semExpLock_ != NULL)
delete semExpLock_;
353 if (semExpSync_ != NULL)
delete semExpSync_;
363 void ResetFd() {fdIn_ = pipe_[0]; fdOut_ = pipe_[1];}
375 void Lock() {
if (semExpEvt_ != NULL) semExpEvt_->Lock();}
378 void Unlock() {
if (semExpEvt_ != NULL) semExpEvt_->Unlock();}
382 if (semExpSync_ != NULL) semExpSync_->Set(0);
388 if (semExpSync_ != NULL)
391 else semExpSync_->Set(0);
397 if (semExpSync_ != NULL) semExpSync_->WaitCnt(inst + 1);
402 if ((semExpSync_ != NULL) && (numInst_ != 0))
404 if (semExpSync_->Cnt() != 0)
406 semExpSync_->Set(((inst + 1) % numInst_) + 1);
414 if (semExpEvt_ != NULL)
416 semExpEvt_->TryLock();
417 semExpEvt_->Unlock();
424 instanceList_ |= (1 << inst);
425 abortList_ &= ~(1 << inst);
432 lastTransferList_ = 0;
437 instanceList_ &= ~(1 << inst);
438 abortList_ &= ~(1 << inst);
439 lastTransferList_ &= ~(1 << inst);
443 int LastTransfer(
int inst) {
return ((lastTransferList_ & (1 << inst)) != 0);}
475 buf[3] = *(
int *)&evt.
status;
478 buf[6] = (int)strlen(evt.
msg);
484 if (write(
StatusFdOut(), p,
sizeof(p)) !=
sizeof(p))
486 sprintf(
ErrMsg(),
"internal pipe error - %s", strerror(errno));
498 sprintf(
ErrMsg(),
"internal pipe error - %s", strerror(errno));
520 if (read(
StatusFdIn(), p,
sizeof(p)) !=
sizeof(p))
522 sprintf(
ErrMsg(),
"internal pipe error - %s", strerror(errno));
536 evt->
status = *(
unsigned int *)&buf[3];
551 instanceList_ &= ~(1 << evt->
instance);
556 lastTransferList_ &= ~(1 << evt->
instance);
563 lastTransferList_ |= (1 << evt->
instance);
582 sprintf(
ErrMsg(),
"internal pipe error - %s", strerror(errno));
592 evt->
msg[buf[6]] =
'\0';
649 while (semExpLock_->TryWait() == 0);
657 flag = lockCancelled_;
680 if ((strcmp(name,
"single") == 0) ||
681 (strcmp(name,
"fits-single") == 0))
685 else if ((strcmp(name,
"cube") == 0) ||
686 (strcmp(name,
"fits-cube") == 0))
690 else if ((strcmp(name,
"extension") == 0) ||
691 (strcmp(name,
"fits-mef") == 0))
695 else if ((strcmp(name,
"single-ext") == 0) ||
696 (strcmp(name,
"fits-sef") == 0))
700 else if ((strcmp(name,
"cube-ext") == 0) ||
701 (strcmp(name,
"fits-cef") == 0))
705 else if (strcmp(name,
"generic-1") == 0)
709 else if (strcmp(name,
"generic-2") == 0)
715 strcpy(
ErrMsg(),
"unsupported data file format");
731 sprintf(
ErrMsg(),
"unsupported data file format (%d)", newFormat);
750 strcpy(formatName_,
"single");
755 strcpy(formatName_,
"cube");
760 strcpy(formatName_,
"extension");
765 strcpy(formatName_,
"single-ext");
770 strcpy(formatName_,
"cube-ext");
775 strcpy(formatName_,
"generic-1");
780 strcpy(formatName_,
"generic-2");
785 strcpy(formatName_,
"unknown");
790 return (formatName_);
799 strcpy(formatName_,
"FITS-Single");
804 strcpy(formatName_,
"FITS-Cube");
809 strcpy(formatName_,
"FITS-MEF");
814 strcpy(formatName_,
"FITS-SEF");
819 strcpy(formatName_,
"FITS-CEF");
824 strcpy(formatName_,
"generic-1");
829 strcpy(formatName_,
"generic-2");
834 strcpy(formatName_,
"unknown");
839 return (formatName_);
850 sprintf(
ErrMsg(),
"unsupported naming scheme %d", newNaming);
865 if (strlen(path) > 0)
867 if (strlen(path) >= (256 - 64))
869 sprintf(
ErrMsg(),
"path name is too long");
880 sprintf(
ErrMsg(),
"%s is no directory", path);
892 strcpy(dataPath_, path);
901 if (strlen(dataPath_) > 0) sprintf(path_,
"%s/%s", dataPath_,
baseName);
919 if (strlen(name) == 0)
921 baseName[0] =
'\0'; path_[0] =
'\0';
924 else if (strlen(name) > (256 - 64))
926 sprintf(
ErrMsg(),
"exposure base name is too long");
929 else if ((name[0] !=
'/') && (name[0] !=
'.'))
931 if (strlen(dataPath_) > 0) sprintf(tmpPath,
"%s/%s", dataPath_, name);
932 else strcpy(tmpPath, name);
936 strcpy(tmpPath, name);
949 sprintf(
ErrMsg(),
"%s is no directory", tmp);
962 strcpy(path_, tmpPath);
979 if (strlen(
id) == 0) path_[0] =
'\0';
980 else if (strlen(dataPath_) > 0) sprintf(path_,
"%s/%s", dataPath_,
id);
981 else strcpy(path_,
id);
991 if (strlen(dataPath_) > 0) sprintf(path_,
"%s/%s", dataPath_,
baseName);
1001 strcat(path_,
uuid);
1009 if (strlen(dataPath_) > 0) sprintf(path_,
"%s/_ngctmp", dataPath_);
1010 else strcpy(path_,
"_ngctmp");
1027 const char *p =
Path();
1034 strcpy(
ErrMsg(),
"no valid path");
1073 default: strcpy(s,
"unknown");
break;
1086 if (sscanf(expStartTime_,
"%*[^T]%*[T]%2d:%2d:%80lf\n", &hour, &min, &sec) == 3)
1088 expStartTimeUTC_ = (
static_cast<double>(hour) * 3600.0) + (
static_cast<double>(min) * 60.0) + sec;
1104 struct timeval timeVal;
1144 char dataPath_[256];
1147 char formatName_[64];
1168 char expStartTime_[64];
1171 double expStartTimeMJD_;
1174 double expStartTimeUTC_;
1186 int lastTransferList_;
1209 memset(dataPath_, 0,
sizeof(dataPath_));
1210 memset(formatName_, 0,
sizeof(formatName_));
1215 evar = getenv(
"INS_ROOT");
1218 sprintf(dataPath_,
"%s/", evar);
1219 evar = getenv(
"INS_USER");
1220 if (evar != NULL) strcat(dataPath_, evar);
1221 else strcat(dataPath_,
"SYSTEM");
1222 strcat(dataPath_,
"/DETDATA");
1226 evar = getenv(
"DATAROOT");
1229 sprintf(dataPath_,
"%s/data", evar);
1233 dataPath_[0] =
'\0';
1248 sprintf(path_,
"%s/%s", dataPath_,
baseName);
1268 expStartTimeMJD_ = 0.0;
1269 expStartTimeUTC_ = 0.0;
1270 expStartTime_[0] =
'\0';
1279 strcpy(
origin,
"ESO-PARANAL");
1294 pipe_[0] = -1; pipe_[1] = -1;
1296 fdIn_ = pipe_[0]; fdOut_ = pipe_[1];
1301 semExpEvt_ =
new ngcbSEMC(1);
1302 semExpSync_ =
new ngcbSEMC(0);
1309 semExpLock_ =
new ngcbSEMC(0);
1317 lastTransferList_ = 0;
1335 if ((fdOut_ >= 0) && (fdOut_ == pipe_[1]))
1337 close(pipe_[1]); pipe_[1] = -1; fdOut_ = -1;
Definition ngcbFITS.hpp:25
Definition ngcbTHREAD.hpp:68
int naming
Naming scheme.
Definition ngcdcsEXP.hpp:230
char uuid[48]
Unique ID.
Definition ngcdcsEXP.hpp:245
int EndFlag()
Get end-flag.
Definition ngcdcsEXP.hpp:1126
int Naming(int newNaming)
Set naming scheme.
Definition ngcdcsEXP.hpp:843
void Detach()
Remove all instances from instance-management lists.
Definition ngcdcsEXP.hpp:429
const char * Path()
Get full path to base name.
Definition ngcdcsEXP.hpp:976
int StatusFdIn()
Get incoming file descriptor.
Definition ngcdcsEXP.hpp:366
void Attach(int inst)
Add instance to instance-management lists.
Definition ngcdcsEXP.hpp:423
virtual ~ngcdcsEXP()
Destructor.
Definition ngcdcsEXP.hpp:329
char * ErrMsg()
Return a pointer to the actual error message.
Definition ngcdcsEXP.hpp:676
void ResetInstLock()
Reset synchronous instance locking.
Definition ngcdcsEXP.hpp:381
int extFits
Flag for extended FITS header.
Definition ngcdcsEXP.hpp:182
int tmpFile
Store tmeporary file.
Definition ngcdcsEXP.hpp:266
int RecvEvt(ngcdcs_expevt_t *evt)
Receive status event.
Definition ngcdcsEXP.hpp:511
unsigned int statusSaved
Saved exposure status.
Definition ngcdcsEXP.hpp:224
int DataPath(const char *path)
Set data path.
Definition ngcdcsEXP.hpp:864
double ExpStartTimeMJD()
Get exposure start time (MJD)
Definition ngcdcsEXP.hpp:1097
void ApplLocked()
Signal that application is locked.
Definition ngcdcsEXP.hpp:626
void InitInstLock(int n)
Initialize synchronous instance locking.
Definition ngcdcsEXP.hpp:386
void Stat2Str(char *s, unsigned int stat)
Map status to string.
Definition ngcdcsEXP.hpp:1056
void ResetFd()
Reset in/out file descriptors.
Definition ngcdcsEXP.hpp:363
void TimeStamp()
Generate exposure start time-stamp.
Definition ngcdcsEXP.hpp:1103
void Unlock(int inst)
Synchronous instance unlock with defined order.
Definition ngcdcsEXP.hpp:401
int secure
Secure mode.
Definition ngcdcsEXP.hpp:263
ngcdcsEXP()
Constructor.
Definition ngcdcsEXP.hpp:321
int instLock
Lock instances for guaranteed order.
Definition ngcdcsEXP.hpp:194
int BaseName(const char *name)
Set exposure base name.
Definition ngcdcsEXP.hpp:916
const char * BaseName()
Get exposure base name.
Definition ngcdcsEXP.hpp:968
ngcdcsEXP & operator=(const ngcdcsEXP &other)
Operator =.
Definition ngcdcsEXP.hpp:293
void Lock(int inst)
Synchronous instance lock with defined order.
Definition ngcdcsEXP.hpp:396
int Format(const char *name)
Set exposure data file format (as string)
Definition ngcdcsEXP.hpp:679
void ApplRelease()
Release application lock.
Definition ngcdcsEXP.hpp:629
int sequenceNumber
Sequence number.
Definition ngcdcsEXP.hpp:188
int merge
Merge flag.
Definition ngcdcsEXP.hpp:212
int LastTransfer(int inst)
Check if the given instance is in last-transfer state.
Definition ngcdcsEXP.hpp:443
char fileName[512]
Common file name for this file.
Definition ngcdcsEXP.hpp:200
void SetFdIn(int f)
Set incoming file descriptor.
Definition ngcdcsEXP.hpp:357
int useLock
Flag to use application locking mechanism.
Definition ngcdcsEXP.hpp:257
int Active()
Check if exposure is active.
Definition ngcdcsEXP.hpp:372
ngcbFITS fits
FITS-keyword object.
Definition ngcdcsEXP.hpp:215
ngcdcsEXP(const ngcdcsEXP &other)
Copy constructor.
Definition ngcdcsEXP.hpp:309
void Unlock()
Unlock access to exposure handler.
Definition ngcdcsEXP.hpp:378
const char * FormatNameELT()
Return exposure file format name (ELT)
Definition ngcdcsEXP.hpp:794
int numFiles
Number of files generated during last exposure.
Definition ngcdcsEXP.hpp:275
const char * ExpStartTime()
Get exposure start time (string)
Definition ngcdcsEXP.hpp:1094
void Detach(int inst)
Remove instance from instance-management lists.
Definition ngcdcsEXP.hpp:436
int ApplSkip()
Skip locking message.
Definition ngcdcsEXP.hpp:663
struct timeval startTime
Start time-stamp.
Definition ngcdcsEXP.hpp:278
unsigned int drvStatus
Exposure driver status.
Definition ngcdcsEXP.hpp:281
void DrvStatus(unsigned int stat)
Update exposure sequence driver status.
Definition ngcdcsEXP.hpp:1113
ngcbFITS appHdr
FITS-keyword object for application specific extension.
Definition ngcdcsEXP.hpp:218
int NextIndex()
Create next exposure sequence index.
Definition ngcdcsEXP.hpp:1015
int format
Data file format.
Definition ngcdcsEXP.hpp:227
int numFitsExt
Number of FITS-extensions generated during last exposure.
Definition ngcdcsEXP.hpp:272
int LastTransfer()
Check if all attached (active) instances are in last-transfer state.
Definition ngcdcsEXP.hpp:446
char lastName[256+16]
Last base name incl. sequence number.
Definition ngcdcsEXP.hpp:239
int split
Split glued images into extensions.
Definition ngcdcsEXP.hpp:197
char * DataPath()
Return data path.
Definition ngcdcsEXP.hpp:913
int Aborted()
Definition ngcdcsEXP.hpp:458
void AssignUUID(const char *value)
Assign UUID.
Definition ngcdcsEXP.hpp:971
int expType
Exposure type.
Definition ngcdcsEXP.hpp:260
int WaitApplLocked()
Wait until application is locked.
Definition ngcdcsEXP.hpp:607
void StatStr(char *s)
Get status string.
Definition ngcdcsEXP.hpp:1053
char drvMsg[256]
Exposure driver status message.
Definition ngcdcsEXP.hpp:287
void ExpStartTime(struct timeval &timeVal)
Set exposure start time.
Definition ngcdcsEXP.hpp:1078
double ExpStartTimeUTC()
Get exposure start time (UTC seconds since midnight)
Definition ngcdcsEXP.hpp:1100
void EndFlag(int flag)
Set/clear end-flag.
Definition ngcdcsEXP.hpp:1119
int fileCheck
Check file permissions.
Definition ngcdcsEXP.hpp:254
char drvStatusName[32]
Exposure driver status name.
Definition ngcdcsEXP.hpp:284
int Attached()
Definition ngcdcsEXP.hpp:452
int time
Estimation for exposure time.
Definition ngcdcsEXP.hpp:233
FILE * fdList
List file descriptor.
Definition ngcdcsEXP.hpp:206
const char * TmpPath()
Get tmp-file path.
Definition ngcdcsEXP.hpp:1008
char origin[80]
ORIGIN keyword.
Definition ngcdcsEXP.hpp:290
double integrationTime
Integration time (for FITS header EXPTIME)
Definition ngcdcsEXP.hpp:251
int IssueEvt(ngcdcs_expevt_t evt)
Issue status event.
Definition ngcdcsEXP.hpp:461
int Format(int newFormat)
Set exposure data file format.
Definition ngcdcsEXP.hpp:722
char baseName[256]
Base name.
Definition ngcdcsEXP.hpp:236
int Naming()
Return naming scheme.
Definition ngcdcsEXP.hpp:861
int rev
Exposure handling revision.
Definition ngcdcsEXP.hpp:248
int Format()
Return exposure file format.
Definition ngcdcsEXP.hpp:742
unsigned int status
Exposure status.
Definition ngcdcsEXP.hpp:221
void Lock()
Lock access to exposure handler.
Definition ngcdcsEXP.hpp:375
int oneFile
All in one file ("Extension" format only)
Definition ngcdcsEXP.hpp:191
void Release()
Release exposure handler locking.
Definition ngcdcsEXP.hpp:412
int nopen
Counts how many objects access this file.
Definition ngcdcsEXP.hpp:209
void SetFdOut(int f)
Set outgoing file descriptor.
Definition ngcdcsEXP.hpp:360
void ApplClear()
Clear application lock.
Definition ngcdcsEXP.hpp:643
int checkFrames
Check frame selection at exposure start.
Definition ngcdcsEXP.hpp:269
const char * FormatName()
Return exposure file format name.
Definition ngcdcsEXP.hpp:745
FILE * fd
Shared file descriptor.
Definition ngcdcsEXP.hpp:203
int numExtBlocks
Number of extension header blocks to be reserved.
Definition ngcdcsEXP.hpp:185
int ApplCancelled()
Check if application lock was cancelled.
Definition ngcdcsEXP.hpp:654
int StatusFdOut()
Get outgoing file descriptor.
Definition ngcdcsEXP.hpp:369
int ngcbSocketPair(int fd[2], int bufferSize, char *erms)
Definition ngcbSocket.c:322
int ngcbFindIndex(const char *path, int minIndex, char *erms)
Definition ngcbFile.c:657
#define str2str(s1, s2, n)
Definition ngcb.h:74
void ngcbTime2UTC(struct timeval t, char *utc, int precision)
Definition ngcbTime.c:157
void ngcbParentDir(char *path, const char *fileName)
Definition ngcbFile.c:335
int ngcbIsDir(const char *path)
Definition ngcbFile.c:434
int ngcbGetTime(struct timeval *t)
Definition ngcbTime.c:41
double ngcbTime2MJD(struct timeval t)
Definition ngcbTime.c:195
#define ngcbSUCCESS
Definition ngcb.h:138
#define ngcbFAILURE
Definition ngcb.h:140
#define ngcdcsEXP_STARTING
Definition ngcdcsEXP.hpp:47
#define ngcdcsEXP_FORMAT_CUBE_EXT
Definition ngcdcsEXP.hpp:73
#define ngcdcsEXP_PENDING
Definition ngcdcsEXP.hpp:33
#define ngcdcsEXP_ACTIVE(status)
Definition ngcdcsEXP.hpp:57
#define ngcdcsEXP_FORMAT_CUBE
Definition ngcdcsEXP.hpp:70
#define ngcdcsEXP_COMPL_STOPPED
Definition ngcdcsEXP.hpp:42
#define ngcdcsEXP_SUSTAINED
Definition ngcdcsEXP.hpp:63
#define ngcdcsEXP_FORMAT_GENERIC_1
Definition ngcdcsEXP.hpp:74
#define ngcdcsEXP_NONE
Definition ngcdcsEXP.hpp:31
#define ngcdcsEXP_MAX_CLIENTS
Definition ngcdcsEXP.hpp:89
#define ngcdcsEXP_NAMING_SEQUENCE
Definition ngcdcsEXP.hpp:81
#define ngcdcsEXP_EVT_IMG
Definition ngcdcsEXP.hpp:94
#define ngcdcsEXP_NAMING_REQUEST
Definition ngcdcsEXP.hpp:80
#define ngcdcsEXP_FORMAT_SINGLE_EXT
Definition ngcdcsEXP.hpp:72
#define ngcdcsEXP_PROCESSING
Definition ngcdcsEXP.hpp:37
#define ngcdcsEXP_COMPL_FAILURE
Definition ngcdcsEXP.hpp:40
#define ngcdcsEXP_COMPL_SUCCESS
Definition ngcdcsEXP.hpp:39
#define ngcdcsEXP_NAMING_REC_ID
Definition ngcdcsEXP.hpp:83
#define ngcdcsEXP_WIPING
Definition ngcdcsEXP.hpp:52
#define ngcdcsEXP_FORMAT_SINGLE
Definition ngcdcsEXP.hpp:69
#define ngcdcsEXP_NAMING_AUTO
Definition ngcdcsEXP.hpp:82
#define ngcdcsEXP_COMPL_ABORTED
Definition ngcdcsEXP.hpp:41
#define ngcdcsEXP_FORMAT_EXTENSION
Definition ngcdcsEXP.hpp:71
#define ngcdcsEXP_PAUSED
Definition ngcdcsEXP.hpp:35
#define ngcdcsEXP_INTEGRATING
Definition ngcdcsEXP.hpp:34
#define ngcdcsEXP_NAMING_AUTO_ID
Definition ngcdcsEXP.hpp:84
#define ngcdcsEXP_TRANSFERRING
Definition ngcdcsEXP.hpp:38
#define ngcdcsEXP_READING
Definition ngcdcsEXP.hpp:36
#define ngcdcsEXP_FORMAT_GENERIC_2
Definition ngcdcsEXP.hpp:75
#define ngcdcsEXP_INACTIVE
Definition ngcdcsEXP.hpp:32
Definition ngcdcsEXP.hpp:103
double ts
Definition ngcdcsEXP.hpp:107
float offsetY
Definition ngcdcsEXP.hpp:105
float offsetX
Definition ngcdcsEXP.hpp:104
float quality
Definition ngcdcsEXP.hpp:106
char status[32]
Definition ngcdcsEXP.hpp:146
char id[64]
Definition ngcdcsEXP.hpp:143
char host[64]
Definition ngcdcsEXP.hpp:144
int method
Definition ngcdcsEXP.hpp:147
char fileName[256]
Definition ngcdcsEXP.hpp:145
ngcdcs_exp_topic()
Constructor.
Definition ngcdcsEXP.hpp:169
ngcdcs_exp_topic(const ngcdcs_exp_topic &other)
Copy constructor.
Definition ngcdcsEXP.hpp:160
ngcdcs_exp_topic & operator=(const ngcdcs_exp_topic &other)
Operator =.
Definition ngcdcsEXP.hpp:150
Definition ngcdcsEXP.hpp:113
int instance
Definition ngcdcsEXP.hpp:115
ngcdcs_2ag_t ag
Definition ngcdcsEXP.hpp:121
int tag
Definition ngcdcsEXP.hpp:114
int errorId
Definition ngcdcsEXP.hpp:118
int ioError
Definition ngcdcsEXP.hpp:119
int merge
Definition ngcdcsEXP.hpp:116
ngcdcs_expevt_t()
Constructor.
Definition ngcdcsEXP.hpp:124
char msg[1024]
Definition ngcdcsEXP.hpp:120
unsigned int status
Definition ngcdcsEXP.hpp:117