EPICS Base  7.0.6.1
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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  char amsg[40];
49  epicsEnum16 nsta;
50  epicsEnum16 nsev;
51  char namsg[40];
52  epicsEnum16 acks;
53  epicsEnum16 ackt;
54  epicsEnum16 diss;
55  epicsUInt8 lcnt;
56  epicsUInt8 pact;
57  epicsUInt8 putf;
58  epicsUInt8 rpro;
59  struct asgMember *asp;
60  struct processNotify *ppn;
61  struct processNotifyRecord *ppnr;
62  struct scan_element *spvt;
63  struct typed_rset *rset;
65  void *dpvt;
66  struct dbRecordType *rdes;
67  struct lockRecord *lset;
68  epicsEnum16 prio;
69  epicsUInt8 tpro;
70  epicsUInt8 bkpt;
71  epicsUInt8 udf;
72  epicsEnum16 udfs;
74  epicsUInt64 utag;
75  DBLINK flnk;
76  void * val;
77  epicsInt16 prec;
78  epicsEnum16 ftvl;
79  DBLINK inp;
80  char egu[16];
81  epicsFloat64 hopr;
82  epicsFloat64 lopr;
83  epicsUInt32 malm;
84  epicsUInt32 nelm;
85  epicsUInt32 indx;
86  epicsInt16 busy;
87  epicsInt32 nord;
88  void * bptr;
90 
91 typedef enum {
92  subArrayRecordNAME = 0,
93  subArrayRecordDESC = 1,
94  subArrayRecordASG = 2,
95  subArrayRecordSCAN = 3,
96  subArrayRecordPINI = 4,
97  subArrayRecordPHAS = 5,
98  subArrayRecordEVNT = 6,
99  subArrayRecordTSE = 7,
100  subArrayRecordTSEL = 8,
101  subArrayRecordDTYP = 9,
102  subArrayRecordDISV = 10,
103  subArrayRecordDISA = 11,
104  subArrayRecordSDIS = 12,
105  subArrayRecordMLOK = 13,
106  subArrayRecordMLIS = 14,
107  subArrayRecordBKLNK = 15,
108  subArrayRecordDISP = 16,
109  subArrayRecordPROC = 17,
110  subArrayRecordSTAT = 18,
111  subArrayRecordSEVR = 19,
112  subArrayRecordAMSG = 20,
113  subArrayRecordNSTA = 21,
114  subArrayRecordNSEV = 22,
115  subArrayRecordNAMSG = 23,
116  subArrayRecordACKS = 24,
117  subArrayRecordACKT = 25,
118  subArrayRecordDISS = 26,
119  subArrayRecordLCNT = 27,
120  subArrayRecordPACT = 28,
121  subArrayRecordPUTF = 29,
122  subArrayRecordRPRO = 30,
123  subArrayRecordASP = 31,
124  subArrayRecordPPN = 32,
125  subArrayRecordPPNR = 33,
126  subArrayRecordSPVT = 34,
127  subArrayRecordRSET = 35,
128  subArrayRecordDSET = 36,
129  subArrayRecordDPVT = 37,
130  subArrayRecordRDES = 38,
131  subArrayRecordLSET = 39,
132  subArrayRecordPRIO = 40,
133  subArrayRecordTPRO = 41,
134  subArrayRecordBKPT = 42,
135  subArrayRecordUDF = 43,
136  subArrayRecordUDFS = 44,
137  subArrayRecordTIME = 45,
138  subArrayRecordUTAG = 46,
139  subArrayRecordFLNK = 47,
140  subArrayRecordVAL = 48,
141  subArrayRecordPREC = 49,
142  subArrayRecordFTVL = 50,
143  subArrayRecordINP = 51,
144  subArrayRecordEGU = 52,
145  subArrayRecordHOPR = 53,
146  subArrayRecordLOPR = 54,
147  subArrayRecordMALM = 55,
148  subArrayRecordNELM = 56,
149  subArrayRecordINDX = 57,
150  subArrayRecordBUSY = 58,
151  subArrayRecordNORD = 59,
152  subArrayRecordBPTR = 60
153 } subArrayFieldIndex;
154 
155 #ifdef GEN_SIZE_OFFSET
156 
157 #include <epicsExport.h>
158 #include <cantProceed.h>
159 #ifdef __cplusplus
160 extern "C" {
161 #endif
162 static int subArrayRecordSizeOffset(dbRecordType *prt)
163 {
164  subArrayRecord *prec = 0;
165 
166  if (prt->no_fields != 61) {
167  cantProceed("IOC build or installation error:\n"
168  " The subArrayRecord defined in the DBD file has %d fields,\n"
169  " but the record support code was built with 61.\n",
170  prt->no_fields);
171  }
172  prt->papFldDes[subArrayRecordNAME]->size = sizeof(prec->name);
173  prt->papFldDes[subArrayRecordNAME]->offset = (unsigned short)((char *)&prec->name - (char *)prec);
174  prt->papFldDes[subArrayRecordDESC]->size = sizeof(prec->desc);
175  prt->papFldDes[subArrayRecordDESC]->offset = (unsigned short)((char *)&prec->desc - (char *)prec);
176  prt->papFldDes[subArrayRecordASG]->size = sizeof(prec->asg);
177  prt->papFldDes[subArrayRecordASG]->offset = (unsigned short)((char *)&prec->asg - (char *)prec);
178  prt->papFldDes[subArrayRecordSCAN]->size = sizeof(prec->scan);
179  prt->papFldDes[subArrayRecordSCAN]->offset = (unsigned short)((char *)&prec->scan - (char *)prec);
180  prt->papFldDes[subArrayRecordPINI]->size = sizeof(prec->pini);
181  prt->papFldDes[subArrayRecordPINI]->offset = (unsigned short)((char *)&prec->pini - (char *)prec);
182  prt->papFldDes[subArrayRecordPHAS]->size = sizeof(prec->phas);
183  prt->papFldDes[subArrayRecordPHAS]->offset = (unsigned short)((char *)&prec->phas - (char *)prec);
184  prt->papFldDes[subArrayRecordEVNT]->size = sizeof(prec->evnt);
185  prt->papFldDes[subArrayRecordEVNT]->offset = (unsigned short)((char *)&prec->evnt - (char *)prec);
186  prt->papFldDes[subArrayRecordTSE]->size = sizeof(prec->tse);
187  prt->papFldDes[subArrayRecordTSE]->offset = (unsigned short)((char *)&prec->tse - (char *)prec);
188  prt->papFldDes[subArrayRecordTSEL]->size = sizeof(prec->tsel);
189  prt->papFldDes[subArrayRecordTSEL]->offset = (unsigned short)((char *)&prec->tsel - (char *)prec);
190  prt->papFldDes[subArrayRecordDTYP]->size = sizeof(prec->dtyp);
191  prt->papFldDes[subArrayRecordDTYP]->offset = (unsigned short)((char *)&prec->dtyp - (char *)prec);
192  prt->papFldDes[subArrayRecordDISV]->size = sizeof(prec->disv);
193  prt->papFldDes[subArrayRecordDISV]->offset = (unsigned short)((char *)&prec->disv - (char *)prec);
194  prt->papFldDes[subArrayRecordDISA]->size = sizeof(prec->disa);
195  prt->papFldDes[subArrayRecordDISA]->offset = (unsigned short)((char *)&prec->disa - (char *)prec);
196  prt->papFldDes[subArrayRecordSDIS]->size = sizeof(prec->sdis);
197  prt->papFldDes[subArrayRecordSDIS]->offset = (unsigned short)((char *)&prec->sdis - (char *)prec);
198  prt->papFldDes[subArrayRecordMLOK]->size = sizeof(prec->mlok);
199  prt->papFldDes[subArrayRecordMLOK]->offset = (unsigned short)((char *)&prec->mlok - (char *)prec);
200  prt->papFldDes[subArrayRecordMLIS]->size = sizeof(prec->mlis);
201  prt->papFldDes[subArrayRecordMLIS]->offset = (unsigned short)((char *)&prec->mlis - (char *)prec);
202  prt->papFldDes[subArrayRecordBKLNK]->size = sizeof(prec->bklnk);
203  prt->papFldDes[subArrayRecordBKLNK]->offset = (unsigned short)((char *)&prec->bklnk - (char *)prec);
204  prt->papFldDes[subArrayRecordDISP]->size = sizeof(prec->disp);
205  prt->papFldDes[subArrayRecordDISP]->offset = (unsigned short)((char *)&prec->disp - (char *)prec);
206  prt->papFldDes[subArrayRecordPROC]->size = sizeof(prec->proc);
207  prt->papFldDes[subArrayRecordPROC]->offset = (unsigned short)((char *)&prec->proc - (char *)prec);
208  prt->papFldDes[subArrayRecordSTAT]->size = sizeof(prec->stat);
209  prt->papFldDes[subArrayRecordSTAT]->offset = (unsigned short)((char *)&prec->stat - (char *)prec);
210  prt->papFldDes[subArrayRecordSEVR]->size = sizeof(prec->sevr);
211  prt->papFldDes[subArrayRecordSEVR]->offset = (unsigned short)((char *)&prec->sevr - (char *)prec);
212  prt->papFldDes[subArrayRecordAMSG]->size = sizeof(prec->amsg);
213  prt->papFldDes[subArrayRecordAMSG]->offset = (unsigned short)((char *)&prec->amsg - (char *)prec);
214  prt->papFldDes[subArrayRecordNSTA]->size = sizeof(prec->nsta);
215  prt->papFldDes[subArrayRecordNSTA]->offset = (unsigned short)((char *)&prec->nsta - (char *)prec);
216  prt->papFldDes[subArrayRecordNSEV]->size = sizeof(prec->nsev);
217  prt->papFldDes[subArrayRecordNSEV]->offset = (unsigned short)((char *)&prec->nsev - (char *)prec);
218  prt->papFldDes[subArrayRecordNAMSG]->size = sizeof(prec->namsg);
219  prt->papFldDes[subArrayRecordNAMSG]->offset = (unsigned short)((char *)&prec->namsg - (char *)prec);
220  prt->papFldDes[subArrayRecordACKS]->size = sizeof(prec->acks);
221  prt->papFldDes[subArrayRecordACKS]->offset = (unsigned short)((char *)&prec->acks - (char *)prec);
222  prt->papFldDes[subArrayRecordACKT]->size = sizeof(prec->ackt);
223  prt->papFldDes[subArrayRecordACKT]->offset = (unsigned short)((char *)&prec->ackt - (char *)prec);
224  prt->papFldDes[subArrayRecordDISS]->size = sizeof(prec->diss);
225  prt->papFldDes[subArrayRecordDISS]->offset = (unsigned short)((char *)&prec->diss - (char *)prec);
226  prt->papFldDes[subArrayRecordLCNT]->size = sizeof(prec->lcnt);
227  prt->papFldDes[subArrayRecordLCNT]->offset = (unsigned short)((char *)&prec->lcnt - (char *)prec);
228  prt->papFldDes[subArrayRecordPACT]->size = sizeof(prec->pact);
229  prt->papFldDes[subArrayRecordPACT]->offset = (unsigned short)((char *)&prec->pact - (char *)prec);
230  prt->papFldDes[subArrayRecordPUTF]->size = sizeof(prec->putf);
231  prt->papFldDes[subArrayRecordPUTF]->offset = (unsigned short)((char *)&prec->putf - (char *)prec);
232  prt->papFldDes[subArrayRecordRPRO]->size = sizeof(prec->rpro);
233  prt->papFldDes[subArrayRecordRPRO]->offset = (unsigned short)((char *)&prec->rpro - (char *)prec);
234  prt->papFldDes[subArrayRecordASP]->size = sizeof(prec->asp);
235  prt->papFldDes[subArrayRecordASP]->offset = (unsigned short)((char *)&prec->asp - (char *)prec);
236  prt->papFldDes[subArrayRecordPPN]->size = sizeof(prec->ppn);
237  prt->papFldDes[subArrayRecordPPN]->offset = (unsigned short)((char *)&prec->ppn - (char *)prec);
238  prt->papFldDes[subArrayRecordPPNR]->size = sizeof(prec->ppnr);
239  prt->papFldDes[subArrayRecordPPNR]->offset = (unsigned short)((char *)&prec->ppnr - (char *)prec);
240  prt->papFldDes[subArrayRecordSPVT]->size = sizeof(prec->spvt);
241  prt->papFldDes[subArrayRecordSPVT]->offset = (unsigned short)((char *)&prec->spvt - (char *)prec);
242  prt->papFldDes[subArrayRecordRSET]->size = sizeof(prec->rset);
243  prt->papFldDes[subArrayRecordRSET]->offset = (unsigned short)((char *)&prec->rset - (char *)prec);
244  prt->papFldDes[subArrayRecordDSET]->size = sizeof(prec->dset);
245  prt->papFldDes[subArrayRecordDSET]->offset = (unsigned short)((char *)&prec->dset - (char *)prec);
246  prt->papFldDes[subArrayRecordDPVT]->size = sizeof(prec->dpvt);
247  prt->papFldDes[subArrayRecordDPVT]->offset = (unsigned short)((char *)&prec->dpvt - (char *)prec);
248  prt->papFldDes[subArrayRecordRDES]->size = sizeof(prec->rdes);
249  prt->papFldDes[subArrayRecordRDES]->offset = (unsigned short)((char *)&prec->rdes - (char *)prec);
250  prt->papFldDes[subArrayRecordLSET]->size = sizeof(prec->lset);
251  prt->papFldDes[subArrayRecordLSET]->offset = (unsigned short)((char *)&prec->lset - (char *)prec);
252  prt->papFldDes[subArrayRecordPRIO]->size = sizeof(prec->prio);
253  prt->papFldDes[subArrayRecordPRIO]->offset = (unsigned short)((char *)&prec->prio - (char *)prec);
254  prt->papFldDes[subArrayRecordTPRO]->size = sizeof(prec->tpro);
255  prt->papFldDes[subArrayRecordTPRO]->offset = (unsigned short)((char *)&prec->tpro - (char *)prec);
256  prt->papFldDes[subArrayRecordBKPT]->size = sizeof(prec->bkpt);
257  prt->papFldDes[subArrayRecordBKPT]->offset = (unsigned short)((char *)&prec->bkpt - (char *)prec);
258  prt->papFldDes[subArrayRecordUDF]->size = sizeof(prec->udf);
259  prt->papFldDes[subArrayRecordUDF]->offset = (unsigned short)((char *)&prec->udf - (char *)prec);
260  prt->papFldDes[subArrayRecordUDFS]->size = sizeof(prec->udfs);
261  prt->papFldDes[subArrayRecordUDFS]->offset = (unsigned short)((char *)&prec->udfs - (char *)prec);
262  prt->papFldDes[subArrayRecordTIME]->size = sizeof(prec->time);
263  prt->papFldDes[subArrayRecordTIME]->offset = (unsigned short)((char *)&prec->time - (char *)prec);
264  prt->papFldDes[subArrayRecordUTAG]->size = sizeof(prec->utag);
265  prt->papFldDes[subArrayRecordUTAG]->offset = (unsigned short)((char *)&prec->utag - (char *)prec);
266  prt->papFldDes[subArrayRecordFLNK]->size = sizeof(prec->flnk);
267  prt->papFldDes[subArrayRecordFLNK]->offset = (unsigned short)((char *)&prec->flnk - (char *)prec);
268  prt->papFldDes[subArrayRecordVAL]->size = sizeof(prec->val);
269  prt->papFldDes[subArrayRecordVAL]->offset = (unsigned short)((char *)&prec->val - (char *)prec);
270  prt->papFldDes[subArrayRecordPREC]->size = sizeof(prec->prec);
271  prt->papFldDes[subArrayRecordPREC]->offset = (unsigned short)((char *)&prec->prec - (char *)prec);
272  prt->papFldDes[subArrayRecordFTVL]->size = sizeof(prec->ftvl);
273  prt->papFldDes[subArrayRecordFTVL]->offset = (unsigned short)((char *)&prec->ftvl - (char *)prec);
274  prt->papFldDes[subArrayRecordINP]->size = sizeof(prec->inp);
275  prt->papFldDes[subArrayRecordINP]->offset = (unsigned short)((char *)&prec->inp - (char *)prec);
276  prt->papFldDes[subArrayRecordEGU]->size = sizeof(prec->egu);
277  prt->papFldDes[subArrayRecordEGU]->offset = (unsigned short)((char *)&prec->egu - (char *)prec);
278  prt->papFldDes[subArrayRecordHOPR]->size = sizeof(prec->hopr);
279  prt->papFldDes[subArrayRecordHOPR]->offset = (unsigned short)((char *)&prec->hopr - (char *)prec);
280  prt->papFldDes[subArrayRecordLOPR]->size = sizeof(prec->lopr);
281  prt->papFldDes[subArrayRecordLOPR]->offset = (unsigned short)((char *)&prec->lopr - (char *)prec);
282  prt->papFldDes[subArrayRecordMALM]->size = sizeof(prec->malm);
283  prt->papFldDes[subArrayRecordMALM]->offset = (unsigned short)((char *)&prec->malm - (char *)prec);
284  prt->papFldDes[subArrayRecordNELM]->size = sizeof(prec->nelm);
285  prt->papFldDes[subArrayRecordNELM]->offset = (unsigned short)((char *)&prec->nelm - (char *)prec);
286  prt->papFldDes[subArrayRecordINDX]->size = sizeof(prec->indx);
287  prt->papFldDes[subArrayRecordINDX]->offset = (unsigned short)((char *)&prec->indx - (char *)prec);
288  prt->papFldDes[subArrayRecordBUSY]->size = sizeof(prec->busy);
289  prt->papFldDes[subArrayRecordBUSY]->offset = (unsigned short)((char *)&prec->busy - (char *)prec);
290  prt->papFldDes[subArrayRecordNORD]->size = sizeof(prec->nord);
291  prt->papFldDes[subArrayRecordNORD]->offset = (unsigned short)((char *)&prec->nord - (char *)prec);
292  prt->papFldDes[subArrayRecordBPTR]->size = sizeof(prec->bptr);
293  prt->papFldDes[subArrayRecordBPTR]->offset = (unsigned short)((char *)&prec->bptr - (char *)prec);
294  prt->rec_size = sizeof(*prec);
295  return 0;
296 }
297 epicsExportRegistrar(subArrayRecordSizeOffset);
298 
299 #ifdef __cplusplus
300 }
301 #endif
302 #endif /* GEN_SIZE_OFFSET */
303 
304 #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.
char amsg[40]
Alarm Message.
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:42
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.
epicsUInt64 utag
Time Tag.
DBLINK tsel
Time Stamp Link.
Declaration of subArray record type.
epicsInt16 prec
Display Precision.
epicsUInt8 tpro
Trace Processing.
epicsUInt8 bkpt
Break Point.
char namsg[40]
New Alarm Message.
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.