EPICS Base  7.0.5.1
subArrayRecord.h
Go to the documentation of this file.
1 
7 #ifndef INC_subArrayRecord_H
8 #define INC_subArrayRecord_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 /* Declare Device Support Entry Table */
18 struct subArrayRecord;
19 typedef struct sadset {
20  dset common; /*init_record returns: (-1,0)=>(failure,success)*/
21  long (*read_sa)(struct subArrayRecord *prec); /*returns: (-1,0)=>(failure,success)*/
22 } sadset;
23 #define HAS_sadset
24 
25 
27 typedef struct subArrayRecord {
28  char name[61];
29  char desc[41];
30  char asg[29];
31  epicsEnum16 scan;
32  epicsEnum16 pini;
33  epicsInt16 phas;
34  char evnt[40];
35  epicsInt16 tse;
36  DBLINK tsel;
37  epicsEnum16 dtyp;
38  epicsInt16 disv;
39  epicsInt16 disa;
40  DBLINK sdis;
44  epicsUInt8 disp;
45  epicsUInt8 proc;
46  epicsEnum16 stat;
47  epicsEnum16 sevr;
48  epicsEnum16 nsta;
49  epicsEnum16 nsev;
50  epicsEnum16 acks;
51  epicsEnum16 ackt;
52  epicsEnum16 diss;
53  epicsUInt8 lcnt;
54  epicsUInt8 pact;
55  epicsUInt8 putf;
56  epicsUInt8 rpro;
57  struct asgMember *asp;
58  struct processNotify *ppn;
59  struct processNotifyRecord *ppnr;
60  struct scan_element *spvt;
61  struct typed_rset *rset;
63  void *dpvt;
64  struct dbRecordType *rdes;
65  struct lockRecord *lset;
66  epicsEnum16 prio;
67  epicsUInt8 tpro;
68  epicsUInt8 bkpt;
69  epicsUInt8 udf;
70  epicsEnum16 udfs;
72  DBLINK flnk;
73  void * val;
74  epicsInt16 prec;
75  epicsEnum16 ftvl;
76  DBLINK inp;
77  char egu[16];
78  epicsFloat64 hopr;
79  epicsFloat64 lopr;
80  epicsUInt32 malm;
81  epicsUInt32 nelm;
82  epicsUInt32 indx;
83  epicsInt16 busy;
84  epicsInt32 nord;
85  void * bptr;
87 
88 typedef enum {
89  subArrayRecordNAME = 0,
90  subArrayRecordDESC = 1,
91  subArrayRecordASG = 2,
92  subArrayRecordSCAN = 3,
93  subArrayRecordPINI = 4,
94  subArrayRecordPHAS = 5,
95  subArrayRecordEVNT = 6,
96  subArrayRecordTSE = 7,
97  subArrayRecordTSEL = 8,
98  subArrayRecordDTYP = 9,
99  subArrayRecordDISV = 10,
100  subArrayRecordDISA = 11,
101  subArrayRecordSDIS = 12,
102  subArrayRecordMLOK = 13,
103  subArrayRecordMLIS = 14,
104  subArrayRecordBKLNK = 15,
105  subArrayRecordDISP = 16,
106  subArrayRecordPROC = 17,
107  subArrayRecordSTAT = 18,
108  subArrayRecordSEVR = 19,
109  subArrayRecordNSTA = 20,
110  subArrayRecordNSEV = 21,
111  subArrayRecordACKS = 22,
112  subArrayRecordACKT = 23,
113  subArrayRecordDISS = 24,
114  subArrayRecordLCNT = 25,
115  subArrayRecordPACT = 26,
116  subArrayRecordPUTF = 27,
117  subArrayRecordRPRO = 28,
118  subArrayRecordASP = 29,
119  subArrayRecordPPN = 30,
120  subArrayRecordPPNR = 31,
121  subArrayRecordSPVT = 32,
122  subArrayRecordRSET = 33,
123  subArrayRecordDSET = 34,
124  subArrayRecordDPVT = 35,
125  subArrayRecordRDES = 36,
126  subArrayRecordLSET = 37,
127  subArrayRecordPRIO = 38,
128  subArrayRecordTPRO = 39,
129  subArrayRecordBKPT = 40,
130  subArrayRecordUDF = 41,
131  subArrayRecordUDFS = 42,
132  subArrayRecordTIME = 43,
133  subArrayRecordFLNK = 44,
134  subArrayRecordVAL = 45,
135  subArrayRecordPREC = 46,
136  subArrayRecordFTVL = 47,
137  subArrayRecordINP = 48,
138  subArrayRecordEGU = 49,
139  subArrayRecordHOPR = 50,
140  subArrayRecordLOPR = 51,
141  subArrayRecordMALM = 52,
142  subArrayRecordNELM = 53,
143  subArrayRecordINDX = 54,
144  subArrayRecordBUSY = 55,
145  subArrayRecordNORD = 56,
146  subArrayRecordBPTR = 57
147 } subArrayFieldIndex;
148 
149 #ifdef GEN_SIZE_OFFSET
150 
151 #include <epicsExport.h>
152 #include <cantProceed.h>
153 #ifdef __cplusplus
154 extern "C" {
155 #endif
156 static int subArrayRecordSizeOffset(dbRecordType *prt)
157 {
158  subArrayRecord *prec = 0;
159 
160  if (prt->no_fields != 58) {
161  cantProceed("IOC build or installation error:\n"
162  " The subArrayRecord defined in the DBD file has %d fields,\n"
163  " but the record support code was built with 58.\n",
164  prt->no_fields);
165  }
166  prt->papFldDes[subArrayRecordNAME]->size = sizeof(prec->name);
167  prt->papFldDes[subArrayRecordNAME]->offset = (unsigned short)((char *)&prec->name - (char *)prec);
168  prt->papFldDes[subArrayRecordDESC]->size = sizeof(prec->desc);
169  prt->papFldDes[subArrayRecordDESC]->offset = (unsigned short)((char *)&prec->desc - (char *)prec);
170  prt->papFldDes[subArrayRecordASG]->size = sizeof(prec->asg);
171  prt->papFldDes[subArrayRecordASG]->offset = (unsigned short)((char *)&prec->asg - (char *)prec);
172  prt->papFldDes[subArrayRecordSCAN]->size = sizeof(prec->scan);
173  prt->papFldDes[subArrayRecordSCAN]->offset = (unsigned short)((char *)&prec->scan - (char *)prec);
174  prt->papFldDes[subArrayRecordPINI]->size = sizeof(prec->pini);
175  prt->papFldDes[subArrayRecordPINI]->offset = (unsigned short)((char *)&prec->pini - (char *)prec);
176  prt->papFldDes[subArrayRecordPHAS]->size = sizeof(prec->phas);
177  prt->papFldDes[subArrayRecordPHAS]->offset = (unsigned short)((char *)&prec->phas - (char *)prec);
178  prt->papFldDes[subArrayRecordEVNT]->size = sizeof(prec->evnt);
179  prt->papFldDes[subArrayRecordEVNT]->offset = (unsigned short)((char *)&prec->evnt - (char *)prec);
180  prt->papFldDes[subArrayRecordTSE]->size = sizeof(prec->tse);
181  prt->papFldDes[subArrayRecordTSE]->offset = (unsigned short)((char *)&prec->tse - (char *)prec);
182  prt->papFldDes[subArrayRecordTSEL]->size = sizeof(prec->tsel);
183  prt->papFldDes[subArrayRecordTSEL]->offset = (unsigned short)((char *)&prec->tsel - (char *)prec);
184  prt->papFldDes[subArrayRecordDTYP]->size = sizeof(prec->dtyp);
185  prt->papFldDes[subArrayRecordDTYP]->offset = (unsigned short)((char *)&prec->dtyp - (char *)prec);
186  prt->papFldDes[subArrayRecordDISV]->size = sizeof(prec->disv);
187  prt->papFldDes[subArrayRecordDISV]->offset = (unsigned short)((char *)&prec->disv - (char *)prec);
188  prt->papFldDes[subArrayRecordDISA]->size = sizeof(prec->disa);
189  prt->papFldDes[subArrayRecordDISA]->offset = (unsigned short)((char *)&prec->disa - (char *)prec);
190  prt->papFldDes[subArrayRecordSDIS]->size = sizeof(prec->sdis);
191  prt->papFldDes[subArrayRecordSDIS]->offset = (unsigned short)((char *)&prec->sdis - (char *)prec);
192  prt->papFldDes[subArrayRecordMLOK]->size = sizeof(prec->mlok);
193  prt->papFldDes[subArrayRecordMLOK]->offset = (unsigned short)((char *)&prec->mlok - (char *)prec);
194  prt->papFldDes[subArrayRecordMLIS]->size = sizeof(prec->mlis);
195  prt->papFldDes[subArrayRecordMLIS]->offset = (unsigned short)((char *)&prec->mlis - (char *)prec);
196  prt->papFldDes[subArrayRecordBKLNK]->size = sizeof(prec->bklnk);
197  prt->papFldDes[subArrayRecordBKLNK]->offset = (unsigned short)((char *)&prec->bklnk - (char *)prec);
198  prt->papFldDes[subArrayRecordDISP]->size = sizeof(prec->disp);
199  prt->papFldDes[subArrayRecordDISP]->offset = (unsigned short)((char *)&prec->disp - (char *)prec);
200  prt->papFldDes[subArrayRecordPROC]->size = sizeof(prec->proc);
201  prt->papFldDes[subArrayRecordPROC]->offset = (unsigned short)((char *)&prec->proc - (char *)prec);
202  prt->papFldDes[subArrayRecordSTAT]->size = sizeof(prec->stat);
203  prt->papFldDes[subArrayRecordSTAT]->offset = (unsigned short)((char *)&prec->stat - (char *)prec);
204  prt->papFldDes[subArrayRecordSEVR]->size = sizeof(prec->sevr);
205  prt->papFldDes[subArrayRecordSEVR]->offset = (unsigned short)((char *)&prec->sevr - (char *)prec);
206  prt->papFldDes[subArrayRecordNSTA]->size = sizeof(prec->nsta);
207  prt->papFldDes[subArrayRecordNSTA]->offset = (unsigned short)((char *)&prec->nsta - (char *)prec);
208  prt->papFldDes[subArrayRecordNSEV]->size = sizeof(prec->nsev);
209  prt->papFldDes[subArrayRecordNSEV]->offset = (unsigned short)((char *)&prec->nsev - (char *)prec);
210  prt->papFldDes[subArrayRecordACKS]->size = sizeof(prec->acks);
211  prt->papFldDes[subArrayRecordACKS]->offset = (unsigned short)((char *)&prec->acks - (char *)prec);
212  prt->papFldDes[subArrayRecordACKT]->size = sizeof(prec->ackt);
213  prt->papFldDes[subArrayRecordACKT]->offset = (unsigned short)((char *)&prec->ackt - (char *)prec);
214  prt->papFldDes[subArrayRecordDISS]->size = sizeof(prec->diss);
215  prt->papFldDes[subArrayRecordDISS]->offset = (unsigned short)((char *)&prec->diss - (char *)prec);
216  prt->papFldDes[subArrayRecordLCNT]->size = sizeof(prec->lcnt);
217  prt->papFldDes[subArrayRecordLCNT]->offset = (unsigned short)((char *)&prec->lcnt - (char *)prec);
218  prt->papFldDes[subArrayRecordPACT]->size = sizeof(prec->pact);
219  prt->papFldDes[subArrayRecordPACT]->offset = (unsigned short)((char *)&prec->pact - (char *)prec);
220  prt->papFldDes[subArrayRecordPUTF]->size = sizeof(prec->putf);
221  prt->papFldDes[subArrayRecordPUTF]->offset = (unsigned short)((char *)&prec->putf - (char *)prec);
222  prt->papFldDes[subArrayRecordRPRO]->size = sizeof(prec->rpro);
223  prt->papFldDes[subArrayRecordRPRO]->offset = (unsigned short)((char *)&prec->rpro - (char *)prec);
224  prt->papFldDes[subArrayRecordASP]->size = sizeof(prec->asp);
225  prt->papFldDes[subArrayRecordASP]->offset = (unsigned short)((char *)&prec->asp - (char *)prec);
226  prt->papFldDes[subArrayRecordPPN]->size = sizeof(prec->ppn);
227  prt->papFldDes[subArrayRecordPPN]->offset = (unsigned short)((char *)&prec->ppn - (char *)prec);
228  prt->papFldDes[subArrayRecordPPNR]->size = sizeof(prec->ppnr);
229  prt->papFldDes[subArrayRecordPPNR]->offset = (unsigned short)((char *)&prec->ppnr - (char *)prec);
230  prt->papFldDes[subArrayRecordSPVT]->size = sizeof(prec->spvt);
231  prt->papFldDes[subArrayRecordSPVT]->offset = (unsigned short)((char *)&prec->spvt - (char *)prec);
232  prt->papFldDes[subArrayRecordRSET]->size = sizeof(prec->rset);
233  prt->papFldDes[subArrayRecordRSET]->offset = (unsigned short)((char *)&prec->rset - (char *)prec);
234  prt->papFldDes[subArrayRecordDSET]->size = sizeof(prec->dset);
235  prt->papFldDes[subArrayRecordDSET]->offset = (unsigned short)((char *)&prec->dset - (char *)prec);
236  prt->papFldDes[subArrayRecordDPVT]->size = sizeof(prec->dpvt);
237  prt->papFldDes[subArrayRecordDPVT]->offset = (unsigned short)((char *)&prec->dpvt - (char *)prec);
238  prt->papFldDes[subArrayRecordRDES]->size = sizeof(prec->rdes);
239  prt->papFldDes[subArrayRecordRDES]->offset = (unsigned short)((char *)&prec->rdes - (char *)prec);
240  prt->papFldDes[subArrayRecordLSET]->size = sizeof(prec->lset);
241  prt->papFldDes[subArrayRecordLSET]->offset = (unsigned short)((char *)&prec->lset - (char *)prec);
242  prt->papFldDes[subArrayRecordPRIO]->size = sizeof(prec->prio);
243  prt->papFldDes[subArrayRecordPRIO]->offset = (unsigned short)((char *)&prec->prio - (char *)prec);
244  prt->papFldDes[subArrayRecordTPRO]->size = sizeof(prec->tpro);
245  prt->papFldDes[subArrayRecordTPRO]->offset = (unsigned short)((char *)&prec->tpro - (char *)prec);
246  prt->papFldDes[subArrayRecordBKPT]->size = sizeof(prec->bkpt);
247  prt->papFldDes[subArrayRecordBKPT]->offset = (unsigned short)((char *)&prec->bkpt - (char *)prec);
248  prt->papFldDes[subArrayRecordUDF]->size = sizeof(prec->udf);
249  prt->papFldDes[subArrayRecordUDF]->offset = (unsigned short)((char *)&prec->udf - (char *)prec);
250  prt->papFldDes[subArrayRecordUDFS]->size = sizeof(prec->udfs);
251  prt->papFldDes[subArrayRecordUDFS]->offset = (unsigned short)((char *)&prec->udfs - (char *)prec);
252  prt->papFldDes[subArrayRecordTIME]->size = sizeof(prec->time);
253  prt->papFldDes[subArrayRecordTIME]->offset = (unsigned short)((char *)&prec->time - (char *)prec);
254  prt->papFldDes[subArrayRecordFLNK]->size = sizeof(prec->flnk);
255  prt->papFldDes[subArrayRecordFLNK]->offset = (unsigned short)((char *)&prec->flnk - (char *)prec);
256  prt->papFldDes[subArrayRecordVAL]->size = sizeof(prec->val);
257  prt->papFldDes[subArrayRecordVAL]->offset = (unsigned short)((char *)&prec->val - (char *)prec);
258  prt->papFldDes[subArrayRecordPREC]->size = sizeof(prec->prec);
259  prt->papFldDes[subArrayRecordPREC]->offset = (unsigned short)((char *)&prec->prec - (char *)prec);
260  prt->papFldDes[subArrayRecordFTVL]->size = sizeof(prec->ftvl);
261  prt->papFldDes[subArrayRecordFTVL]->offset = (unsigned short)((char *)&prec->ftvl - (char *)prec);
262  prt->papFldDes[subArrayRecordINP]->size = sizeof(prec->inp);
263  prt->papFldDes[subArrayRecordINP]->offset = (unsigned short)((char *)&prec->inp - (char *)prec);
264  prt->papFldDes[subArrayRecordEGU]->size = sizeof(prec->egu);
265  prt->papFldDes[subArrayRecordEGU]->offset = (unsigned short)((char *)&prec->egu - (char *)prec);
266  prt->papFldDes[subArrayRecordHOPR]->size = sizeof(prec->hopr);
267  prt->papFldDes[subArrayRecordHOPR]->offset = (unsigned short)((char *)&prec->hopr - (char *)prec);
268  prt->papFldDes[subArrayRecordLOPR]->size = sizeof(prec->lopr);
269  prt->papFldDes[subArrayRecordLOPR]->offset = (unsigned short)((char *)&prec->lopr - (char *)prec);
270  prt->papFldDes[subArrayRecordMALM]->size = sizeof(prec->malm);
271  prt->papFldDes[subArrayRecordMALM]->offset = (unsigned short)((char *)&prec->malm - (char *)prec);
272  prt->papFldDes[subArrayRecordNELM]->size = sizeof(prec->nelm);
273  prt->papFldDes[subArrayRecordNELM]->offset = (unsigned short)((char *)&prec->nelm - (char *)prec);
274  prt->papFldDes[subArrayRecordINDX]->size = sizeof(prec->indx);
275  prt->papFldDes[subArrayRecordINDX]->offset = (unsigned short)((char *)&prec->indx - (char *)prec);
276  prt->papFldDes[subArrayRecordBUSY]->size = sizeof(prec->busy);
277  prt->papFldDes[subArrayRecordBUSY]->offset = (unsigned short)((char *)&prec->busy - (char *)prec);
278  prt->papFldDes[subArrayRecordNORD]->size = sizeof(prec->nord);
279  prt->papFldDes[subArrayRecordNORD]->offset = (unsigned short)((char *)&prec->nord - (char *)prec);
280  prt->papFldDes[subArrayRecordBPTR]->size = sizeof(prec->bptr);
281  prt->papFldDes[subArrayRecordBPTR]->offset = (unsigned short)((char *)&prec->bptr - (char *)prec);
282  prt->rec_size = sizeof(*prec);
283  return 0;
284 }
285 epicsExportRegistrar(subArrayRecordSizeOffset);
286 
287 #ifdef __cplusplus
288 }
289 #endif
290 #endif /* GEN_SIZE_OFFSET */
291 
292 #endif /* INC_subArrayRecord_H */
epicsUInt32 malm
Maximum Elements.
struct scan_element * spvt
Scan Private.
epicsUInt8 putf
dbPutField process
struct typed_rset * rset
Address of RSET.
epicsEnum16 nsta
New Alarm Status.
unambiguous_dset * dset
DSET address.
epicsFloat64 lopr
Low Operating Range.
epicsEnum16 nsev
New Alarm Severity.
LIBCOM_API void cantProceed(const char *errorMessage,...) EPICS_PRINTF_STYLE(1
Suspend this thread, the caller cannot continue or return.
epicsEnum16 sevr
Alarm Severity.
The core data types used by epics.
epicsInt16 phas
Scan Phase.
char egu[16]
Engineering Units.
Exporting IOC objects.
char asg[29]
Access Security Group.
epicsEnum16 stat
Alarm Status.
epicsUInt8 disp
Disable putField.
epicsInt16 disv
Disable Value.
DBLINK flnk
Forward Process Link.
Routines for code that can&#39;t continue or return after an error.
epicsMutexId mlok
Monitor lock.
char evnt[40]
Event Name.
void * val
Value.
epicsInt16 disa
Disable.
epicsUInt8 proc
Force Processing.
epicsEnum16 ackt
Alarm Ack Transient.
Definition: devSup.h:141
epicsEnum16 ftvl
Field Type of Value.
EPICS time stamp, for use from C code.
Definition: epicsTime.h:34
epicsEnum16 scan
Scan Mechanism.
A doubly-linked list library.
List header type.
Definition: ellLib.h:57
epicsInt16 tse
Time Stamp Event.
epicsEnum16 dtyp
Device Type.
epicsUInt8 udf
Undefined.
epicsUInt32 indx
Substring Index.
epicsEnum16 acks
Alarm Ack Severity.
ELLLIST bklnk
Backwards link tracking.
epicsUInt32 nelm
Number of Elements.
epicsUInt8 pact
Record active.
struct processNotifyRecord * ppnr
pprocessNotifyRecord
APIs for the epicsMutex mutual exclusion semaphore.
epicsFloat64 hopr
High Operating Range.
Device support routines.
char name[61]
Record Name.
epicsEnum16 prio
Scheduling Priority.
epicsUInt8 rpro
Reprocess.
DBLINK sdis
Scanning Disable.
#define epicsExportRegistrar(fun)
Declare a registrar function for exporting.
Definition: epicsExport.h:94
void * dpvt
Device Private.
struct dbRecordType * rdes
Address of dbRecordType.
struct asgMember * asp
Access Security Pvt.
epicsEnum16 udfs
Undefined Alarm Sevrty.
epicsUInt8 lcnt
Lock Count.
epicsTimeStamp time
Time.
epicsInt16 busy
Busy Indicator.
EPICS time-stamps (epicsTimeStamp), epicsTime C++ class and C functions for handling wall-clock times...
struct lockRecord * lset
Lock Set.
struct processNotify * ppn
pprocessNotify
char desc[41]
Descriptor.
epicsEnum16 pini
Process at iocInit.
epicsInt32 nord
Number elements read.
epicsEnum16 diss
Disable Alarm Sevrty.
DBLINK tsel
Time Stamp Link.
Declaration of subArray record type.
epicsInt16 prec
Display Precision.
epicsUInt8 tpro
Trace Processing.
epicsUInt8 bkpt
Break Point.
struct epicsMutexParm * epicsMutexId
An identifier for an epicsMutex for use with the C API.
Definition: epicsMutex.h:49
ELLLIST mlis
Monitor List.
void * bptr
Buffer Pointer.
DBLINK inp
Input Specification.