EPICS Base  7.0.5.1
compressRecord.h
Go to the documentation of this file.
1 
7 #ifndef INC_compressRecord_H
8 #define INC_compressRecord_H
9 
10 #include "epicsTypes.h"
11 #include "link.h"
12 #include "epicsMutex.h"
13 #include "ellLib.h"
14 #include "devSup.h"
15 #include "epicsTime.h"
16 
17 #ifndef bufferingALG_NUM_CHOICES
18 
19 typedef enum {
22 } bufferingALG;
24 #define bufferingALG_NUM_CHOICES 2
25 #endif
26 
27 #ifndef compressALG_NUM_CHOICES
28 
29 typedef enum {
36 } compressALG;
38 #define compressALG_NUM_CHOICES 6
39 #endif
40 
42 typedef struct compressRecord {
43  char name[61];
44  char desc[41];
45  char asg[29];
46  epicsEnum16 scan;
47  epicsEnum16 pini;
48  epicsInt16 phas;
49  char evnt[40];
50  epicsInt16 tse;
51  DBLINK tsel;
52  epicsEnum16 dtyp;
53  epicsInt16 disv;
54  epicsInt16 disa;
55  DBLINK sdis;
59  epicsUInt8 disp;
60  epicsUInt8 proc;
61  epicsEnum16 stat;
62  epicsEnum16 sevr;
63  epicsEnum16 nsta;
64  epicsEnum16 nsev;
65  epicsEnum16 acks;
66  epicsEnum16 ackt;
67  epicsEnum16 diss;
68  epicsUInt8 lcnt;
69  epicsUInt8 pact;
70  epicsUInt8 putf;
71  epicsUInt8 rpro;
72  struct asgMember *asp;
73  struct processNotify *ppn;
74  struct processNotifyRecord *ppnr;
75  struct scan_element *spvt;
76  struct typed_rset *rset;
78  void *dpvt;
79  struct dbRecordType *rdes;
80  struct lockRecord *lset;
81  epicsEnum16 prio;
82  epicsUInt8 tpro;
83  epicsUInt8 bkpt;
84  epicsUInt8 udf;
85  epicsEnum16 udfs;
87  DBLINK flnk;
88  void * val;
89  DBLINK inp;
90  epicsInt16 res;
91  epicsEnum16 alg;
92  epicsEnum16 balg;
93  epicsUInt32 nsam;
94  epicsUInt32 n;
95  epicsFloat64 ihil;
96  epicsFloat64 ilil;
97  epicsFloat64 hopr;
98  epicsFloat64 lopr;
99  epicsInt16 prec;
100  char egu[16];
101  epicsUInt32 off;
102  epicsUInt32 nuse;
103  epicsUInt32 ouse;
104  double *bptr;
105  double *sptr;
106  double *wptr;
107  epicsInt32 inpn;
108  epicsFloat64 cvb;
109  epicsUInt32 inx;
111 
112 typedef enum {
113  compressRecordNAME = 0,
114  compressRecordDESC = 1,
115  compressRecordASG = 2,
116  compressRecordSCAN = 3,
117  compressRecordPINI = 4,
118  compressRecordPHAS = 5,
119  compressRecordEVNT = 6,
120  compressRecordTSE = 7,
121  compressRecordTSEL = 8,
122  compressRecordDTYP = 9,
123  compressRecordDISV = 10,
124  compressRecordDISA = 11,
125  compressRecordSDIS = 12,
126  compressRecordMLOK = 13,
127  compressRecordMLIS = 14,
128  compressRecordBKLNK = 15,
129  compressRecordDISP = 16,
130  compressRecordPROC = 17,
131  compressRecordSTAT = 18,
132  compressRecordSEVR = 19,
133  compressRecordNSTA = 20,
134  compressRecordNSEV = 21,
135  compressRecordACKS = 22,
136  compressRecordACKT = 23,
137  compressRecordDISS = 24,
138  compressRecordLCNT = 25,
139  compressRecordPACT = 26,
140  compressRecordPUTF = 27,
141  compressRecordRPRO = 28,
142  compressRecordASP = 29,
143  compressRecordPPN = 30,
144  compressRecordPPNR = 31,
145  compressRecordSPVT = 32,
146  compressRecordRSET = 33,
147  compressRecordDSET = 34,
148  compressRecordDPVT = 35,
149  compressRecordRDES = 36,
150  compressRecordLSET = 37,
151  compressRecordPRIO = 38,
152  compressRecordTPRO = 39,
153  compressRecordBKPT = 40,
154  compressRecordUDF = 41,
155  compressRecordUDFS = 42,
156  compressRecordTIME = 43,
157  compressRecordFLNK = 44,
158  compressRecordVAL = 45,
159  compressRecordINP = 46,
160  compressRecordRES = 47,
161  compressRecordALG = 48,
162  compressRecordBALG = 49,
163  compressRecordNSAM = 50,
164  compressRecordN = 51,
165  compressRecordIHIL = 52,
166  compressRecordILIL = 53,
167  compressRecordHOPR = 54,
168  compressRecordLOPR = 55,
169  compressRecordPREC = 56,
170  compressRecordEGU = 57,
171  compressRecordOFF = 58,
172  compressRecordNUSE = 59,
173  compressRecordOUSE = 60,
174  compressRecordBPTR = 61,
175  compressRecordSPTR = 62,
176  compressRecordWPTR = 63,
177  compressRecordINPN = 64,
178  compressRecordCVB = 65,
179  compressRecordINX = 66
180 } compressFieldIndex;
181 
182 #ifdef GEN_SIZE_OFFSET
183 
184 #include <epicsExport.h>
185 #include <cantProceed.h>
186 #ifdef __cplusplus
187 extern "C" {
188 #endif
189 static int compressRecordSizeOffset(dbRecordType *prt)
190 {
191  compressRecord *prec = 0;
192 
193  if (prt->no_fields != 67) {
194  cantProceed("IOC build or installation error:\n"
195  " The compressRecord defined in the DBD file has %d fields,\n"
196  " but the record support code was built with 67.\n",
197  prt->no_fields);
198  }
199  prt->papFldDes[compressRecordNAME]->size = sizeof(prec->name);
200  prt->papFldDes[compressRecordNAME]->offset = (unsigned short)((char *)&prec->name - (char *)prec);
201  prt->papFldDes[compressRecordDESC]->size = sizeof(prec->desc);
202  prt->papFldDes[compressRecordDESC]->offset = (unsigned short)((char *)&prec->desc - (char *)prec);
203  prt->papFldDes[compressRecordASG]->size = sizeof(prec->asg);
204  prt->papFldDes[compressRecordASG]->offset = (unsigned short)((char *)&prec->asg - (char *)prec);
205  prt->papFldDes[compressRecordSCAN]->size = sizeof(prec->scan);
206  prt->papFldDes[compressRecordSCAN]->offset = (unsigned short)((char *)&prec->scan - (char *)prec);
207  prt->papFldDes[compressRecordPINI]->size = sizeof(prec->pini);
208  prt->papFldDes[compressRecordPINI]->offset = (unsigned short)((char *)&prec->pini - (char *)prec);
209  prt->papFldDes[compressRecordPHAS]->size = sizeof(prec->phas);
210  prt->papFldDes[compressRecordPHAS]->offset = (unsigned short)((char *)&prec->phas - (char *)prec);
211  prt->papFldDes[compressRecordEVNT]->size = sizeof(prec->evnt);
212  prt->papFldDes[compressRecordEVNT]->offset = (unsigned short)((char *)&prec->evnt - (char *)prec);
213  prt->papFldDes[compressRecordTSE]->size = sizeof(prec->tse);
214  prt->papFldDes[compressRecordTSE]->offset = (unsigned short)((char *)&prec->tse - (char *)prec);
215  prt->papFldDes[compressRecordTSEL]->size = sizeof(prec->tsel);
216  prt->papFldDes[compressRecordTSEL]->offset = (unsigned short)((char *)&prec->tsel - (char *)prec);
217  prt->papFldDes[compressRecordDTYP]->size = sizeof(prec->dtyp);
218  prt->papFldDes[compressRecordDTYP]->offset = (unsigned short)((char *)&prec->dtyp - (char *)prec);
219  prt->papFldDes[compressRecordDISV]->size = sizeof(prec->disv);
220  prt->papFldDes[compressRecordDISV]->offset = (unsigned short)((char *)&prec->disv - (char *)prec);
221  prt->papFldDes[compressRecordDISA]->size = sizeof(prec->disa);
222  prt->papFldDes[compressRecordDISA]->offset = (unsigned short)((char *)&prec->disa - (char *)prec);
223  prt->papFldDes[compressRecordSDIS]->size = sizeof(prec->sdis);
224  prt->papFldDes[compressRecordSDIS]->offset = (unsigned short)((char *)&prec->sdis - (char *)prec);
225  prt->papFldDes[compressRecordMLOK]->size = sizeof(prec->mlok);
226  prt->papFldDes[compressRecordMLOK]->offset = (unsigned short)((char *)&prec->mlok - (char *)prec);
227  prt->papFldDes[compressRecordMLIS]->size = sizeof(prec->mlis);
228  prt->papFldDes[compressRecordMLIS]->offset = (unsigned short)((char *)&prec->mlis - (char *)prec);
229  prt->papFldDes[compressRecordBKLNK]->size = sizeof(prec->bklnk);
230  prt->papFldDes[compressRecordBKLNK]->offset = (unsigned short)((char *)&prec->bklnk - (char *)prec);
231  prt->papFldDes[compressRecordDISP]->size = sizeof(prec->disp);
232  prt->papFldDes[compressRecordDISP]->offset = (unsigned short)((char *)&prec->disp - (char *)prec);
233  prt->papFldDes[compressRecordPROC]->size = sizeof(prec->proc);
234  prt->papFldDes[compressRecordPROC]->offset = (unsigned short)((char *)&prec->proc - (char *)prec);
235  prt->papFldDes[compressRecordSTAT]->size = sizeof(prec->stat);
236  prt->papFldDes[compressRecordSTAT]->offset = (unsigned short)((char *)&prec->stat - (char *)prec);
237  prt->papFldDes[compressRecordSEVR]->size = sizeof(prec->sevr);
238  prt->papFldDes[compressRecordSEVR]->offset = (unsigned short)((char *)&prec->sevr - (char *)prec);
239  prt->papFldDes[compressRecordNSTA]->size = sizeof(prec->nsta);
240  prt->papFldDes[compressRecordNSTA]->offset = (unsigned short)((char *)&prec->nsta - (char *)prec);
241  prt->papFldDes[compressRecordNSEV]->size = sizeof(prec->nsev);
242  prt->papFldDes[compressRecordNSEV]->offset = (unsigned short)((char *)&prec->nsev - (char *)prec);
243  prt->papFldDes[compressRecordACKS]->size = sizeof(prec->acks);
244  prt->papFldDes[compressRecordACKS]->offset = (unsigned short)((char *)&prec->acks - (char *)prec);
245  prt->papFldDes[compressRecordACKT]->size = sizeof(prec->ackt);
246  prt->papFldDes[compressRecordACKT]->offset = (unsigned short)((char *)&prec->ackt - (char *)prec);
247  prt->papFldDes[compressRecordDISS]->size = sizeof(prec->diss);
248  prt->papFldDes[compressRecordDISS]->offset = (unsigned short)((char *)&prec->diss - (char *)prec);
249  prt->papFldDes[compressRecordLCNT]->size = sizeof(prec->lcnt);
250  prt->papFldDes[compressRecordLCNT]->offset = (unsigned short)((char *)&prec->lcnt - (char *)prec);
251  prt->papFldDes[compressRecordPACT]->size = sizeof(prec->pact);
252  prt->papFldDes[compressRecordPACT]->offset = (unsigned short)((char *)&prec->pact - (char *)prec);
253  prt->papFldDes[compressRecordPUTF]->size = sizeof(prec->putf);
254  prt->papFldDes[compressRecordPUTF]->offset = (unsigned short)((char *)&prec->putf - (char *)prec);
255  prt->papFldDes[compressRecordRPRO]->size = sizeof(prec->rpro);
256  prt->papFldDes[compressRecordRPRO]->offset = (unsigned short)((char *)&prec->rpro - (char *)prec);
257  prt->papFldDes[compressRecordASP]->size = sizeof(prec->asp);
258  prt->papFldDes[compressRecordASP]->offset = (unsigned short)((char *)&prec->asp - (char *)prec);
259  prt->papFldDes[compressRecordPPN]->size = sizeof(prec->ppn);
260  prt->papFldDes[compressRecordPPN]->offset = (unsigned short)((char *)&prec->ppn - (char *)prec);
261  prt->papFldDes[compressRecordPPNR]->size = sizeof(prec->ppnr);
262  prt->papFldDes[compressRecordPPNR]->offset = (unsigned short)((char *)&prec->ppnr - (char *)prec);
263  prt->papFldDes[compressRecordSPVT]->size = sizeof(prec->spvt);
264  prt->papFldDes[compressRecordSPVT]->offset = (unsigned short)((char *)&prec->spvt - (char *)prec);
265  prt->papFldDes[compressRecordRSET]->size = sizeof(prec->rset);
266  prt->papFldDes[compressRecordRSET]->offset = (unsigned short)((char *)&prec->rset - (char *)prec);
267  prt->papFldDes[compressRecordDSET]->size = sizeof(prec->dset);
268  prt->papFldDes[compressRecordDSET]->offset = (unsigned short)((char *)&prec->dset - (char *)prec);
269  prt->papFldDes[compressRecordDPVT]->size = sizeof(prec->dpvt);
270  prt->papFldDes[compressRecordDPVT]->offset = (unsigned short)((char *)&prec->dpvt - (char *)prec);
271  prt->papFldDes[compressRecordRDES]->size = sizeof(prec->rdes);
272  prt->papFldDes[compressRecordRDES]->offset = (unsigned short)((char *)&prec->rdes - (char *)prec);
273  prt->papFldDes[compressRecordLSET]->size = sizeof(prec->lset);
274  prt->papFldDes[compressRecordLSET]->offset = (unsigned short)((char *)&prec->lset - (char *)prec);
275  prt->papFldDes[compressRecordPRIO]->size = sizeof(prec->prio);
276  prt->papFldDes[compressRecordPRIO]->offset = (unsigned short)((char *)&prec->prio - (char *)prec);
277  prt->papFldDes[compressRecordTPRO]->size = sizeof(prec->tpro);
278  prt->papFldDes[compressRecordTPRO]->offset = (unsigned short)((char *)&prec->tpro - (char *)prec);
279  prt->papFldDes[compressRecordBKPT]->size = sizeof(prec->bkpt);
280  prt->papFldDes[compressRecordBKPT]->offset = (unsigned short)((char *)&prec->bkpt - (char *)prec);
281  prt->papFldDes[compressRecordUDF]->size = sizeof(prec->udf);
282  prt->papFldDes[compressRecordUDF]->offset = (unsigned short)((char *)&prec->udf - (char *)prec);
283  prt->papFldDes[compressRecordUDFS]->size = sizeof(prec->udfs);
284  prt->papFldDes[compressRecordUDFS]->offset = (unsigned short)((char *)&prec->udfs - (char *)prec);
285  prt->papFldDes[compressRecordTIME]->size = sizeof(prec->time);
286  prt->papFldDes[compressRecordTIME]->offset = (unsigned short)((char *)&prec->time - (char *)prec);
287  prt->papFldDes[compressRecordFLNK]->size = sizeof(prec->flnk);
288  prt->papFldDes[compressRecordFLNK]->offset = (unsigned short)((char *)&prec->flnk - (char *)prec);
289  prt->papFldDes[compressRecordVAL]->size = sizeof(prec->val);
290  prt->papFldDes[compressRecordVAL]->offset = (unsigned short)((char *)&prec->val - (char *)prec);
291  prt->papFldDes[compressRecordINP]->size = sizeof(prec->inp);
292  prt->papFldDes[compressRecordINP]->offset = (unsigned short)((char *)&prec->inp - (char *)prec);
293  prt->papFldDes[compressRecordRES]->size = sizeof(prec->res);
294  prt->papFldDes[compressRecordRES]->offset = (unsigned short)((char *)&prec->res - (char *)prec);
295  prt->papFldDes[compressRecordALG]->size = sizeof(prec->alg);
296  prt->papFldDes[compressRecordALG]->offset = (unsigned short)((char *)&prec->alg - (char *)prec);
297  prt->papFldDes[compressRecordBALG]->size = sizeof(prec->balg);
298  prt->papFldDes[compressRecordBALG]->offset = (unsigned short)((char *)&prec->balg - (char *)prec);
299  prt->papFldDes[compressRecordNSAM]->size = sizeof(prec->nsam);
300  prt->papFldDes[compressRecordNSAM]->offset = (unsigned short)((char *)&prec->nsam - (char *)prec);
301  prt->papFldDes[compressRecordN]->size = sizeof(prec->n);
302  prt->papFldDes[compressRecordN]->offset = (unsigned short)((char *)&prec->n - (char *)prec);
303  prt->papFldDes[compressRecordIHIL]->size = sizeof(prec->ihil);
304  prt->papFldDes[compressRecordIHIL]->offset = (unsigned short)((char *)&prec->ihil - (char *)prec);
305  prt->papFldDes[compressRecordILIL]->size = sizeof(prec->ilil);
306  prt->papFldDes[compressRecordILIL]->offset = (unsigned short)((char *)&prec->ilil - (char *)prec);
307  prt->papFldDes[compressRecordHOPR]->size = sizeof(prec->hopr);
308  prt->papFldDes[compressRecordHOPR]->offset = (unsigned short)((char *)&prec->hopr - (char *)prec);
309  prt->papFldDes[compressRecordLOPR]->size = sizeof(prec->lopr);
310  prt->papFldDes[compressRecordLOPR]->offset = (unsigned short)((char *)&prec->lopr - (char *)prec);
311  prt->papFldDes[compressRecordPREC]->size = sizeof(prec->prec);
312  prt->papFldDes[compressRecordPREC]->offset = (unsigned short)((char *)&prec->prec - (char *)prec);
313  prt->papFldDes[compressRecordEGU]->size = sizeof(prec->egu);
314  prt->papFldDes[compressRecordEGU]->offset = (unsigned short)((char *)&prec->egu - (char *)prec);
315  prt->papFldDes[compressRecordOFF]->size = sizeof(prec->off);
316  prt->papFldDes[compressRecordOFF]->offset = (unsigned short)((char *)&prec->off - (char *)prec);
317  prt->papFldDes[compressRecordNUSE]->size = sizeof(prec->nuse);
318  prt->papFldDes[compressRecordNUSE]->offset = (unsigned short)((char *)&prec->nuse - (char *)prec);
319  prt->papFldDes[compressRecordOUSE]->size = sizeof(prec->ouse);
320  prt->papFldDes[compressRecordOUSE]->offset = (unsigned short)((char *)&prec->ouse - (char *)prec);
321  prt->papFldDes[compressRecordBPTR]->size = sizeof(prec->bptr);
322  prt->papFldDes[compressRecordBPTR]->offset = (unsigned short)((char *)&prec->bptr - (char *)prec);
323  prt->papFldDes[compressRecordSPTR]->size = sizeof(prec->sptr);
324  prt->papFldDes[compressRecordSPTR]->offset = (unsigned short)((char *)&prec->sptr - (char *)prec);
325  prt->papFldDes[compressRecordWPTR]->size = sizeof(prec->wptr);
326  prt->papFldDes[compressRecordWPTR]->offset = (unsigned short)((char *)&prec->wptr - (char *)prec);
327  prt->papFldDes[compressRecordINPN]->size = sizeof(prec->inpn);
328  prt->papFldDes[compressRecordINPN]->offset = (unsigned short)((char *)&prec->inpn - (char *)prec);
329  prt->papFldDes[compressRecordCVB]->size = sizeof(prec->cvb);
330  prt->papFldDes[compressRecordCVB]->offset = (unsigned short)((char *)&prec->cvb - (char *)prec);
331  prt->papFldDes[compressRecordINX]->size = sizeof(prec->inx);
332  prt->papFldDes[compressRecordINX]->offset = (unsigned short)((char *)&prec->inx - (char *)prec);
333  prt->rec_size = sizeof(*prec);
334  return 0;
335 }
336 epicsExportRegistrar(compressRecordSizeOffset);
337 
338 #ifdef __cplusplus
339 }
340 #endif
341 #endif /* GEN_SIZE_OFFSET */
342 
343 #endif /* INC_compressRecord_H */
double * wptr
Working Buffer Ptr.
struct dbRecordType * rdes
Address of dbRecordType.
epicsEnum16 nsta
New Alarm Status.
epicsEnum16 alg
Compression Algorithm.
unambiguous_dset * dset
DSET address.
epicsUInt32 nsam
Number of Values.
char evnt[40]
Event Name.
DBLINK tsel
Time Stamp Link.
epicsFloat64 cvb
Compress Value Buffer.
epicsInt16 disv
Disable Value.
epicsFloat64 hopr
High Operating Range.
void * val
Value.
epicsUInt8 pact
Record active.
struct typed_rset * rset
Address of RSET.
struct scan_element * spvt
Scan Private.
LIBCOM_API void cantProceed(const char *errorMessage,...) EPICS_PRINTF_STYLE(1
Suspend this thread, the caller cannot continue or return.
epicsTimeStamp time
Time.
State string "FIFO Buffer".
ELLLIST bklnk
Backwards link tracking.
epicsEnum16 prio
Scheduling Priority.
The core data types used by epics.
double * bptr
Buffer Pointer.
epicsEnum16 acks
Alarm Ack Severity.
void * dpvt
Device Private.
Exporting IOC objects.
State string "Average".
struct processNotify * ppn
pprocessNotify
epicsUInt8 proc
Force Processing.
epicsInt16 prec
Display Precision.
Routines for code that can&#39;t continue or return after an error.
State string "LIFO Buffer".
epicsUInt32 inx
Compressed Array Inx.
State string "Circular Buffer".
DBLINK inp
Input Specification.
epicsInt16 res
Reset.
epicsMutexId mlok
Monitor lock.
Definition: devSup.h:141
EPICS time stamp, for use from C code.
Definition: epicsTime.h:34
A doubly-linked list library.
DBLINK sdis
Scanning Disable.
compressALG
Enumerated type from menu compressALG.
Declaration of compress record type.
List header type.
Definition: ellLib.h:57
ELLLIST mlis
Monitor List.
char egu[16]
Engineering Units.
epicsInt32 inpn
Number of elements in Working Buffer.
epicsEnum16 nsev
New Alarm Severity.
epicsEnum16 pini
Process at iocInit.
epicsEnum16 sevr
Alarm Severity.
epicsUInt8 rpro
Reprocess.
State string "N to 1 Low Value".
epicsUInt8 putf
dbPutField process
bufferingALG
Enumerated type from menu bufferingALG.
epicsInt16 disa
Disable.
epicsEnum16 ackt
Alarm Ack Transient.
epicsUInt32 n
N to 1 Compression.
epicsUInt32 ouse
Old Number Used.
APIs for the epicsMutex mutual exclusion semaphore.
epicsEnum16 balg
Buffering Algorithm.
epicsUInt8 bkpt
Break Point.
struct lockRecord * lset
Lock Set.
epicsEnum16 scan
Scan Mechanism.
Device support routines.
epicsEnum16 dtyp
Device Type.
epicsEnum16 stat
Alarm Status.
epicsInt16 phas
Scan Phase.
epicsUInt8 lcnt
Lock Count.
State string "N to 1 Median".
struct processNotifyRecord * ppnr
pprocessNotifyRecord
State string "N to 1 High Value".
char desc[41]
Descriptor.
epicsEnum16 diss
Disable Alarm Sevrty.
#define epicsExportRegistrar(fun)
Declare a registrar function for exporting.
Definition: epicsExport.h:94
struct asgMember * asp
Access Security Pvt.
epicsUInt8 tpro
Trace Processing.
epicsInt16 tse
Time Stamp Event.
epicsFloat64 ihil
Init High Interest Lim.
epicsUInt32 nuse
Number Used.
State string "N to 1 Average".
EPICS time-stamps (epicsTimeStamp), epicsTime C++ class and C functions for handling wall-clock times...
epicsEnum16 udfs
Undefined Alarm Sevrty.
epicsUInt8 udf
Undefined.
epicsUInt8 disp
Disable putField.
char asg[29]
Access Security Group.
epicsFloat64 ilil
Init Low Interest Lim.
char name[61]
Record Name.
double * sptr
Summing Buffer Ptr.
struct epicsMutexParm * epicsMutexId
An identifier for an epicsMutex for use with the C API.
Definition: epicsMutex.h:49
epicsUInt32 off
Offset.
epicsFloat64 lopr
Low Operating Range.
DBLINK flnk
Forward Process Link.