12#error This is a C++ include file and cannot be used from plain C
30#define ngcdcsEXP_NONE 0
31#define ngcdcsEXP_INACTIVE 1
32#define ngcdcsEXP_PENDING 2
33#define ngcdcsEXP_INTEGRATING 4
34#define ngcdcsEXP_PAUSED 8
35#define ngcdcsEXP_READING 16
36#define ngcdcsEXP_PROCESSING 32
37#define ngcdcsEXP_TRANSFERRING 64
38#define ngcdcsEXP_COMPL_SUCCESS 128
39#define ngcdcsEXP_COMPL_FAILURE 256
40#define ngcdcsEXP_COMPL_ABORTED 512
41#define ngcdcsEXP_COMPL_STOPPED 1024
46#define ngcdcsEXP_STARTING (ngcdcsEXP_INTEGRATING | ngcdcsEXP_INACTIVE)
51#define ngcdcsEXP_WIPING (ngcdcsEXP_READING | ngcdcsEXP_INACTIVE)
56#define ngcdcsEXP_ACTIVE(status) ((status > ngcdcsEXP_INACTIVE) && \
57 (status < ngcdcsEXP_COMPL_SUCCESS))
62#define ngcdcsEXP_SUSTAINED 1
63#define ngcdcsEXP_SINGLE 2
68#define ngcdcsEXP_FORMAT_SINGLE 1
69#define ngcdcsEXP_FORMAT_CUBE 2
70#define ngcdcsEXP_FORMAT_EXTENSION 3
71#define ngcdcsEXP_FORMAT_SINGLE_EXT 4
72#define ngcdcsEXP_FORMAT_CUBE_EXT 5
73#define ngcdcsEXP_FORMAT_GENERIC_1 6
74#define ngcdcsEXP_FORMAT_GENERIC_2 7
79#define ngcdcsEXP_NAMING_REQUEST 1
80#define ngcdcsEXP_NAMING_SEQUENCE 2
81#define ngcdcsEXP_NAMING_AUTO 3
82#define ngcdcsEXP_NAMING_REC_ID 4
83#define ngcdcsEXP_NAMING_AUTO_ID 5
88#define ngcdcsEXP_MAX_CLIENTS 8
93#define ngcdcsEXP_EVT_IMG 0x01
94#define ngcdcsEXP_EVT_2AG 0x02
95#define ngcdcsEXP_EVT_ERR 0x04
96#define ngcdcsEXP_EVT_LOCK 0x08
97#define ngcdcsEXP_EVT_UNLOCK 0x10
150 strcpy(
id, other.
id);
160 strcpy(
id, other.
id);
336 if (fdIn_ == pipe_[0]) fdIn_ = -1;
337 close(pipe_[0]); pipe_[0] = -1;
341 if (fdOut_ == pipe_[1]) fdOut_ = -1;
342 shutdown(pipe_[1], SHUT_WR);
343 close(pipe_[1]); pipe_[1] = -1;
350 if (semExpEvt_ != NULL)
delete semExpEvt_;
351 if (semExpLock_ != NULL)
delete semExpLock_;
352 if (semExpSync_ != NULL)
delete semExpSync_;
362 void ResetFd() {fdIn_ = pipe_[0]; fdOut_ = pipe_[1];}
374 void Lock() {
if (semExpEvt_ != NULL) semExpEvt_->Lock();}
377 void Unlock() {
if (semExpEvt_ != NULL) semExpEvt_->Unlock();}
381 if (semExpSync_ != NULL) semExpSync_->Set(0);
387 if (semExpSync_ != NULL)
390 else semExpSync_->Set(0);
396 if (semExpSync_ != NULL) semExpSync_->WaitCnt(inst + 1);
401 if ((semExpSync_ != NULL) && (numInst_ != 0))
403 if (semExpSync_->Cnt() != 0)
405 semExpSync_->Set(((inst + 1) % numInst_) + 1);
413 if (semExpEvt_ != NULL)
415 semExpEvt_->TryLock();
416 semExpEvt_->Unlock();
423 instanceList_ |= (1 << inst);
424 abortList_ &= ~(1 << inst);
431 lastTransferList_ = 0;
436 instanceList_ &= ~(1 << inst);
437 abortList_ &= ~(1 << inst);
438 lastTransferList_ &= ~(1 << inst);
442 int LastTransfer(
int inst) {
return ((lastTransferList_ & (1 << inst)) != 0);}
474 buf[3] = *(
int *)&evt.
status;
477 buf[6] = (int)strlen(evt.
msg);
483 if (write(
StatusFdOut(), p,
sizeof(p)) !=
sizeof(p))
485 sprintf(
ErrMsg(),
"internal pipe error - %s", strerror(errno));
497 sprintf(
ErrMsg(),
"internal pipe error - %s", strerror(errno));
519 if (read(
StatusFdIn(), p,
sizeof(p)) !=
sizeof(p))
521 sprintf(
ErrMsg(),
"internal pipe error - %s", strerror(errno));
535 evt->
status = *(
unsigned int *)&buf[3];
550 instanceList_ &= ~(1 << evt->
instance);
555 lastTransferList_ &= ~(1 << evt->
instance);
562 lastTransferList_ |= (1 << evt->
instance);
581 sprintf(
ErrMsg(),
"internal pipe error - %s", strerror(errno));
591 evt->
msg[buf[6]] =
'\0';
648 while (semExpLock_->TryWait() == 0);
656 flag = lockCancelled_;
679 if ((strcmp(name,
"single") == 0) ||
680 (strcmp(name,
"fits-single") == 0))
684 else if ((strcmp(name,
"cube") == 0) ||
685 (strcmp(name,
"fits-cube") == 0))
689 else if ((strcmp(name,
"extension") == 0) ||
690 (strcmp(name,
"fits-mef") == 0))
694 else if ((strcmp(name,
"single-ext") == 0) ||
695 (strcmp(name,
"fits-sef") == 0))
699 else if ((strcmp(name,
"cube-ext") == 0) ||
700 (strcmp(name,
"fits-cef") == 0))
704 else if (strcmp(name,
"generic-1") == 0)
708 else if (strcmp(name,
"generic-2") == 0)
714 strcpy(
ErrMsg(),
"unsupported data file format");
730 sprintf(
ErrMsg(),
"unsupported data file format (%d)", newFormat);
749 strcpy(formatName_,
"single");
754 strcpy(formatName_,
"cube");
759 strcpy(formatName_,
"extension");
764 strcpy(formatName_,
"single-ext");
769 strcpy(formatName_,
"cube-ext");
774 strcpy(formatName_,
"generic-1");
779 strcpy(formatName_,
"generic-2");
784 strcpy(formatName_,
"unknown");
789 return (formatName_);
798 strcpy(formatName_,
"FITS-Single");
803 strcpy(formatName_,
"FITS-Cube");
808 strcpy(formatName_,
"FITS-MEF");
813 strcpy(formatName_,
"FITS-SEF");
818 strcpy(formatName_,
"FITS-CEF");
823 strcpy(formatName_,
"generic-1");
828 strcpy(formatName_,
"generic-2");
833 strcpy(formatName_,
"unknown");
838 return (formatName_);
849 sprintf(
ErrMsg(),
"unsupported naming scheme %d", newNaming);
864 if (strlen(path) > 0)
866 if (strlen(path) >= (256 - 64))
868 sprintf(
ErrMsg(),
"path name is too long");
879 sprintf(
ErrMsg(),
"%s is no directory", path);
884 sprintf(
ErrMsg(),
"no write permission on %s", path);
889 strcpy(dataPath_, path);
898 if (strlen(dataPath_) > 0) sprintf(path_,
"%s/%s", dataPath_,
baseName);
916 if (strlen(name) == 0)
918 baseName[0] =
'\0'; path_[0] =
'\0';
921 else if (strlen(name) > (256 - 64))
923 sprintf(
ErrMsg(),
"exposure base name is too long");
926 else if ((name[0] !=
'/') && (name[0] !=
'.'))
928 if (strlen(dataPath_) > 0) sprintf(tmpPath,
"%s/%s", dataPath_, name);
929 else strcpy(tmpPath, name);
933 strcpy(tmpPath, name);
946 sprintf(
ErrMsg(),
"%s is no directory", tmp);
951 sprintf(
ErrMsg(),
"no write permission on %s", tmp);
957 strcpy(path_, tmpPath);
974 if (strlen(
id) == 0) path_[0] =
'\0';
975 else if (strlen(dataPath_) > 0) sprintf(path_,
"%s/%s", dataPath_,
id);
976 else strcpy(path_,
id);
986 if (strlen(dataPath_) > 0) sprintf(path_,
"%s/%s", dataPath_,
baseName);
1004 if (strlen(dataPath_) > 0) sprintf(path_,
"%s/_ngctmp", dataPath_);
1005 else strcpy(path_,
"_ngctmp");
1022 const char *p =
Path();
1029 strcpy(
ErrMsg(),
"no valid path");
1068 default: strcpy(s,
"unknown");
break;
1081 if (sscanf(expStartTime_,
"%*[^T]%*[T]%2d:%2d:%80lf\n", &hour, &min, &sec) == 3)
1083 expStartTimeUTC_ = (
static_cast<double>(hour) * 3600.0) + (
static_cast<double>(min) * 60.0) + sec;
1099 struct timeval timeVal;
1139 char dataPath_[256];
1142 char formatName_[64];
1163 char expStartTime_[64];
1166 double expStartTimeMJD_;
1169 double expStartTimeUTC_;
1181 int lastTransferList_;
1204 memset(dataPath_, 0,
sizeof(dataPath_));
1205 memset(formatName_, 0,
sizeof(formatName_));
1210 evar = getenv(
"INS_ROOT");
1213 sprintf(dataPath_,
"%s/", evar);
1214 evar = getenv(
"INS_USER");
1215 if (evar != NULL) strcat(dataPath_, evar);
1216 else strcat(dataPath_,
"SYSTEM");
1217 strcat(dataPath_,
"/DETDATA");
1221 evar = getenv(
"DATAROOT");
1224 sprintf(dataPath_,
"%s/data", evar);
1228 dataPath_[0] =
'\0';
1243 sprintf(path_,
"%s/%s", dataPath_,
baseName);
1263 expStartTimeMJD_ = 0.0;
1264 expStartTimeUTC_ = 0.0;
1265 expStartTime_[0] =
'\0';
1274 strcpy(
origin,
"ESO-PARANAL");
1289 pipe_[0] = -1; pipe_[1] = -1;
1291 fdIn_ = pipe_[0]; fdOut_ = pipe_[1];
1296 semExpEvt_ =
new ngcbSEMC(1);
1297 semExpSync_ =
new ngcbSEMC(0);
1304 semExpLock_ =
new ngcbSEMC(0);
1312 lastTransferList_ = 0;
1330 if ((fdOut_ >= 0) && (fdOut_ == pipe_[1]))
1332 close(pipe_[1]); pipe_[1] = -1; fdOut_ = -1;
Definition ngcbFITS.hpp:24
Definition ngcbTHREAD.hpp:67
int naming
Naming scheme.
Definition ngcdcsEXP.hpp:229
char uuid[48]
Unique ID.
Definition ngcdcsEXP.hpp:244
int EndFlag()
Get end-flag.
Definition ngcdcsEXP.hpp:1121
int Naming(int newNaming)
Set naming scheme.
Definition ngcdcsEXP.hpp:842
void Detach()
Remove all instances from instance-management lists.
Definition ngcdcsEXP.hpp:428
const char * Path()
Get full path to base name.
Definition ngcdcsEXP.hpp:971
int StatusFdIn()
Get incoming file descriptor.
Definition ngcdcsEXP.hpp:365
void Attach(int inst)
Add instance to instance-management lists.
Definition ngcdcsEXP.hpp:422
virtual ~ngcdcsEXP()
Destructor.
Definition ngcdcsEXP.hpp:328
char * ErrMsg()
Return a pointer to the actual error message.
Definition ngcdcsEXP.hpp:675
void ResetInstLock()
Reset synchronous instance locking.
Definition ngcdcsEXP.hpp:380
int extFits
Flag for extended FITS header.
Definition ngcdcsEXP.hpp:181
int tmpFile
Store tmeporary file.
Definition ngcdcsEXP.hpp:265
int RecvEvt(ngcdcs_expevt_t *evt)
Receive status event.
Definition ngcdcsEXP.hpp:510
unsigned int statusSaved
Saved exposure status.
Definition ngcdcsEXP.hpp:223
int DataPath(const char *path)
Set data path.
Definition ngcdcsEXP.hpp:863
double ExpStartTimeMJD()
Get exposure start time (MJD)
Definition ngcdcsEXP.hpp:1092
void ApplLocked()
Signal that application is locked.
Definition ngcdcsEXP.hpp:625
void InitInstLock(int n)
Initialize synchronous instance locking.
Definition ngcdcsEXP.hpp:385
void Stat2Str(char *s, unsigned int stat)
Map status to string.
Definition ngcdcsEXP.hpp:1051
void ResetFd()
Reset in/out file descriptors.
Definition ngcdcsEXP.hpp:362
void TimeStamp()
Generate exposure start time-stamp.
Definition ngcdcsEXP.hpp:1098
void Unlock(int inst)
Synchronous instance unlock with defined order.
Definition ngcdcsEXP.hpp:400
int secure
Secure mode.
Definition ngcdcsEXP.hpp:262
ngcdcsEXP()
Constructor.
Definition ngcdcsEXP.hpp:320
int instLock
Lock instances for guaranteed order.
Definition ngcdcsEXP.hpp:193
int BaseName(const char *name)
Set exposure base name.
Definition ngcdcsEXP.hpp:913
const char * BaseName()
Get exposure base name.
Definition ngcdcsEXP.hpp:963
ngcdcsEXP & operator=(const ngcdcsEXP &other)
Operator =.
Definition ngcdcsEXP.hpp:292
void Lock(int inst)
Synchronous instance lock with defined order.
Definition ngcdcsEXP.hpp:395
int Format(const char *name)
Set exposure data file format (as string)
Definition ngcdcsEXP.hpp:678
void ApplRelease()
Release application lock.
Definition ngcdcsEXP.hpp:628
int sequenceNumber
Sequence number.
Definition ngcdcsEXP.hpp:187
int merge
Merge flag.
Definition ngcdcsEXP.hpp:211
int LastTransfer(int inst)
Check if the given instance is in last-transfer state.
Definition ngcdcsEXP.hpp:442
char fileName[512]
Common file name for this file.
Definition ngcdcsEXP.hpp:199
void SetFdIn(int f)
Set incoming file descriptor.
Definition ngcdcsEXP.hpp:356
int useLock
Flag to use application locking mechanism.
Definition ngcdcsEXP.hpp:256
int Active()
Check if exposure is active.
Definition ngcdcsEXP.hpp:371
ngcbFITS fits
FITS-keyword object.
Definition ngcdcsEXP.hpp:214
ngcdcsEXP(const ngcdcsEXP &other)
Copy constructor.
Definition ngcdcsEXP.hpp:308
void Unlock()
Unlock access to exposure handler.
Definition ngcdcsEXP.hpp:377
const char * FormatNameELT()
Return exposure file format name (ELT)
Definition ngcdcsEXP.hpp:793
int numFiles
Number of files generated during last exposure.
Definition ngcdcsEXP.hpp:274
const char * ExpStartTime()
Get exposure start time (string)
Definition ngcdcsEXP.hpp:1089
void Detach(int inst)
Remove instance from instance-management lists.
Definition ngcdcsEXP.hpp:435
int ApplSkip()
Skip locking message.
Definition ngcdcsEXP.hpp:662
struct timeval startTime
Start time-stamp.
Definition ngcdcsEXP.hpp:277
unsigned int drvStatus
Exposure driver status.
Definition ngcdcsEXP.hpp:280
void DrvStatus(unsigned int stat)
Update exposure sequence driver status.
Definition ngcdcsEXP.hpp:1108
ngcbFITS appHdr
FITS-keyword object for application specific extension.
Definition ngcdcsEXP.hpp:217
int NextIndex()
Create next exposure sequence index.
Definition ngcdcsEXP.hpp:1010
int format
Data file format.
Definition ngcdcsEXP.hpp:226
int numFitsExt
Number of FITS-extensions generated during last exposure.
Definition ngcdcsEXP.hpp:271
int LastTransfer()
Check if all attached (active) instances are in last-transfer state.
Definition ngcdcsEXP.hpp:445
char lastName[256+16]
Last base name incl. sequence number.
Definition ngcdcsEXP.hpp:238
int split
Split glued images into extensions.
Definition ngcdcsEXP.hpp:196
char * DataPath()
Return data path.
Definition ngcdcsEXP.hpp:910
int Aborted()
Definition ngcdcsEXP.hpp:457
void AssignUUID(const char *value)
Assign UUID.
Definition ngcdcsEXP.hpp:966
int expType
Exposure type.
Definition ngcdcsEXP.hpp:259
int WaitApplLocked()
Wait until application is locked.
Definition ngcdcsEXP.hpp:606
void StatStr(char *s)
Get status string.
Definition ngcdcsEXP.hpp:1048
char drvMsg[256]
Exposure driver status message.
Definition ngcdcsEXP.hpp:286
void ExpStartTime(struct timeval &timeVal)
Set exposure start time.
Definition ngcdcsEXP.hpp:1073
double ExpStartTimeUTC()
Get exposure start time (UTC seconds since midnight)
Definition ngcdcsEXP.hpp:1095
void EndFlag(int flag)
Set/clear end-flag.
Definition ngcdcsEXP.hpp:1114
int fileCheck
Check file permissions.
Definition ngcdcsEXP.hpp:253
char drvStatusName[32]
Exposure driver status name.
Definition ngcdcsEXP.hpp:283
int Attached()
Definition ngcdcsEXP.hpp:451
int time
Estimation for exposure time.
Definition ngcdcsEXP.hpp:232
FILE * fdList
List file descriptor.
Definition ngcdcsEXP.hpp:205
const char * TmpPath()
Get tmp-file path.
Definition ngcdcsEXP.hpp:1003
char origin[80]
ORIGIN keyword.
Definition ngcdcsEXP.hpp:289
double integrationTime
Integration time (for FITS header EXPTIME)
Definition ngcdcsEXP.hpp:250
int IssueEvt(ngcdcs_expevt_t evt)
Issue status event.
Definition ngcdcsEXP.hpp:460
int Format(int newFormat)
Set exposure data file format.
Definition ngcdcsEXP.hpp:721
char baseName[256]
Base name.
Definition ngcdcsEXP.hpp:235
int Naming()
Return naming scheme.
Definition ngcdcsEXP.hpp:860
int rev
Exposure handling revision.
Definition ngcdcsEXP.hpp:247
int Format()
Return exposure file format.
Definition ngcdcsEXP.hpp:741
unsigned int status
Exposure status.
Definition ngcdcsEXP.hpp:220
void Lock()
Lock access to exposure handler.
Definition ngcdcsEXP.hpp:374
int oneFile
All in one file ("Extension" format only)
Definition ngcdcsEXP.hpp:190
void Release()
Release exposure handler locking.
Definition ngcdcsEXP.hpp:411
int nopen
Counts how many objects access this file.
Definition ngcdcsEXP.hpp:208
void SetFdOut(int f)
Set outgoing file descriptor.
Definition ngcdcsEXP.hpp:359
void ApplClear()
Clear application lock.
Definition ngcdcsEXP.hpp:642
int checkFrames
Check frame selection at exposure start.
Definition ngcdcsEXP.hpp:268
const char * FormatName()
Return exposure file format name.
Definition ngcdcsEXP.hpp:744
FILE * fd
Shared file descriptor.
Definition ngcdcsEXP.hpp:202
int numExtBlocks
Number of extension header blocks to be reserved.
Definition ngcdcsEXP.hpp:184
int ApplCancelled()
Check if application lock was cancelled.
Definition ngcdcsEXP.hpp:653
int StatusFdOut()
Get outgoing file descriptor.
Definition ngcdcsEXP.hpp:368
int ngcbSocketPair(int fd[2], int bufferSize, char *erms)
Definition ngcbSocket.c:321
int ngcbWritePerm(const char *path)
Definition ngcbFile.c:447
int ngcbFindIndex(const char *path, int minIndex, char *erms)
Definition ngcbFile.c:656
#define str2str(s1, s2, n)
Definition ngcb.h:73
void ngcbTime2UTC(struct timeval t, char *utc, int precision)
Definition ngcbTime.c:156
void ngcbParentDir(char *path, const char *fileName)
Definition ngcbFile.c:334
int ngcbIsDir(const char *path)
Definition ngcbFile.c:433
int ngcbGetTime(struct timeval *t)
Definition ngcbTime.c:40
double ngcbTime2MJD(struct timeval t)
Definition ngcbTime.c:194
#define ngcbSUCCESS
Definition ngcb.h:137
#define ngcbFAILURE
Definition ngcb.h:139
#define ngcdcsEXP_STARTING
Definition ngcdcsEXP.hpp:46
#define ngcdcsEXP_FORMAT_CUBE_EXT
Definition ngcdcsEXP.hpp:72
#define ngcdcsEXP_PENDING
Definition ngcdcsEXP.hpp:32
#define ngcdcsEXP_ACTIVE(status)
Definition ngcdcsEXP.hpp:56
#define ngcdcsEXP_FORMAT_CUBE
Definition ngcdcsEXP.hpp:69
#define ngcdcsEXP_COMPL_STOPPED
Definition ngcdcsEXP.hpp:41
#define ngcdcsEXP_SUSTAINED
Definition ngcdcsEXP.hpp:62
#define ngcdcsEXP_FORMAT_GENERIC_1
Definition ngcdcsEXP.hpp:73
#define ngcdcsEXP_NONE
Definition ngcdcsEXP.hpp:30
#define ngcdcsEXP_MAX_CLIENTS
Definition ngcdcsEXP.hpp:88
#define ngcdcsEXP_NAMING_SEQUENCE
Definition ngcdcsEXP.hpp:80
#define ngcdcsEXP_EVT_IMG
Definition ngcdcsEXP.hpp:93
#define ngcdcsEXP_NAMING_REQUEST
Definition ngcdcsEXP.hpp:79
#define ngcdcsEXP_FORMAT_SINGLE_EXT
Definition ngcdcsEXP.hpp:71
#define ngcdcsEXP_PROCESSING
Definition ngcdcsEXP.hpp:36
#define ngcdcsEXP_COMPL_FAILURE
Definition ngcdcsEXP.hpp:39
#define ngcdcsEXP_COMPL_SUCCESS
Definition ngcdcsEXP.hpp:38
#define ngcdcsEXP_NAMING_REC_ID
Definition ngcdcsEXP.hpp:82
#define ngcdcsEXP_WIPING
Definition ngcdcsEXP.hpp:51
#define ngcdcsEXP_FORMAT_SINGLE
Definition ngcdcsEXP.hpp:68
#define ngcdcsEXP_NAMING_AUTO
Definition ngcdcsEXP.hpp:81
#define ngcdcsEXP_COMPL_ABORTED
Definition ngcdcsEXP.hpp:40
#define ngcdcsEXP_FORMAT_EXTENSION
Definition ngcdcsEXP.hpp:70
#define ngcdcsEXP_PAUSED
Definition ngcdcsEXP.hpp:34
#define ngcdcsEXP_INTEGRATING
Definition ngcdcsEXP.hpp:33
#define ngcdcsEXP_NAMING_AUTO_ID
Definition ngcdcsEXP.hpp:83
#define ngcdcsEXP_TRANSFERRING
Definition ngcdcsEXP.hpp:37
#define ngcdcsEXP_READING
Definition ngcdcsEXP.hpp:35
#define ngcdcsEXP_FORMAT_GENERIC_2
Definition ngcdcsEXP.hpp:74
#define ngcdcsEXP_INACTIVE
Definition ngcdcsEXP.hpp:31
Definition ngcdcsEXP.hpp:102
double ts
Definition ngcdcsEXP.hpp:106
float offsetY
Definition ngcdcsEXP.hpp:104
float offsetX
Definition ngcdcsEXP.hpp:103
float quality
Definition ngcdcsEXP.hpp:105
char status[32]
Definition ngcdcsEXP.hpp:145
char id[64]
Definition ngcdcsEXP.hpp:142
char host[64]
Definition ngcdcsEXP.hpp:143
int method
Definition ngcdcsEXP.hpp:146
char fileName[256]
Definition ngcdcsEXP.hpp:144
ngcdcs_exp_topic()
Constructor.
Definition ngcdcsEXP.hpp:168
ngcdcs_exp_topic(const ngcdcs_exp_topic &other)
Copy constructor.
Definition ngcdcsEXP.hpp:159
ngcdcs_exp_topic & operator=(const ngcdcs_exp_topic &other)
Operator =.
Definition ngcdcsEXP.hpp:149
Definition ngcdcsEXP.hpp:112
int instance
Definition ngcdcsEXP.hpp:114
ngcdcs_2ag_t ag
Definition ngcdcsEXP.hpp:120
int tag
Definition ngcdcsEXP.hpp:113
int errorId
Definition ngcdcsEXP.hpp:117
int ioError
Definition ngcdcsEXP.hpp:118
int merge
Definition ngcdcsEXP.hpp:115
ngcdcs_expevt_t()
Constructor.
Definition ngcdcsEXP.hpp:123
char msg[1024]
Definition ngcdcsEXP.hpp:119
unsigned int status
Definition ngcdcsEXP.hpp:116