EPICS Base  7.0.5.1
stringinRecord.h
Go to the documentation of this file.
1 
7 #ifndef INC_stringinRecord_H
8 #define INC_stringinRecord_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 stringinRecord;
19 typedef struct stringindset {
20  dset common; /*init_record returns: (-1,0)=>(failure,success)*/
21  long (*read_stringin)(struct stringinRecord *prec); /*returns: (-1,0)=>(failure,success)*/
22 } stringindset;
23 #define HAS_stringindset
24 
25 #include "callback.h"
26 
27 #ifndef stringinPOST_NUM_CHOICES
28 
29 typedef enum {
32 } stringinPOST;
34 #define stringinPOST_NUM_CHOICES 2
35 #endif
36 
38 typedef struct stringinRecord {
39  char name[61];
40  char desc[41];
41  char asg[29];
42  epicsEnum16 scan;
43  epicsEnum16 pini;
44  epicsInt16 phas;
45  char evnt[40];
46  epicsInt16 tse;
47  DBLINK tsel;
48  epicsEnum16 dtyp;
49  epicsInt16 disv;
50  epicsInt16 disa;
51  DBLINK sdis;
55  epicsUInt8 disp;
56  epicsUInt8 proc;
57  epicsEnum16 stat;
58  epicsEnum16 sevr;
59  epicsEnum16 nsta;
60  epicsEnum16 nsev;
61  epicsEnum16 acks;
62  epicsEnum16 ackt;
63  epicsEnum16 diss;
64  epicsUInt8 lcnt;
65  epicsUInt8 pact;
66  epicsUInt8 putf;
67  epicsUInt8 rpro;
68  struct asgMember *asp;
69  struct processNotify *ppn;
70  struct processNotifyRecord *ppnr;
71  struct scan_element *spvt;
72  struct typed_rset *rset;
74  void *dpvt;
75  struct dbRecordType *rdes;
76  struct lockRecord *lset;
77  epicsEnum16 prio;
78  epicsUInt8 tpro;
79  epicsUInt8 bkpt;
80  epicsUInt8 udf;
81  epicsEnum16 udfs;
83  DBLINK flnk;
84  char val[40];
85  char oval[40];
86  DBLINK inp;
87  epicsEnum16 mpst;
88  epicsEnum16 apst;
89  DBLINK siol;
90  char sval[40];
91  DBLINK siml;
92  epicsEnum16 simm;
93  epicsEnum16 sims;
94  epicsEnum16 oldsimm;
95  epicsEnum16 sscn;
96  epicsFloat64 sdly;
99 
100 typedef enum {
101  stringinRecordNAME = 0,
102  stringinRecordDESC = 1,
103  stringinRecordASG = 2,
104  stringinRecordSCAN = 3,
105  stringinRecordPINI = 4,
106  stringinRecordPHAS = 5,
107  stringinRecordEVNT = 6,
108  stringinRecordTSE = 7,
109  stringinRecordTSEL = 8,
110  stringinRecordDTYP = 9,
111  stringinRecordDISV = 10,
112  stringinRecordDISA = 11,
113  stringinRecordSDIS = 12,
114  stringinRecordMLOK = 13,
115  stringinRecordMLIS = 14,
116  stringinRecordBKLNK = 15,
117  stringinRecordDISP = 16,
118  stringinRecordPROC = 17,
119  stringinRecordSTAT = 18,
120  stringinRecordSEVR = 19,
121  stringinRecordNSTA = 20,
122  stringinRecordNSEV = 21,
123  stringinRecordACKS = 22,
124  stringinRecordACKT = 23,
125  stringinRecordDISS = 24,
126  stringinRecordLCNT = 25,
127  stringinRecordPACT = 26,
128  stringinRecordPUTF = 27,
129  stringinRecordRPRO = 28,
130  stringinRecordASP = 29,
131  stringinRecordPPN = 30,
132  stringinRecordPPNR = 31,
133  stringinRecordSPVT = 32,
134  stringinRecordRSET = 33,
135  stringinRecordDSET = 34,
136  stringinRecordDPVT = 35,
137  stringinRecordRDES = 36,
138  stringinRecordLSET = 37,
139  stringinRecordPRIO = 38,
140  stringinRecordTPRO = 39,
141  stringinRecordBKPT = 40,
142  stringinRecordUDF = 41,
143  stringinRecordUDFS = 42,
144  stringinRecordTIME = 43,
145  stringinRecordFLNK = 44,
146  stringinRecordVAL = 45,
147  stringinRecordOVAL = 46,
148  stringinRecordINP = 47,
149  stringinRecordMPST = 48,
150  stringinRecordAPST = 49,
151  stringinRecordSIOL = 50,
152  stringinRecordSVAL = 51,
153  stringinRecordSIML = 52,
154  stringinRecordSIMM = 53,
155  stringinRecordSIMS = 54,
156  stringinRecordOLDSIMM = 55,
157  stringinRecordSSCN = 56,
158  stringinRecordSDLY = 57,
159  stringinRecordSIMPVT = 58
160 } stringinFieldIndex;
161 
162 #ifdef GEN_SIZE_OFFSET
163 
164 #include <epicsExport.h>
165 #include <cantProceed.h>
166 #ifdef __cplusplus
167 extern "C" {
168 #endif
169 static int stringinRecordSizeOffset(dbRecordType *prt)
170 {
171  stringinRecord *prec = 0;
172 
173  if (prt->no_fields != 59) {
174  cantProceed("IOC build or installation error:\n"
175  " The stringinRecord defined in the DBD file has %d fields,\n"
176  " but the record support code was built with 59.\n",
177  prt->no_fields);
178  }
179  prt->papFldDes[stringinRecordNAME]->size = sizeof(prec->name);
180  prt->papFldDes[stringinRecordNAME]->offset = (unsigned short)((char *)&prec->name - (char *)prec);
181  prt->papFldDes[stringinRecordDESC]->size = sizeof(prec->desc);
182  prt->papFldDes[stringinRecordDESC]->offset = (unsigned short)((char *)&prec->desc - (char *)prec);
183  prt->papFldDes[stringinRecordASG]->size = sizeof(prec->asg);
184  prt->papFldDes[stringinRecordASG]->offset = (unsigned short)((char *)&prec->asg - (char *)prec);
185  prt->papFldDes[stringinRecordSCAN]->size = sizeof(prec->scan);
186  prt->papFldDes[stringinRecordSCAN]->offset = (unsigned short)((char *)&prec->scan - (char *)prec);
187  prt->papFldDes[stringinRecordPINI]->size = sizeof(prec->pini);
188  prt->papFldDes[stringinRecordPINI]->offset = (unsigned short)((char *)&prec->pini - (char *)prec);
189  prt->papFldDes[stringinRecordPHAS]->size = sizeof(prec->phas);
190  prt->papFldDes[stringinRecordPHAS]->offset = (unsigned short)((char *)&prec->phas - (char *)prec);
191  prt->papFldDes[stringinRecordEVNT]->size = sizeof(prec->evnt);
192  prt->papFldDes[stringinRecordEVNT]->offset = (unsigned short)((char *)&prec->evnt - (char *)prec);
193  prt->papFldDes[stringinRecordTSE]->size = sizeof(prec->tse);
194  prt->papFldDes[stringinRecordTSE]->offset = (unsigned short)((char *)&prec->tse - (char *)prec);
195  prt->papFldDes[stringinRecordTSEL]->size = sizeof(prec->tsel);
196  prt->papFldDes[stringinRecordTSEL]->offset = (unsigned short)((char *)&prec->tsel - (char *)prec);
197  prt->papFldDes[stringinRecordDTYP]->size = sizeof(prec->dtyp);
198  prt->papFldDes[stringinRecordDTYP]->offset = (unsigned short)((char *)&prec->dtyp - (char *)prec);
199  prt->papFldDes[stringinRecordDISV]->size = sizeof(prec->disv);
200  prt->papFldDes[stringinRecordDISV]->offset = (unsigned short)((char *)&prec->disv - (char *)prec);
201  prt->papFldDes[stringinRecordDISA]->size = sizeof(prec->disa);
202  prt->papFldDes[stringinRecordDISA]->offset = (unsigned short)((char *)&prec->disa - (char *)prec);
203  prt->papFldDes[stringinRecordSDIS]->size = sizeof(prec->sdis);
204  prt->papFldDes[stringinRecordSDIS]->offset = (unsigned short)((char *)&prec->sdis - (char *)prec);
205  prt->papFldDes[stringinRecordMLOK]->size = sizeof(prec->mlok);
206  prt->papFldDes[stringinRecordMLOK]->offset = (unsigned short)((char *)&prec->mlok - (char *)prec);
207  prt->papFldDes[stringinRecordMLIS]->size = sizeof(prec->mlis);
208  prt->papFldDes[stringinRecordMLIS]->offset = (unsigned short)((char *)&prec->mlis - (char *)prec);
209  prt->papFldDes[stringinRecordBKLNK]->size = sizeof(prec->bklnk);
210  prt->papFldDes[stringinRecordBKLNK]->offset = (unsigned short)((char *)&prec->bklnk - (char *)prec);
211  prt->papFldDes[stringinRecordDISP]->size = sizeof(prec->disp);
212  prt->papFldDes[stringinRecordDISP]->offset = (unsigned short)((char *)&prec->disp - (char *)prec);
213  prt->papFldDes[stringinRecordPROC]->size = sizeof(prec->proc);
214  prt->papFldDes[stringinRecordPROC]->offset = (unsigned short)((char *)&prec->proc - (char *)prec);
215  prt->papFldDes[stringinRecordSTAT]->size = sizeof(prec->stat);
216  prt->papFldDes[stringinRecordSTAT]->offset = (unsigned short)((char *)&prec->stat - (char *)prec);
217  prt->papFldDes[stringinRecordSEVR]->size = sizeof(prec->sevr);
218  prt->papFldDes[stringinRecordSEVR]->offset = (unsigned short)((char *)&prec->sevr - (char *)prec);
219  prt->papFldDes[stringinRecordNSTA]->size = sizeof(prec->nsta);
220  prt->papFldDes[stringinRecordNSTA]->offset = (unsigned short)((char *)&prec->nsta - (char *)prec);
221  prt->papFldDes[stringinRecordNSEV]->size = sizeof(prec->nsev);
222  prt->papFldDes[stringinRecordNSEV]->offset = (unsigned short)((char *)&prec->nsev - (char *)prec);
223  prt->papFldDes[stringinRecordACKS]->size = sizeof(prec->acks);
224  prt->papFldDes[stringinRecordACKS]->offset = (unsigned short)((char *)&prec->acks - (char *)prec);
225  prt->papFldDes[stringinRecordACKT]->size = sizeof(prec->ackt);
226  prt->papFldDes[stringinRecordACKT]->offset = (unsigned short)((char *)&prec->ackt - (char *)prec);
227  prt->papFldDes[stringinRecordDISS]->size = sizeof(prec->diss);
228  prt->papFldDes[stringinRecordDISS]->offset = (unsigned short)((char *)&prec->diss - (char *)prec);
229  prt->papFldDes[stringinRecordLCNT]->size = sizeof(prec->lcnt);
230  prt->papFldDes[stringinRecordLCNT]->offset = (unsigned short)((char *)&prec->lcnt - (char *)prec);
231  prt->papFldDes[stringinRecordPACT]->size = sizeof(prec->pact);
232  prt->papFldDes[stringinRecordPACT]->offset = (unsigned short)((char *)&prec->pact - (char *)prec);
233  prt->papFldDes[stringinRecordPUTF]->size = sizeof(prec->putf);
234  prt->papFldDes[stringinRecordPUTF]->offset = (unsigned short)((char *)&prec->putf - (char *)prec);
235  prt->papFldDes[stringinRecordRPRO]->size = sizeof(prec->rpro);
236  prt->papFldDes[stringinRecordRPRO]->offset = (unsigned short)((char *)&prec->rpro - (char *)prec);
237  prt->papFldDes[stringinRecordASP]->size = sizeof(prec->asp);
238  prt->papFldDes[stringinRecordASP]->offset = (unsigned short)((char *)&prec->asp - (char *)prec);
239  prt->papFldDes[stringinRecordPPN]->size = sizeof(prec->ppn);
240  prt->papFldDes[stringinRecordPPN]->offset = (unsigned short)((char *)&prec->ppn - (char *)prec);
241  prt->papFldDes[stringinRecordPPNR]->size = sizeof(prec->ppnr);
242  prt->papFldDes[stringinRecordPPNR]->offset = (unsigned short)((char *)&prec->ppnr - (char *)prec);
243  prt->papFldDes[stringinRecordSPVT]->size = sizeof(prec->spvt);
244  prt->papFldDes[stringinRecordSPVT]->offset = (unsigned short)((char *)&prec->spvt - (char *)prec);
245  prt->papFldDes[stringinRecordRSET]->size = sizeof(prec->rset);
246  prt->papFldDes[stringinRecordRSET]->offset = (unsigned short)((char *)&prec->rset - (char *)prec);
247  prt->papFldDes[stringinRecordDSET]->size = sizeof(prec->dset);
248  prt->papFldDes[stringinRecordDSET]->offset = (unsigned short)((char *)&prec->dset - (char *)prec);
249  prt->papFldDes[stringinRecordDPVT]->size = sizeof(prec->dpvt);
250  prt->papFldDes[stringinRecordDPVT]->offset = (unsigned short)((char *)&prec->dpvt - (char *)prec);
251  prt->papFldDes[stringinRecordRDES]->size = sizeof(prec->rdes);
252  prt->papFldDes[stringinRecordRDES]->offset = (unsigned short)((char *)&prec->rdes - (char *)prec);
253  prt->papFldDes[stringinRecordLSET]->size = sizeof(prec->lset);
254  prt->papFldDes[stringinRecordLSET]->offset = (unsigned short)((char *)&prec->lset - (char *)prec);
255  prt->papFldDes[stringinRecordPRIO]->size = sizeof(prec->prio);
256  prt->papFldDes[stringinRecordPRIO]->offset = (unsigned short)((char *)&prec->prio - (char *)prec);
257  prt->papFldDes[stringinRecordTPRO]->size = sizeof(prec->tpro);
258  prt->papFldDes[stringinRecordTPRO]->offset = (unsigned short)((char *)&prec->tpro - (char *)prec);
259  prt->papFldDes[stringinRecordBKPT]->size = sizeof(prec->bkpt);
260  prt->papFldDes[stringinRecordBKPT]->offset = (unsigned short)((char *)&prec->bkpt - (char *)prec);
261  prt->papFldDes[stringinRecordUDF]->size = sizeof(prec->udf);
262  prt->papFldDes[stringinRecordUDF]->offset = (unsigned short)((char *)&prec->udf - (char *)prec);
263  prt->papFldDes[stringinRecordUDFS]->size = sizeof(prec->udfs);
264  prt->papFldDes[stringinRecordUDFS]->offset = (unsigned short)((char *)&prec->udfs - (char *)prec);
265  prt->papFldDes[stringinRecordTIME]->size = sizeof(prec->time);
266  prt->papFldDes[stringinRecordTIME]->offset = (unsigned short)((char *)&prec->time - (char *)prec);
267  prt->papFldDes[stringinRecordFLNK]->size = sizeof(prec->flnk);
268  prt->papFldDes[stringinRecordFLNK]->offset = (unsigned short)((char *)&prec->flnk - (char *)prec);
269  prt->papFldDes[stringinRecordVAL]->size = sizeof(prec->val);
270  prt->papFldDes[stringinRecordVAL]->offset = (unsigned short)((char *)&prec->val - (char *)prec);
271  prt->papFldDes[stringinRecordOVAL]->size = sizeof(prec->oval);
272  prt->papFldDes[stringinRecordOVAL]->offset = (unsigned short)((char *)&prec->oval - (char *)prec);
273  prt->papFldDes[stringinRecordINP]->size = sizeof(prec->inp);
274  prt->papFldDes[stringinRecordINP]->offset = (unsigned short)((char *)&prec->inp - (char *)prec);
275  prt->papFldDes[stringinRecordMPST]->size = sizeof(prec->mpst);
276  prt->papFldDes[stringinRecordMPST]->offset = (unsigned short)((char *)&prec->mpst - (char *)prec);
277  prt->papFldDes[stringinRecordAPST]->size = sizeof(prec->apst);
278  prt->papFldDes[stringinRecordAPST]->offset = (unsigned short)((char *)&prec->apst - (char *)prec);
279  prt->papFldDes[stringinRecordSIOL]->size = sizeof(prec->siol);
280  prt->papFldDes[stringinRecordSIOL]->offset = (unsigned short)((char *)&prec->siol - (char *)prec);
281  prt->papFldDes[stringinRecordSVAL]->size = sizeof(prec->sval);
282  prt->papFldDes[stringinRecordSVAL]->offset = (unsigned short)((char *)&prec->sval - (char *)prec);
283  prt->papFldDes[stringinRecordSIML]->size = sizeof(prec->siml);
284  prt->papFldDes[stringinRecordSIML]->offset = (unsigned short)((char *)&prec->siml - (char *)prec);
285  prt->papFldDes[stringinRecordSIMM]->size = sizeof(prec->simm);
286  prt->papFldDes[stringinRecordSIMM]->offset = (unsigned short)((char *)&prec->simm - (char *)prec);
287  prt->papFldDes[stringinRecordSIMS]->size = sizeof(prec->sims);
288  prt->papFldDes[stringinRecordSIMS]->offset = (unsigned short)((char *)&prec->sims - (char *)prec);
289  prt->papFldDes[stringinRecordOLDSIMM]->size = sizeof(prec->oldsimm);
290  prt->papFldDes[stringinRecordOLDSIMM]->offset = (unsigned short)((char *)&prec->oldsimm - (char *)prec);
291  prt->papFldDes[stringinRecordSSCN]->size = sizeof(prec->sscn);
292  prt->papFldDes[stringinRecordSSCN]->offset = (unsigned short)((char *)&prec->sscn - (char *)prec);
293  prt->papFldDes[stringinRecordSDLY]->size = sizeof(prec->sdly);
294  prt->papFldDes[stringinRecordSDLY]->offset = (unsigned short)((char *)&prec->sdly - (char *)prec);
295  prt->papFldDes[stringinRecordSIMPVT]->size = sizeof(prec->simpvt);
296  prt->papFldDes[stringinRecordSIMPVT]->offset = (unsigned short)((char *)&prec->simpvt - (char *)prec);
297  prt->rec_size = sizeof(*prec);
298  return 0;
299 }
300 epicsExportRegistrar(stringinRecordSizeOffset);
301 
302 #ifdef __cplusplus
303 }
304 #endif
305 #endif /* GEN_SIZE_OFFSET */
306 
307 #endif /* INC_stringinRecord_H */
DBLINK sdis
Scanning Disable.
Declaration of stringin record type.
epicsInt16 disv
Disable Value.
epicsUInt8 putf
dbPutField process
epicsEnum16 udfs
Undefined Alarm Sevrty.
epicsEnum16 nsev
New Alarm Severity.
epicsEnum16 sevr
Alarm Severity.
epicsInt16 disa
Disable.
struct dbRecordType * rdes
Address of dbRecordType.
DBLINK siol
Simulation Input Link.
epicsEnum16 pini
Process at iocInit.
epicsUInt8 udf
Undefined.
char oval[40]
Previous Value.
DBLINK tsel
Time Stamp Link.
LIBCOM_API void cantProceed(const char *errorMessage,...) EPICS_PRINTF_STYLE(1
Suspend this thread, the caller cannot continue or return.
epicsEnum16 dtyp
Device Type.
epicsCallback * simpvt
Sim. Mode Private.
The core data types used by epics.
struct typed_rset * rset
Address of RSET.
struct processNotify * ppn
pprocessNotify
State string "Always".
epicsUInt8 proc
Force Processing.
Exporting IOC objects.
epicsEnum16 scan
Scan Mechanism.
epicsEnum16 mpst
Post Value Monitors.
char sval[40]
Simulation Value.
epicsEnum16 sscn
Sim. Mode Scan.
Routines for code that can&#39;t continue or return after an error.
char evnt[40]
Event Name.
DBLINK inp
Input Specification.
epicsUInt8 tpro
Trace Processing.
char desc[41]
Descriptor.
epicsUInt8 pact
Record active.
epicsFloat64 sdly
Sim. Mode Async Delay.
epicsUInt8 rpro
Reprocess.
ELLLIST bklnk
Backwards link tracking.
State string "On Change".
Definition: devSup.h:141
epicsEnum16 diss
Disable Alarm Sevrty.
epicsUInt8 lcnt
Lock Count.
EPICS time stamp, for use from C code.
Definition: epicsTime.h:34
A doubly-linked list library.
struct asgMember * asp
Access Security Pvt.
epicsEnum16 sims
Simulation Mode Severity.
List header type.
Definition: ellLib.h:57
struct lockRecord * lset
Lock Set.
char name[61]
Record Name.
epicsEnum16 oldsimm
Prev. Simulation Mode.
epicsEnum16 prio
Scheduling Priority.
ELLLIST mlis
Monitor List.
stringinPOST
Enumerated type from menu stringinPOST.
char asg[29]
Access Security Group.
APIs for the epicsMutex mutual exclusion semaphore.
Device support routines.
epicsEnum16 stat
Alarm Status.
struct scan_element * spvt
Scan Private.
epicsEnum16 acks
Alarm Ack Severity.
epicsEnum16 ackt
Alarm Ack Transient.
epicsTimeStamp time
Time.
epicsUInt8 disp
Disable putField.
epicsEnum16 nsta
New Alarm Status.
#define epicsExportRegistrar(fun)
Declare a registrar function for exporting.
Definition: epicsExport.h:94
unambiguous_dset * dset
DSET address.
DBLINK siml
Simulation Mode Link.
epicsMutexId mlok
Monitor lock.
struct processNotifyRecord * ppnr
pprocessNotifyRecord
DBLINK flnk
Forward Process Link.
void * dpvt
Device Private.
EPICS time-stamps (epicsTimeStamp), epicsTime C++ class and C functions for handling wall-clock times...
char val[40]
Current Value.
epicsInt16 phas
Scan Phase.
epicsUInt8 bkpt
Break Point.
epicsInt16 tse
Time Stamp Event.
struct epicsMutexParm * epicsMutexId
An identifier for an epicsMutex for use with the C API.
Definition: epicsMutex.h:49
epicsEnum16 simm
Simulation Mode.
epicsEnum16 apst
Post Archive Monitors.