EPICS Base  7.0.5.1
stringoutRecord.h
Go to the documentation of this file.
1 
7 #ifndef INC_stringoutRecord_H
8 #define INC_stringoutRecord_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 stringoutRecord;
19 typedef struct stringoutdset {
20  dset common; /*init_record returns: (-1,0)=>(failure,success)*/
21  long (*write_stringout)(struct stringoutRecord *prec); /*(-1,0)=>(failure,success)*/
23 #define HAS_stringoutdset
24 
25 #include "callback.h"
26 
27 #ifndef stringoutPOST_NUM_CHOICES
28 
29 typedef enum {
34 #define stringoutPOST_NUM_CHOICES 2
35 #endif
36 
38 typedef struct stringoutRecord {
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 dol;
87  epicsEnum16 omsl;
88  DBLINK out;
89  epicsEnum16 mpst;
90  epicsEnum16 apst;
91  DBLINK siol;
92  DBLINK siml;
93  epicsEnum16 simm;
94  epicsEnum16 sims;
95  epicsEnum16 oldsimm;
96  epicsEnum16 sscn;
97  epicsFloat64 sdly;
99  epicsEnum16 ivoa;
100  char ivov[40];
102 
103 typedef enum {
104  stringoutRecordNAME = 0,
105  stringoutRecordDESC = 1,
106  stringoutRecordASG = 2,
107  stringoutRecordSCAN = 3,
108  stringoutRecordPINI = 4,
109  stringoutRecordPHAS = 5,
110  stringoutRecordEVNT = 6,
111  stringoutRecordTSE = 7,
112  stringoutRecordTSEL = 8,
113  stringoutRecordDTYP = 9,
114  stringoutRecordDISV = 10,
115  stringoutRecordDISA = 11,
116  stringoutRecordSDIS = 12,
117  stringoutRecordMLOK = 13,
118  stringoutRecordMLIS = 14,
119  stringoutRecordBKLNK = 15,
120  stringoutRecordDISP = 16,
121  stringoutRecordPROC = 17,
122  stringoutRecordSTAT = 18,
123  stringoutRecordSEVR = 19,
124  stringoutRecordNSTA = 20,
125  stringoutRecordNSEV = 21,
126  stringoutRecordACKS = 22,
127  stringoutRecordACKT = 23,
128  stringoutRecordDISS = 24,
129  stringoutRecordLCNT = 25,
130  stringoutRecordPACT = 26,
131  stringoutRecordPUTF = 27,
132  stringoutRecordRPRO = 28,
133  stringoutRecordASP = 29,
134  stringoutRecordPPN = 30,
135  stringoutRecordPPNR = 31,
136  stringoutRecordSPVT = 32,
137  stringoutRecordRSET = 33,
138  stringoutRecordDSET = 34,
139  stringoutRecordDPVT = 35,
140  stringoutRecordRDES = 36,
141  stringoutRecordLSET = 37,
142  stringoutRecordPRIO = 38,
143  stringoutRecordTPRO = 39,
144  stringoutRecordBKPT = 40,
145  stringoutRecordUDF = 41,
146  stringoutRecordUDFS = 42,
147  stringoutRecordTIME = 43,
148  stringoutRecordFLNK = 44,
149  stringoutRecordVAL = 45,
150  stringoutRecordOVAL = 46,
151  stringoutRecordDOL = 47,
152  stringoutRecordOMSL = 48,
153  stringoutRecordOUT = 49,
154  stringoutRecordMPST = 50,
155  stringoutRecordAPST = 51,
156  stringoutRecordSIOL = 52,
157  stringoutRecordSIML = 53,
158  stringoutRecordSIMM = 54,
159  stringoutRecordSIMS = 55,
160  stringoutRecordOLDSIMM = 56,
161  stringoutRecordSSCN = 57,
162  stringoutRecordSDLY = 58,
163  stringoutRecordSIMPVT = 59,
164  stringoutRecordIVOA = 60,
165  stringoutRecordIVOV = 61
166 } stringoutFieldIndex;
167 
168 #ifdef GEN_SIZE_OFFSET
169 
170 #include <epicsExport.h>
171 #include <cantProceed.h>
172 #ifdef __cplusplus
173 extern "C" {
174 #endif
175 static int stringoutRecordSizeOffset(dbRecordType *prt)
176 {
177  stringoutRecord *prec = 0;
178 
179  if (prt->no_fields != 62) {
180  cantProceed("IOC build or installation error:\n"
181  " The stringoutRecord defined in the DBD file has %d fields,\n"
182  " but the record support code was built with 62.\n",
183  prt->no_fields);
184  }
185  prt->papFldDes[stringoutRecordNAME]->size = sizeof(prec->name);
186  prt->papFldDes[stringoutRecordNAME]->offset = (unsigned short)((char *)&prec->name - (char *)prec);
187  prt->papFldDes[stringoutRecordDESC]->size = sizeof(prec->desc);
188  prt->papFldDes[stringoutRecordDESC]->offset = (unsigned short)((char *)&prec->desc - (char *)prec);
189  prt->papFldDes[stringoutRecordASG]->size = sizeof(prec->asg);
190  prt->papFldDes[stringoutRecordASG]->offset = (unsigned short)((char *)&prec->asg - (char *)prec);
191  prt->papFldDes[stringoutRecordSCAN]->size = sizeof(prec->scan);
192  prt->papFldDes[stringoutRecordSCAN]->offset = (unsigned short)((char *)&prec->scan - (char *)prec);
193  prt->papFldDes[stringoutRecordPINI]->size = sizeof(prec->pini);
194  prt->papFldDes[stringoutRecordPINI]->offset = (unsigned short)((char *)&prec->pini - (char *)prec);
195  prt->papFldDes[stringoutRecordPHAS]->size = sizeof(prec->phas);
196  prt->papFldDes[stringoutRecordPHAS]->offset = (unsigned short)((char *)&prec->phas - (char *)prec);
197  prt->papFldDes[stringoutRecordEVNT]->size = sizeof(prec->evnt);
198  prt->papFldDes[stringoutRecordEVNT]->offset = (unsigned short)((char *)&prec->evnt - (char *)prec);
199  prt->papFldDes[stringoutRecordTSE]->size = sizeof(prec->tse);
200  prt->papFldDes[stringoutRecordTSE]->offset = (unsigned short)((char *)&prec->tse - (char *)prec);
201  prt->papFldDes[stringoutRecordTSEL]->size = sizeof(prec->tsel);
202  prt->papFldDes[stringoutRecordTSEL]->offset = (unsigned short)((char *)&prec->tsel - (char *)prec);
203  prt->papFldDes[stringoutRecordDTYP]->size = sizeof(prec->dtyp);
204  prt->papFldDes[stringoutRecordDTYP]->offset = (unsigned short)((char *)&prec->dtyp - (char *)prec);
205  prt->papFldDes[stringoutRecordDISV]->size = sizeof(prec->disv);
206  prt->papFldDes[stringoutRecordDISV]->offset = (unsigned short)((char *)&prec->disv - (char *)prec);
207  prt->papFldDes[stringoutRecordDISA]->size = sizeof(prec->disa);
208  prt->papFldDes[stringoutRecordDISA]->offset = (unsigned short)((char *)&prec->disa - (char *)prec);
209  prt->papFldDes[stringoutRecordSDIS]->size = sizeof(prec->sdis);
210  prt->papFldDes[stringoutRecordSDIS]->offset = (unsigned short)((char *)&prec->sdis - (char *)prec);
211  prt->papFldDes[stringoutRecordMLOK]->size = sizeof(prec->mlok);
212  prt->papFldDes[stringoutRecordMLOK]->offset = (unsigned short)((char *)&prec->mlok - (char *)prec);
213  prt->papFldDes[stringoutRecordMLIS]->size = sizeof(prec->mlis);
214  prt->papFldDes[stringoutRecordMLIS]->offset = (unsigned short)((char *)&prec->mlis - (char *)prec);
215  prt->papFldDes[stringoutRecordBKLNK]->size = sizeof(prec->bklnk);
216  prt->papFldDes[stringoutRecordBKLNK]->offset = (unsigned short)((char *)&prec->bklnk - (char *)prec);
217  prt->papFldDes[stringoutRecordDISP]->size = sizeof(prec->disp);
218  prt->papFldDes[stringoutRecordDISP]->offset = (unsigned short)((char *)&prec->disp - (char *)prec);
219  prt->papFldDes[stringoutRecordPROC]->size = sizeof(prec->proc);
220  prt->papFldDes[stringoutRecordPROC]->offset = (unsigned short)((char *)&prec->proc - (char *)prec);
221  prt->papFldDes[stringoutRecordSTAT]->size = sizeof(prec->stat);
222  prt->papFldDes[stringoutRecordSTAT]->offset = (unsigned short)((char *)&prec->stat - (char *)prec);
223  prt->papFldDes[stringoutRecordSEVR]->size = sizeof(prec->sevr);
224  prt->papFldDes[stringoutRecordSEVR]->offset = (unsigned short)((char *)&prec->sevr - (char *)prec);
225  prt->papFldDes[stringoutRecordNSTA]->size = sizeof(prec->nsta);
226  prt->papFldDes[stringoutRecordNSTA]->offset = (unsigned short)((char *)&prec->nsta - (char *)prec);
227  prt->papFldDes[stringoutRecordNSEV]->size = sizeof(prec->nsev);
228  prt->papFldDes[stringoutRecordNSEV]->offset = (unsigned short)((char *)&prec->nsev - (char *)prec);
229  prt->papFldDes[stringoutRecordACKS]->size = sizeof(prec->acks);
230  prt->papFldDes[stringoutRecordACKS]->offset = (unsigned short)((char *)&prec->acks - (char *)prec);
231  prt->papFldDes[stringoutRecordACKT]->size = sizeof(prec->ackt);
232  prt->papFldDes[stringoutRecordACKT]->offset = (unsigned short)((char *)&prec->ackt - (char *)prec);
233  prt->papFldDes[stringoutRecordDISS]->size = sizeof(prec->diss);
234  prt->papFldDes[stringoutRecordDISS]->offset = (unsigned short)((char *)&prec->diss - (char *)prec);
235  prt->papFldDes[stringoutRecordLCNT]->size = sizeof(prec->lcnt);
236  prt->papFldDes[stringoutRecordLCNT]->offset = (unsigned short)((char *)&prec->lcnt - (char *)prec);
237  prt->papFldDes[stringoutRecordPACT]->size = sizeof(prec->pact);
238  prt->papFldDes[stringoutRecordPACT]->offset = (unsigned short)((char *)&prec->pact - (char *)prec);
239  prt->papFldDes[stringoutRecordPUTF]->size = sizeof(prec->putf);
240  prt->papFldDes[stringoutRecordPUTF]->offset = (unsigned short)((char *)&prec->putf - (char *)prec);
241  prt->papFldDes[stringoutRecordRPRO]->size = sizeof(prec->rpro);
242  prt->papFldDes[stringoutRecordRPRO]->offset = (unsigned short)((char *)&prec->rpro - (char *)prec);
243  prt->papFldDes[stringoutRecordASP]->size = sizeof(prec->asp);
244  prt->papFldDes[stringoutRecordASP]->offset = (unsigned short)((char *)&prec->asp - (char *)prec);
245  prt->papFldDes[stringoutRecordPPN]->size = sizeof(prec->ppn);
246  prt->papFldDes[stringoutRecordPPN]->offset = (unsigned short)((char *)&prec->ppn - (char *)prec);
247  prt->papFldDes[stringoutRecordPPNR]->size = sizeof(prec->ppnr);
248  prt->papFldDes[stringoutRecordPPNR]->offset = (unsigned short)((char *)&prec->ppnr - (char *)prec);
249  prt->papFldDes[stringoutRecordSPVT]->size = sizeof(prec->spvt);
250  prt->papFldDes[stringoutRecordSPVT]->offset = (unsigned short)((char *)&prec->spvt - (char *)prec);
251  prt->papFldDes[stringoutRecordRSET]->size = sizeof(prec->rset);
252  prt->papFldDes[stringoutRecordRSET]->offset = (unsigned short)((char *)&prec->rset - (char *)prec);
253  prt->papFldDes[stringoutRecordDSET]->size = sizeof(prec->dset);
254  prt->papFldDes[stringoutRecordDSET]->offset = (unsigned short)((char *)&prec->dset - (char *)prec);
255  prt->papFldDes[stringoutRecordDPVT]->size = sizeof(prec->dpvt);
256  prt->papFldDes[stringoutRecordDPVT]->offset = (unsigned short)((char *)&prec->dpvt - (char *)prec);
257  prt->papFldDes[stringoutRecordRDES]->size = sizeof(prec->rdes);
258  prt->papFldDes[stringoutRecordRDES]->offset = (unsigned short)((char *)&prec->rdes - (char *)prec);
259  prt->papFldDes[stringoutRecordLSET]->size = sizeof(prec->lset);
260  prt->papFldDes[stringoutRecordLSET]->offset = (unsigned short)((char *)&prec->lset - (char *)prec);
261  prt->papFldDes[stringoutRecordPRIO]->size = sizeof(prec->prio);
262  prt->papFldDes[stringoutRecordPRIO]->offset = (unsigned short)((char *)&prec->prio - (char *)prec);
263  prt->papFldDes[stringoutRecordTPRO]->size = sizeof(prec->tpro);
264  prt->papFldDes[stringoutRecordTPRO]->offset = (unsigned short)((char *)&prec->tpro - (char *)prec);
265  prt->papFldDes[stringoutRecordBKPT]->size = sizeof(prec->bkpt);
266  prt->papFldDes[stringoutRecordBKPT]->offset = (unsigned short)((char *)&prec->bkpt - (char *)prec);
267  prt->papFldDes[stringoutRecordUDF]->size = sizeof(prec->udf);
268  prt->papFldDes[stringoutRecordUDF]->offset = (unsigned short)((char *)&prec->udf - (char *)prec);
269  prt->papFldDes[stringoutRecordUDFS]->size = sizeof(prec->udfs);
270  prt->papFldDes[stringoutRecordUDFS]->offset = (unsigned short)((char *)&prec->udfs - (char *)prec);
271  prt->papFldDes[stringoutRecordTIME]->size = sizeof(prec->time);
272  prt->papFldDes[stringoutRecordTIME]->offset = (unsigned short)((char *)&prec->time - (char *)prec);
273  prt->papFldDes[stringoutRecordFLNK]->size = sizeof(prec->flnk);
274  prt->papFldDes[stringoutRecordFLNK]->offset = (unsigned short)((char *)&prec->flnk - (char *)prec);
275  prt->papFldDes[stringoutRecordVAL]->size = sizeof(prec->val);
276  prt->papFldDes[stringoutRecordVAL]->offset = (unsigned short)((char *)&prec->val - (char *)prec);
277  prt->papFldDes[stringoutRecordOVAL]->size = sizeof(prec->oval);
278  prt->papFldDes[stringoutRecordOVAL]->offset = (unsigned short)((char *)&prec->oval - (char *)prec);
279  prt->papFldDes[stringoutRecordDOL]->size = sizeof(prec->dol);
280  prt->papFldDes[stringoutRecordDOL]->offset = (unsigned short)((char *)&prec->dol - (char *)prec);
281  prt->papFldDes[stringoutRecordOMSL]->size = sizeof(prec->omsl);
282  prt->papFldDes[stringoutRecordOMSL]->offset = (unsigned short)((char *)&prec->omsl - (char *)prec);
283  prt->papFldDes[stringoutRecordOUT]->size = sizeof(prec->out);
284  prt->papFldDes[stringoutRecordOUT]->offset = (unsigned short)((char *)&prec->out - (char *)prec);
285  prt->papFldDes[stringoutRecordMPST]->size = sizeof(prec->mpst);
286  prt->papFldDes[stringoutRecordMPST]->offset = (unsigned short)((char *)&prec->mpst - (char *)prec);
287  prt->papFldDes[stringoutRecordAPST]->size = sizeof(prec->apst);
288  prt->papFldDes[stringoutRecordAPST]->offset = (unsigned short)((char *)&prec->apst - (char *)prec);
289  prt->papFldDes[stringoutRecordSIOL]->size = sizeof(prec->siol);
290  prt->papFldDes[stringoutRecordSIOL]->offset = (unsigned short)((char *)&prec->siol - (char *)prec);
291  prt->papFldDes[stringoutRecordSIML]->size = sizeof(prec->siml);
292  prt->papFldDes[stringoutRecordSIML]->offset = (unsigned short)((char *)&prec->siml - (char *)prec);
293  prt->papFldDes[stringoutRecordSIMM]->size = sizeof(prec->simm);
294  prt->papFldDes[stringoutRecordSIMM]->offset = (unsigned short)((char *)&prec->simm - (char *)prec);
295  prt->papFldDes[stringoutRecordSIMS]->size = sizeof(prec->sims);
296  prt->papFldDes[stringoutRecordSIMS]->offset = (unsigned short)((char *)&prec->sims - (char *)prec);
297  prt->papFldDes[stringoutRecordOLDSIMM]->size = sizeof(prec->oldsimm);
298  prt->papFldDes[stringoutRecordOLDSIMM]->offset = (unsigned short)((char *)&prec->oldsimm - (char *)prec);
299  prt->papFldDes[stringoutRecordSSCN]->size = sizeof(prec->sscn);
300  prt->papFldDes[stringoutRecordSSCN]->offset = (unsigned short)((char *)&prec->sscn - (char *)prec);
301  prt->papFldDes[stringoutRecordSDLY]->size = sizeof(prec->sdly);
302  prt->papFldDes[stringoutRecordSDLY]->offset = (unsigned short)((char *)&prec->sdly - (char *)prec);
303  prt->papFldDes[stringoutRecordSIMPVT]->size = sizeof(prec->simpvt);
304  prt->papFldDes[stringoutRecordSIMPVT]->offset = (unsigned short)((char *)&prec->simpvt - (char *)prec);
305  prt->papFldDes[stringoutRecordIVOA]->size = sizeof(prec->ivoa);
306  prt->papFldDes[stringoutRecordIVOA]->offset = (unsigned short)((char *)&prec->ivoa - (char *)prec);
307  prt->papFldDes[stringoutRecordIVOV]->size = sizeof(prec->ivov);
308  prt->papFldDes[stringoutRecordIVOV]->offset = (unsigned short)((char *)&prec->ivov - (char *)prec);
309  prt->rec_size = sizeof(*prec);
310  return 0;
311 }
312 epicsExportRegistrar(stringoutRecordSizeOffset);
313 
314 #ifdef __cplusplus
315 }
316 #endif
317 #endif /* GEN_SIZE_OFFSET */
318 
319 #endif /* INC_stringoutRecord_H */
char name[61]
Record Name.
struct processNotifyRecord * ppnr
pprocessNotifyRecord
epicsUInt8 rpro
Reprocess.
epicsUInt8 putf
dbPutField process
epicsUInt8 bkpt
Break Point.
ELLLIST mlis
Monitor List.
epicsCallback * simpvt
Sim. Mode Private.
DBLINK out
Output Specification.
epicsEnum16 stat
Alarm Status.
epicsEnum16 sevr
Alarm Severity.
epicsEnum16 simm
Simulation Mode.
char oval[40]
Previous Value.
char ivov[40]
INVALID output value.
epicsMutexId mlok
Monitor lock.
epicsEnum16 acks
Alarm Ack Severity.
Declaration of stringout record type.
LIBCOM_API void cantProceed(const char *errorMessage,...) EPICS_PRINTF_STYLE(1
Suspend this thread, the caller cannot continue or return.
DBLINK flnk
Forward Process Link.
The core data types used by epics.
epicsEnum16 oldsimm
Prev. Simulation Mode.
Exporting IOC objects.
epicsEnum16 pini
Process at iocInit.
epicsUInt8 tpro
Trace Processing.
struct processNotify * ppn
pprocessNotify
ELLLIST bklnk
Backwards link tracking.
char evnt[40]
Event Name.
epicsInt16 disa
Disable.
epicsEnum16 nsta
New Alarm Status.
epicsInt16 disv
Disable Value.
Routines for code that can&#39;t continue or return after an error.
struct lockRecord * lset
Lock Set.
epicsEnum16 nsev
New Alarm Severity.
epicsEnum16 udfs
Undefined Alarm Sevrty.
epicsFloat64 sdly
Sim. Mode Async Delay.
State string "Always".
DBLINK siol
Simulation Output Link.
void * dpvt
Device Private.
epicsUInt8 udf
Undefined.
DBLINK sdis
Scanning Disable.
Definition: devSup.h:141
epicsEnum16 diss
Disable Alarm Sevrty.
epicsUInt8 pact
Record active.
EPICS time stamp, for use from C code.
Definition: epicsTime.h:34
A doubly-linked list library.
DBLINK dol
Desired Output Loc.
epicsUInt8 proc
Force Processing.
List header type.
Definition: ellLib.h:57
epicsTimeStamp time
Time.
struct asgMember * asp
Access Security Pvt.
epicsEnum16 apst
Post Archive Monitors.
epicsEnum16 sims
Simulation Mode Severity.
char asg[29]
Access Security Group.
DBLINK siml
Simulation Mode Link.
epicsUInt8 disp
Disable putField.
DBLINK tsel
Time Stamp Link.
epicsEnum16 scan
Scan Mechanism.
APIs for the epicsMutex mutual exclusion semaphore.
Device support routines.
epicsEnum16 dtyp
Device Type.
struct dbRecordType * rdes
Address of dbRecordType.
char val[40]
Current Value.
#define epicsExportRegistrar(fun)
Declare a registrar function for exporting.
Definition: epicsExport.h:94
epicsEnum16 ivoa
INVALID output action.
char desc[41]
Descriptor.
stringoutPOST
Enumerated type from menu stringoutPOST.
epicsUInt8 lcnt
Lock Count.
unambiguous_dset * dset
DSET address.
struct typed_rset * rset
Address of RSET.
epicsEnum16 prio
Scheduling Priority.
EPICS time-stamps (epicsTimeStamp), epicsTime C++ class and C functions for handling wall-clock times...
epicsEnum16 sscn
Sim. Mode Scan.
struct scan_element * spvt
Scan Private.
epicsEnum16 omsl
Output Mode Select.
epicsInt16 phas
Scan Phase.
epicsEnum16 mpst
Post Value Monitors.
epicsInt16 tse
Time Stamp Event.
struct epicsMutexParm * epicsMutexId
An identifier for an epicsMutex for use with the C API.
Definition: epicsMutex.h:49
epicsEnum16 ackt
Alarm Ack Transient.
State string "On Change".