Merge ~gabadinho/epics-base/+git/typed-dsets:typed-dsets-gabadinho into ~anj/epics-base/+git/base-7.0:typed-dsets

Proposed by José Gabadinho
Status: Merged
Approved by: Andrew Johnson
Approved revision: c54237e34a0c2b01b26a2d163c3786ffa6fc9de3
Merged at revision: c54237e34a0c2b01b26a2d163c3786ffa6fc9de3
Proposed branch: ~gabadinho/epics-base/+git/typed-dsets:typed-dsets-gabadinho
Merge into: ~anj/epics-base/+git/base-7.0:typed-dsets
Diff against target: 3332 lines (+567/-841)
85 files modified
modules/database/src/std/dev/Makefile (+37/-0)
modules/database/src/std/dev/devAaiSoft.c (+8/-18)
modules/database/src/std/dev/devAaoSoft.c (+8/-17)
modules/database/src/std/dev/devAoSoft.c (+8/-22)
modules/database/src/std/dev/devAoSoftCallback.c (+6/-17)
modules/database/src/std/dev/devAoSoftRaw.c (+6/-18)
modules/database/src/std/dev/devBiDbState.c (+4/-15)
modules/database/src/std/dev/devBiSoft.c (+6/-15)
modules/database/src/std/dev/devBiSoftCallback.c (+4/-5)
modules/database/src/std/dev/devBiSoftRaw.c (+6/-15)
modules/database/src/std/dev/devBoDbState.c (+4/-15)
modules/database/src/std/dev/devBoSoft.c (+8/-20)
modules/database/src/std/dev/devBoSoftCallback.c (+4/-16)
modules/database/src/std/dev/devBoSoftRaw.c (+7/-20)
modules/database/src/std/dev/devCalcoutSoft.c (+3/-9)
modules/database/src/std/dev/devCalcoutSoftCallback.c (+3/-9)
modules/database/src/std/dev/devEnviron.c (+3/-5)
modules/database/src/std/dev/devEventSoft.c (+6/-15)
modules/database/src/std/dev/devGeneralTime.c (+10/-15)
modules/database/src/std/dev/devHistogramSoft.c (+10/-20)
modules/database/src/std/dev/devLiSoft.c (+6/-15)
modules/database/src/std/dev/devLiSoftCallback.c (+4/-5)
modules/database/src/std/dev/devLoSoft.c (+8/-18)
modules/database/src/std/dev/devLoSoftCallback.c (+5/-16)
modules/database/src/std/dev/devMbbiDirectSoft.c (+6/-15)
modules/database/src/std/dev/devMbbiDirectSoftCallback.c (+4/-5)
modules/database/src/std/dev/devMbbiDirectSoftRaw.c (+6/-15)
modules/database/src/std/dev/devMbbiSoft.c (+6/-15)
modules/database/src/std/dev/devMbbiSoftCallback.c (+5/-6)
modules/database/src/std/dev/devMbbiSoftRaw.c (+6/-15)
modules/database/src/std/dev/devMbboDirectSoft.c (+1/-4)
modules/database/src/std/dev/devMbboDirectSoftCallback.c (+2/-5)
modules/database/src/std/dev/devMbboDirectSoftRaw.c (+4/-5)
modules/database/src/std/dev/devMbboSoft.c (+8/-18)
modules/database/src/std/dev/devMbboSoftCallback.c (+5/-15)
modules/database/src/std/dev/devMbboSoftRaw.c (+4/-5)
modules/database/src/std/dev/devSASoft.c (+5/-15)
modules/database/src/std/dev/devSiSoft.c (+6/-15)
modules/database/src/std/dev/devSiSoftCallback.c (+5/-6)
modules/database/src/std/dev/devSoSoft.c (+3/-13)
modules/database/src/std/dev/devSoSoftCallback.c (+3/-14)
modules/database/src/std/dev/devStdio.c (+3/-5)
modules/database/src/std/dev/devTimestamp.c (+1/-4)
modules/database/src/std/dev/devWfSoft.c (+5/-15)
modules/database/src/std/rec/Makefile (+17/-0)
modules/database/src/std/rec/aaiRecord.c (+6/-15)
modules/database/src/std/rec/aaiRecord.dbd (+9/-0)
modules/database/src/std/rec/aaoRecord.c (+6/-15)
modules/database/src/std/rec/aaoRecord.dbd (+9/-0)
modules/database/src/std/rec/aoRecord.c (+10/-20)
modules/database/src/std/rec/aoRecord.dbd.pod (+10/-0)
modules/database/src/std/rec/biRecord.c (+9/-16)
modules/database/src/std/rec/biRecord.dbd.pod (+9/-0)
modules/database/src/std/rec/boRecord.c (+6/-16)
modules/database/src/std/rec/boRecord.dbd.pod (+9/-0)
modules/database/src/std/rec/calcRecord.c (+1/-1)
modules/database/src/std/rec/calcoutRecord.c (+5/-15)
modules/database/src/std/rec/calcoutRecord.dbd.pod (+8/-0)
modules/database/src/std/rec/eventRecord.c (+6/-14)
modules/database/src/std/rec/eventRecord.dbd.pod (+10/-0)
modules/database/src/std/rec/histogramRecord.c (+7/-18)
modules/database/src/std/rec/histogramRecord.dbd (+10/-0)
modules/database/src/std/rec/int64inRecord.c (+4/-4)
modules/database/src/std/rec/int64outRecord.c (+4/-4)
modules/database/src/std/rec/longinRecord.c (+6/-15)
modules/database/src/std/rec/longinRecord.dbd.pod (+9/-0)
modules/database/src/std/rec/longoutRecord.c (+6/-15)
modules/database/src/std/rec/longoutRecord.dbd.pod (+9/-0)
modules/database/src/std/rec/lsiRecord.c (+1/-1)
modules/database/src/std/rec/mbbiDirectRecord.c (+6/-15)
modules/database/src/std/rec/mbbiDirectRecord.dbd.pod (+8/-0)
modules/database/src/std/rec/mbbiRecord.c (+6/-16)
modules/database/src/std/rec/mbbiRecord.dbd.pod (+8/-0)
modules/database/src/std/rec/mbboDirectRecord.c (+6/-16)
modules/database/src/std/rec/mbboDirectRecord.dbd.pod (+8/-0)
modules/database/src/std/rec/mbboRecord.c (+7/-16)
modules/database/src/std/rec/mbboRecord.dbd.pod (+8/-0)
modules/database/src/std/rec/stringinRecord.c (+6/-14)
modules/database/src/std/rec/stringinRecord.dbd.pod (+9/-0)
modules/database/src/std/rec/stringoutRecord.c (+6/-14)
modules/database/src/std/rec/stringoutRecord.dbd.pod (+9/-0)
modules/database/src/std/rec/subArrayRecord.c (+7/-16)
modules/database/src/std/rec/subArrayRecord.dbd.pod (+9/-0)
modules/database/src/std/rec/waveformRecord.c (+7/-15)
modules/database/src/std/rec/waveformRecord.dbd.pod (+9/-0)
Reviewer Review Type Date Requested Status
Andrew Johnson Approve
Review via email: mp+378961@code.launchpad.net

Commit message

initial dset support for ao record

To post a comment you must log in.
Revision history for this message
Andrew Johnson (anj) wrote :

Good start, one comment inline below.

Revision history for this message
Andrew Johnson (anj) wrote :

José this is great, thank-you for all your hard work on it.

I'm about to merge your changes into my branch, which will then get merged into the main 7.0 branch sometime before the next EPICS 7 release (hopefully sooner rather than later).

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/modules/database/src/std/dev/Makefile b/modules/database/src/std/dev/Makefile
2index bd1add3..b582f0b 100644
3--- a/modules/database/src/std/dev/Makefile
4+++ b/modules/database/src/std/dev/Makefile
5@@ -13,70 +13,107 @@ SRC_DIRS += $(STDDIR)/dev
6
7 DBD += devSoft.dbd
8
9+devAaiSoft_CFLAGS += -DUSE_TYPED_DSET
10 dbRecStd_SRCS += devAaiSoft.c
11+devAaoSoft_CFLAGS += -DUSE_TYPED_DSET
12 dbRecStd_SRCS += devAaoSoft.c
13 devAiSoft_CFLAGS += -DUSE_TYPED_DSET
14 dbRecStd_SRCS += devAiSoft.c
15 devAiSoftRaw_CFLAGS += -DUSE_TYPED_DSET
16 dbRecStd_SRCS += devAiSoftRaw.c
17+devAoSoft_CFLAGS += -DUSE_TYPED_DSET
18 dbRecStd_SRCS += devAoSoft.c
19+devAoSoftRaw_CFLAGS += -DUSE_TYPED_DSET
20 dbRecStd_SRCS += devAoSoftRaw.c
21+devBiSoft_CFLAGS += -DUSE_TYPED_DSET
22 dbRecStd_SRCS += devBiSoft.c
23 dbRecStd_SRCS += devBiSoftRaw.c
24+devBiDbState_CFLAGS += -DUSE_TYPED_DSET
25 dbRecStd_SRCS += devBiDbState.c
26+devBoSoft_CFLAGS += -DUSE_TYPED_DSET
27 dbRecStd_SRCS += devBoSoft.c
28+devBoSoftRaw_CFLAGS += -DUSE_TYPED_DSET
29 dbRecStd_SRCS += devBoSoftRaw.c
30 dbRecStd_SRCS += devBoDbState.c
31+devCalcoutSoft_CFLAGS += -DUSE_TYPED_DSET
32 dbRecStd_SRCS += devCalcoutSoft.c
33+devEventSoft_CFLAGS += -DUSE_TYPED_DSET
34 dbRecStd_SRCS += devEventSoft.c
35+devHistogramSoft_CFLAGS += -DUSE_TYPED_DSET
36 dbRecStd_SRCS += devHistogramSoft.c
37 devI64inSoft_CFLAGS += -DUSE_TYPED_DSET
38 dbRecStd_SRCS += devI64inSoft.c
39 devI64outSoft_CFLAGS += -DUSE_TYPED_DSET
40 dbRecStd_SRCS += devI64outSoft.c
41+devLiSoft_CFLAGS += -DUSE_TYPED_DSET
42 dbRecStd_SRCS += devLiSoft.c
43+devLoSoft_CFLAGS += -DUSE_TYPED_DSET
44 dbRecStd_SRCS += devLoSoft.c
45 devLsiSoft_CFLAGS += -DUSE_TYPED_DSET
46 dbRecStd_SRCS += devLsiSoft.c
47 devLsoSoft_CFLAGS += -DUSE_TYPED_DSET
48 dbRecStd_SRCS += devLsoSoft.c
49+devMbbiDirectSoft_CFLAGS += -DUSE_TYPED_DSET
50 dbRecStd_SRCS += devMbbiDirectSoft.c
51+devMbbiDirectSoftRaw_CFLAGS += -DUSE_TYPED_DSET
52 dbRecStd_SRCS += devMbbiDirectSoftRaw.c
53+devMbbiSoft_CFLAGS += -DUSE_TYPED_DSET
54 dbRecStd_SRCS += devMbbiSoft.c
55+devMbbiSoftRaw_CFLAGS += -DUSE_TYPED_DSET
56 dbRecStd_SRCS += devMbbiSoftRaw.c
57+devMbboDirectSoft_CFLAGS += -DUSE_TYPED_DSET
58 dbRecStd_SRCS += devMbboDirectSoft.c
59+devMbboDirectSoftRaw_CFLAGS += -DUSE_TYPED_DSET
60 dbRecStd_SRCS += devMbboDirectSoftRaw.c
61+devMbboSoft_CFLAGS += -DUSE_TYPED_DSET
62 dbRecStd_SRCS += devMbboSoft.c
63+devMbboSoftRaw_CFLAGS += -DUSE_TYPED_DSET
64 dbRecStd_SRCS += devMbboSoftRaw.c
65 devPrintfSoft_CFLAGS += -DUSE_TYPED_DSET
66 dbRecStd_SRCS += devPrintfSoft.c
67+devSASoft_CFLAGS += -DUSE_TYPED_DSET
68 dbRecStd_SRCS += devSASoft.c
69+devSiSoft_CFLAGS += -DUSE_TYPED_DSET
70 dbRecStd_SRCS += devSiSoft.c
71+devSoSoft_CFLAGS += -DUSE_TYPED_DSET
72 dbRecStd_SRCS += devSoSoft.c
73+devWfSoft_CFLAGS += -DUSE_TYPED_DSET
74 dbRecStd_SRCS += devWfSoft.c
75
76 devAiSoftCallback_CFLAGS += -DUSE_TYPED_DSET
77 dbRecStd_SRCS += devAiSoftCallback.c
78+devBiSoftCallback_CFLAGS += -DUSE_TYPED_DSET
79 dbRecStd_SRCS += devBiSoftCallback.c
80 devI64inSoftCallback_CFLAGS += -DUSE_TYPED_DSET
81 dbRecStd_SRCS += devI64inSoftCallback.c
82+devLiSoftCallback_CFLAGS += -DUSE_TYPED_DSET
83 dbRecStd_SRCS += devLiSoftCallback.c
84+devMbbiDirectSoftCallback_CFLAGS += -DUSE_TYPED_DSET
85 dbRecStd_SRCS += devMbbiDirectSoftCallback.c
86+devMbbiCallbackSoft_CFLAGS += -DUSE_TYPED_DSET
87 dbRecStd_SRCS += devMbbiSoftCallback.c
88+devSiSoftCallback_CFLAGS += -DUSE_TYPED_DSET
89 dbRecStd_SRCS += devSiSoftCallback.c
90
91+devAoSoftCallback_CFLAGS += -DUSE_TYPED_DSET
92 dbRecStd_SRCS += devAoSoftCallback.c
93+devBoSoftCallback_CFLAGS += -DUSE_TYPED_DSET
94 dbRecStd_SRCS += devBoSoftCallback.c
95+devCalcoutSoftCallback_CFLAGS += -DUSE_TYPED_DSET
96 dbRecStd_SRCS += devCalcoutSoftCallback.c
97 devI64outSoftCallback_CFLAGS += -DUSE_TYPED_DSET
98 dbRecStd_SRCS += devI64outSoftCallback.c
99+devLoSoftCallback_CFLAGS += -DUSE_TYPED_DSET
100 dbRecStd_SRCS += devLoSoftCallback.c
101 devLsoSoftCallback_CFLAGS += -DUSE_TYPED_DSET
102 dbRecStd_SRCS += devLsoSoftCallback.c
103+devMbboSoftCallback_CFLAGS += -DUSE_TYPED_DSET
104 dbRecStd_SRCS += devMbboSoftCallback.c
105+devMbboDirectSoftCallback_CFLAGS += -DUSE_TYPED_DSET
106 dbRecStd_SRCS += devMbboDirectSoftCallback.c
107 devPrintfSoftCallback_CFLAGS += -DUSE_TYPED_DSET
108 dbRecStd_SRCS += devPrintfSoftCallback.c
109+devSoSoftCallback_CFLAGS += -DUSE_TYPED_DSET
110 dbRecStd_SRCS += devSoSoftCallback.c
111
112 devGeneralTime_CFLAGS += -DUSE_TYPED_DSET
113diff --git a/modules/database/src/std/dev/devAaiSoft.c b/modules/database/src/std/dev/devAaiSoft.c
114index cb4aa02..1f57656 100644
115--- a/modules/database/src/std/dev/devAaiSoft.c
116+++ b/modules/database/src/std/dev/devAaiSoft.c
117@@ -32,28 +32,18 @@
118 #include "epicsExport.h"
119
120 /* Create the dset for devAaiSoft */
121-static long init_record();
122-static long read_aai();
123-
124-struct {
125- long number;
126- DEVSUPFUN report;
127- DEVSUPFUN init;
128- DEVSUPFUN init_record;
129- DEVSUPFUN get_ioint_info;
130- DEVSUPFUN read_aai;
131-} devAaiSoft = {
132- 5,
133- NULL,
134- NULL,
135- init_record,
136- NULL,
137+static long init_record(dbCommon *pcommon);
138+static long read_aai(aaiRecord *prec);
139+
140+aaidset devAaiSoft = {
141+ {5, NULL, NULL, init_record, NULL},
142 read_aai
143 };
144-epicsExportAddress(dset,devAaiSoft);
145+epicsExportAddress(dset, devAaiSoft);
146
147-static long init_record(aaiRecord *prec)
148+static long init_record(dbCommon *pcommon)
149 {
150+ aaiRecord *prec = (aaiRecord *)pcommon;
151 DBLINK *plink = &prec->inp;
152
153 /* This is pass 0, link hasn't been initialized yet */
154diff --git a/modules/database/src/std/dev/devAaoSoft.c b/modules/database/src/std/dev/devAaoSoft.c
155index 3331ec1..98a84cd 100644
156--- a/modules/database/src/std/dev/devAaoSoft.c
157+++ b/modules/database/src/std/dev/devAaoSoft.c
158@@ -30,28 +30,19 @@
159 #include "epicsExport.h"
160
161 /* Create the dset for devAaoSoft */
162-static long init_record();
163-static long write_aao();
164+static long init_record(dbCommon *pcommon);
165+static long write_aao(aaoRecord *prec);
166
167-struct {
168- long number;
169- DEVSUPFUN report;
170- DEVSUPFUN init;
171- DEVSUPFUN init_record;
172- DEVSUPFUN get_ioint_info;
173- DEVSUPFUN read_aao;
174-} devAaoSoft = {
175- 5,
176- NULL,
177- NULL,
178- init_record,
179- NULL,
180+aaodset devAaoSoft = {
181+ {5, NULL, NULL, init_record, NULL},
182 write_aao
183 };
184-epicsExportAddress(dset,devAaoSoft);
185+epicsExportAddress(dset, devAaoSoft);
186
187-static long init_record(aaoRecord *prec)
188+static long init_record(dbCommon *pcommon)
189 {
190+ aaoRecord *prec = (aaoRecord *)pcommon;
191+
192 if (dbLinkIsConstant(&prec->out)) {
193 prec->nord = 0;
194 }
195diff --git a/modules/database/src/std/dev/devAoSoft.c b/modules/database/src/std/dev/devAoSoft.c
196index 56bd056..8772cde 100644
197--- a/modules/database/src/std/dev/devAoSoft.c
198+++ b/modules/database/src/std/dev/devAoSoft.c
199@@ -31,31 +31,17 @@
200 #include "aoRecord.h"
201 #include "epicsExport.h"
202
203-/* added for Channel Access Links */
204-static long init_record(aoRecord *prec);
205-
206 /* Create the dset for devAoSoft */
207+static long init_record(dbCommon *pcommon);
208 static long write_ao(aoRecord *prec);
209-struct {
210- long number;
211- DEVSUPFUN report;
212- DEVSUPFUN init;
213- DEVSUPFUN init_record;
214- DEVSUPFUN get_ioint_info;
215- DEVSUPFUN write_ao;
216- DEVSUPFUN special_linconv;
217-}devAoSoft={
218- 6,
219- NULL,
220- NULL,
221- init_record,
222- NULL,
223- write_ao,
224- NULL};
225-epicsExportAddress(dset,devAoSoft);
226-
227
228
229-static long init_record(aoRecord *prec)
230+aodset devAoSoft = {
231+ {6, NULL, NULL, init_record, NULL},
232+ write_ao, NULL
233+};
234+epicsExportAddress(dset, devAoSoft);
235+
236+static long init_record(dbCommon *pcommon)
237 {
238
239 long status=0;
240diff --git a/modules/database/src/std/dev/devAoSoftCallback.c b/modules/database/src/std/dev/devAoSoftCallback.c
241index c1fb72f..5144c77 100644
242--- a/modules/database/src/std/dev/devAoSoftCallback.c
243+++ b/modules/database/src/std/dev/devAoSoftCallback.c
244@@ -31,23 +31,12 @@
245
246 /* Create the dset for devAoSoftCallback */
247 static long write_ao(aoRecord *prec);
248-struct {
249- long number;
250- DEVSUPFUN report;
251- DEVSUPFUN init;
252- DEVSUPFUN init_record;
253- DEVSUPFUN get_ioint_info;
254- DEVSUPFUN write_ao;
255- DEVSUPFUN special_linconv;
256-}devAoSoftCallback={
257- 6,
258- NULL,
259- NULL,
260- NULL,
261- NULL,
262- write_ao,
263- NULL};
264-epicsExportAddress(dset,devAoSoftCallback);
265+
266+aodset devAoSoftCallback = {
267+ {6, NULL, NULL, NULL, NULL},
268+ write_ao, NULL
269+};
270+epicsExportAddress(dset, devAoSoftCallback);
271
272 static long write_ao(aoRecord *prec)
273 {
274diff --git a/modules/database/src/std/dev/devAoSoftRaw.c b/modules/database/src/std/dev/devAoSoftRaw.c
275index 05aed03..bb2ae7d 100644
276--- a/modules/database/src/std/dev/devAoSoftRaw.c
277+++ b/modules/database/src/std/dev/devAoSoftRaw.c
278@@ -33,25 +33,13 @@
279
280 /* Create the dset for devAoSoftRaw */
281 static long write_ao(aoRecord *prec);
282-struct {
283- long number;
284- DEVSUPFUN report;
285- DEVSUPFUN init;
286- DEVSUPFUN init_record;
287- DEVSUPFUN get_ioint_info;
288- DEVSUPFUN write_ao;
289- DEVSUPFUN special_linconv;
290-}devAoSoftRaw={
291- 6,
292- NULL,
293- NULL,
294- NULL,
295- NULL,
296- write_ao,
297- NULL
298+
299+aodset devAoSoftRaw = {
300+ {6, NULL, NULL, NULL, NULL},
301+ write_ao, NULL
302 };
303-epicsExportAddress(dset,devAoSoftRaw);
304-
305
306+epicsExportAddress(dset, devAoSoftRaw);
307+
308 static long write_ao(aoRecord *prec)
309 {
310 long status;
311diff --git a/modules/database/src/std/dev/devBiDbState.c b/modules/database/src/std/dev/devBiDbState.c
312index fcb6c8f..373270a 100644
313--- a/modules/database/src/std/dev/devBiDbState.c
314+++ b/modules/database/src/std/dev/devBiDbState.c
315@@ -69,20 +69,9 @@ static long read_bi(biRecord *prec)
316 return 2;
317 }
318
319-static struct {
320- long number;
321- DEVSUPFUN report;
322- DEVSUPFUN init;
323- DEVSUPFUN init_record;
324- DEVSUPFUN get_ioint_info;
325- DEVSUPFUN read_bi;
326-} devBiDbState = {
327- 5,
328- NULL,
329- init,
330- NULL,
331- NULL,
332- read_bi
333+/* Create the dset for devBiDbState */
334+bidset devBiDbState = {
335+ {5, NULL, init, NULL, NULL},
336+ read_bi
337 };
338-
339 epicsExportAddress(dset, devBiDbState);
340diff --git a/modules/database/src/std/dev/devBiSoft.c b/modules/database/src/std/dev/devBiSoft.c
341index 12640ad..41a308a 100644
342--- a/modules/database/src/std/dev/devBiSoft.c
343+++ b/modules/database/src/std/dev/devBiSoft.c
344@@ -25,28 +25,19 @@
345 #include "epicsExport.h"
346
347 /* Create the dset for devBiSoft */
348-static long init_record(biRecord *prec);
349+static long init_record(dbCommon *pcommon);
350 static long read_bi(biRecord *prec);
351
352-struct {
353- long number;
354- DEVSUPFUN report;
355- DEVSUPFUN init;
356- DEVSUPFUN init_record;
357- DEVSUPFUN get_ioint_info;
358- DEVSUPFUN read_bi;
359-} devBiSoft = {
360- 5,
361- NULL,
362- NULL,
363- init_record,
364- NULL,
365+bidset devBiSoft = {
366+ {5, NULL, NULL, init_record, NULL},
367 read_bi
368 };
369 epicsExportAddress(dset, devBiSoft);
370
371-static long init_record(biRecord *prec)
372+static long init_record(dbCommon *pcommon)
373 {
374+ biRecord *prec = (biRecord *)pcommon;
375+
376 if (recGblInitConstantLink(&prec->inp, DBF_ENUM, &prec->val))
377 prec->udf = FALSE;
378 return 0;
379diff --git a/modules/database/src/std/dev/devBiSoftCallback.c b/modules/database/src/std/dev/devBiSoftCallback.c
380index 607b1af..0610071 100644
381--- a/modules/database/src/std/dev/devBiSoftCallback.c
382+++ b/modules/database/src/std/dev/devBiSoftCallback.c
383@@ -151,8 +151,10 @@ static long init(int pass)
384 return 0;
385 }
386
387-static long init_record(biRecord *prec)
388+static long init_record(dbCommon *pcommon)
389 {
390+ biRecord *prec = (biRecord *)pcommon;
391+
392 if (recGblInitConstantLink(&prec->inp, DBR_ENUM, &prec->val))
393 prec->udf = FALSE;
394
395@@ -204,10 +206,7 @@ static long read_bi(biRecord *prec)
396 }
397
398 /* Create the dset for devBiSoftCallback */
399-struct {
400- dset common;
401- DEVSUPFUN read_bi;
402-} devBiSoftCallback = {
403+bidset devBiSoftCallback = {
404 {5, NULL, init, init_record, NULL},
405 read_bi
406 };
407diff --git a/modules/database/src/std/dev/devBiSoftRaw.c b/modules/database/src/std/dev/devBiSoftRaw.c
408index a71bf89..90fbcbb 100644
409--- a/modules/database/src/std/dev/devBiSoftRaw.c
410+++ b/modules/database/src/std/dev/devBiSoftRaw.c
411@@ -25,28 +25,19 @@
412 #include "epicsExport.h"
413
414 /* Create the dset for devBiSoftRaw */
415-static long init_record(biRecord *prec);
416+static long init_record(dbCommon *pcommon);
417 static long read_bi(biRecord *prec);
418
419-struct {
420- long number;
421- DEVSUPFUN report;
422- DEVSUPFUN init;
423- DEVSUPFUN init_record;
424- DEVSUPFUN get_ioint_info;
425- DEVSUPFUN read_bi;
426-} devBiSoftRaw = {
427- 5,
428- NULL,
429- NULL,
430- init_record,
431- NULL,
432+bidset devBiSoftRaw = {
433+ {5, NULL, NULL, init_record, NULL},
434 read_bi
435 };
436 epicsExportAddress(dset, devBiSoftRaw);
437
438-static long init_record(biRecord *prec)
439+static long init_record(dbCommon *pcommon)
440 {
441+ biRecord *prec = (biRecord *)pcommon;
442+
443 recGblInitConstantLink(&prec->inp, DBF_ULONG, &prec->rval);
444
445 return 0;
446diff --git a/modules/database/src/std/dev/devBoDbState.c b/modules/database/src/std/dev/devBoDbState.c
447index 26e97ae..f9a7606 100644
448--- a/modules/database/src/std/dev/devBoDbState.c
449+++ b/modules/database/src/std/dev/devBoDbState.c
450@@ -67,20 +67,9 @@ static long write_bo(boRecord *prec)
451 return 0;
452 }
453
454-static struct {
455- long number;
456- DEVSUPFUN report;
457- DEVSUPFUN init;
458- DEVSUPFUN init_record;
459- DEVSUPFUN get_ioint_info;
460- DEVSUPFUN write_bo;
461-} devBoDbState = {
462- 5,
463- NULL,
464- init,
465- NULL,
466- NULL,
467- write_bo
468+/* Create the dset for devBoDbState */
469+bodset devBoDbState = {
470+ {5, NULL, init, NULL, NULL},
471+ write_bo
472 };
473-
474 epicsExportAddress(dset, devBoDbState);
475diff --git a/modules/database/src/std/dev/devBoSoft.c b/modules/database/src/std/dev/devBoSoft.c
476index ba6ff14..80ca61b 100644
477--- a/modules/database/src/std/dev/devBoSoft.c
478+++ b/modules/database/src/std/dev/devBoSoft.c
479@@ -29,31 +29,19 @@
480 #include "boRecord.h"
481 #include "epicsExport.h"
482
483-static long init_record(boRecord *prec);
484-
485 /* Create the dset for devBoSoft */
486+static long init_record(dbCommon *pcommon);
487 static long write_bo(boRecord *prec);
488
489-struct {
490- long number;
491- DEVSUPFUN report;
492- DEVSUPFUN init;
493- DEVSUPFUN init_record;
494- DEVSUPFUN get_ioint_info;
495- DEVSUPFUN write_bo;
496-}devBoSoft={
497- 5,
498- NULL,
499- NULL,
500- init_record,
501- NULL,
502- write_bo
503+bodset devBoSoft = {
504+ {5, NULL, NULL, init_record, NULL},
505+ write_bo
506 };
507-epicsExportAddress(dset,devBoSoft);
508-
509
510-static long init_record(boRecord *prec)
511+epicsExportAddress(dset, devBoSoft);
512+
513+static long init_record(dbCommon *pcommon)
514 {
515-
516+ boRecord *prec = (boRecord *)pcommon;
517 long status=0;
518
519 /* dont convert */
520diff --git a/modules/database/src/std/dev/devBoSoftCallback.c b/modules/database/src/std/dev/devBoSoftCallback.c
521index ffb68e5..9373558 100644
522--- a/modules/database/src/std/dev/devBoSoftCallback.c
523+++ b/modules/database/src/std/dev/devBoSoftCallback.c
524@@ -31,22 +31,11 @@
525 /* Create the dset for devBoCallbackSoft */
526 static long write_bo(boRecord *prec);
527
528-struct {
529- long number;
530- DEVSUPFUN report;
531- DEVSUPFUN init;
532- DEVSUPFUN init_record;
533- DEVSUPFUN get_ioint_info;
534- DEVSUPFUN write_bo;
535-}devBoSoftCallback={
536- 5,
537- NULL,
538- NULL,
539- NULL,
540- NULL,
541- write_bo
542+bodset devBoSoftCallback = {
543+ {5, NULL, NULL, NULL, NULL},
544+ write_bo
545 };
546-epicsExportAddress(dset,devBoSoftCallback);
547+epicsExportAddress(dset, devBoSoftCallback);
548
549 static long write_bo(boRecord *prec)
550 {
551@@ -64,4 +53,3 @@ static long write_bo(boRecord *prec)
552
553 return status;
554 }
555-
556diff --git a/modules/database/src/std/dev/devBoSoftRaw.c b/modules/database/src/std/dev/devBoSoftRaw.c
557index df1ba5b..b0bd854 100644
558--- a/modules/database/src/std/dev/devBoSoftRaw.c
559+++ b/modules/database/src/std/dev/devBoSoftRaw.c
560@@ -28,30 +28,17 @@
561 #include "boRecord.h"
562 #include "epicsExport.h"
563
564-/* added for Channel Access Links */
565-static long init_record(boRecord *prec);
566-
567 /* Create the dset for devBoSoftRaw */
568+static long init_record(dbCommon *pcommon);
569 static long write_bo(boRecord *prec);
570
571-struct {
572- long number;
573- DEVSUPFUN report;
574- DEVSUPFUN init;
575- DEVSUPFUN init_record;
576- DEVSUPFUN get_ioint_info;
577- DEVSUPFUN write_bo;
578-}devBoSoftRaw={
579- 5,
580- NULL,
581- NULL,
582- init_record,
583- NULL,
584- write_bo
585+bodset devBoSoftRaw = {
586+ {5, NULL, NULL, init_record, NULL},
587+ write_bo
588 };
589-epicsExportAddress(dset,devBoSoftRaw);
590-
591
592-static long init_record(boRecord *prec)
593+epicsExportAddress(dset, devBoSoftRaw);
594+
595+static long init_record(dbCommon *pcommon)
596 {
597 long status;
598
599diff --git a/modules/database/src/std/dev/devCalcoutSoft.c b/modules/database/src/std/dev/devCalcoutSoft.c
600index f931e6a..52ee11b 100644
601--- a/modules/database/src/std/dev/devCalcoutSoft.c
602+++ b/modules/database/src/std/dev/devCalcoutSoft.c
603@@ -31,15 +31,9 @@
604
605 static long write_calcout(calcoutRecord *prec);
606
607-struct {
608- long number;
609- DEVSUPFUN report;
610- DEVSUPFUN init;
611- DEVSUPFUN init_record;
612- DEVSUPFUN get_ioint_info;
613- DEVSUPFUN write;
614-} devCalcoutSoft = {
615- 5, NULL, NULL, NULL, NULL, write_calcout
616+calcoutdset devCalcoutSoft = {
617+ {5, NULL, NULL, NULL, NULL},
618+ write_calcout
619 };
620 epicsExportAddress(dset, devCalcoutSoft);
621
622diff --git a/modules/database/src/std/dev/devCalcoutSoftCallback.c b/modules/database/src/std/dev/devCalcoutSoftCallback.c
623index 94f9d4f..3d357b8 100644
624--- a/modules/database/src/std/dev/devCalcoutSoftCallback.c
625+++ b/modules/database/src/std/dev/devCalcoutSoftCallback.c
626@@ -31,15 +31,9 @@
627
628 static long write_calcout(calcoutRecord *prec);
629
630-struct {
631- long number;
632- DEVSUPFUN report;
633- DEVSUPFUN init;
634- DEVSUPFUN init_record;
635- DEVSUPFUN get_ioint_info;
636- DEVSUPFUN write;
637-} devCalcoutSoftCallback = {
638- 5, NULL, NULL, NULL, NULL, write_calcout
639+calcoutdset devCalcoutSoftCallback = {
640+ {5, NULL, NULL, NULL, NULL},
641+ write_calcout
642 };
643 epicsExportAddress(dset, devCalcoutSoftCallback);
644
645diff --git a/modules/database/src/std/dev/devEnviron.c b/modules/database/src/std/dev/devEnviron.c
646index 69c9a3d..8e4bd79 100644
647--- a/modules/database/src/std/dev/devEnviron.c
648+++ b/modules/database/src/std/dev/devEnviron.c
649@@ -119,10 +119,8 @@ static long read_stringin(stringinRecord *prec)
650 return 0;
651 }
652
653-static struct {
654- dset common;
655- DEVSUPFUN read;
656-} devSiEnviron = {
657- {5, NULL, init_stringin, NULL, NULL}, read_stringin
658+stringindset devSiEnviron = {
659+ {5, NULL, init_stringin, NULL, NULL},
660+ read_stringin
661 };
662 epicsExportAddress(dset, devSiEnviron);
663diff --git a/modules/database/src/std/dev/devEventSoft.c b/modules/database/src/std/dev/devEventSoft.c
664index a748dda..4020c91 100644
665--- a/modules/database/src/std/dev/devEventSoft.c
666+++ b/modules/database/src/std/dev/devEventSoft.c
667@@ -25,28 +25,19 @@
668 #include "epicsExport.h"
669
670 /* Create the dset for devEventSoft */
671-static long init_record(eventRecord *prec);
672+static long init_record(dbCommon *pcommon);
673 static long read_event(eventRecord *prec);
674
675-struct {
676- long number;
677- DEVSUPFUN report;
678- DEVSUPFUN init;
679- DEVSUPFUN init_record;
680- DEVSUPFUN get_ioint_info;
681- DEVSUPFUN read_event;
682-} devEventSoft = {
683- 5,
684- NULL,
685- NULL,
686- init_record,
687- NULL,
688+eventdset devEventSoft = {
689+ {5, NULL, NULL, init_record, NULL},
690 read_event
691 };
692 epicsExportAddress(dset, devEventSoft);
693
694-static long init_record(eventRecord *prec)
695+static long init_record(dbCommon *pcommon)
696 {
697+ eventRecord *prec = (eventRecord *)pcommon;
698+
699 if (recGblInitConstantLink(&prec->inp, DBF_STRING, prec->val))
700 prec->udf = FALSE;
701
702diff --git a/modules/database/src/std/dev/devGeneralTime.c b/modules/database/src/std/dev/devGeneralTime.c
703index c424fb7..f032751 100644
704--- a/modules/database/src/std/dev/devGeneralTime.c
705+++ b/modules/database/src/std/dev/devGeneralTime.c
706@@ -150,15 +150,14 @@ static long write_bo(boRecord *prec)
707 return 0;
708 }
709
710-struct {
711- dset common;
712- DEVSUPFUN read_write;
713-} devBoGeneralTime = {
714- {5, NULL, NULL, init_bo, NULL}, write_bo
715+bodset devBoGeneralTime = {
716+ {5, NULL, NULL, init_bo, NULL},
717+ write_bo
718 };
719 epicsExportAddress(dset, devBoGeneralTime);
720
721
722+
723 /******* longin record *************/
724 static int errorCount(void)
725 {
726@@ -209,11 +208,9 @@ static long read_li(longinRecord *prec)
727 return 0;
728 }
729
730-struct {
731- dset common;
732- DEVSUPFUN read_write;
733-} devLiGeneralTime = {
734- {5, NULL, NULL, init_li, NULL}, read_li
735+longindset devLiGeneralTime = {
736+ {5, NULL, NULL, init_li, NULL},
737+ read_li
738 };
739 epicsExportAddress(dset, devLiGeneralTime);
740
741@@ -289,10 +286,8 @@ static long read_si(stringinRecord *prec)
742 return 0;
743 }
744
745-struct {
746- dset common;
747- DEVSUPFUN read_write;
748-} devSiGeneralTime = {
749- {5, NULL, NULL, init_si, NULL}, read_si
750+stringindset devSiGeneralTime = {
751+ {5, NULL, NULL, init_si, NULL},
752+ read_si
753 };
754 epicsExportAddress(dset, devSiGeneralTime);
755diff --git a/modules/database/src/std/dev/devHistogramSoft.c b/modules/database/src/std/dev/devHistogramSoft.c
756index 3b46b5d..a410fef 100644
757--- a/modules/database/src/std/dev/devHistogramSoft.c
758+++ b/modules/database/src/std/dev/devHistogramSoft.c
759@@ -28,29 +28,19 @@
760 #include "epicsExport.h"
761
762 /* Create the dset for devHistogramSoft */
763-static long init_record(histogramRecord *prec);
764+static long init_record(dbCommon *pcommon);
765 static long read_histogram(histogramRecord *prec);
766-struct {
767- long number;
768- DEVSUPFUN report;
769- DEVSUPFUN init;
770- DEVSUPFUN init_record;
771- DEVSUPFUN get_ioint_info;
772- DEVSUPFUN read_histogram;
773- DEVSUPFUN special_linconv;
774-}devHistogramSoft={
775- 6,
776- NULL,
777- NULL,
778- init_record,
779- NULL,
780- read_histogram,
781- NULL
782+
783+histogramdset devHistogramSoft = {
784+ {6, NULL, NULL, init_record, NULL},
785+ read_histogram, NULL
786 };
787-epicsExportAddress(dset,devHistogramSoft);
788-
789
790-static long init_record(histogramRecord *prec)
791+epicsExportAddress(dset, devHistogramSoft);
792+
793+static long init_record(dbCommon *pcommon)
794 {
795+ histogramRecord *prec = (histogramRecord *)pcommon;
796+
797 if (recGblInitConstantLink(&prec->svl,DBF_DOUBLE,&prec->sgnl))
798 prec->udf = FALSE;
799
800diff --git a/modules/database/src/std/dev/devLiSoft.c b/modules/database/src/std/dev/devLiSoft.c
801index 6d7b7fd..4c9912b 100644
802--- a/modules/database/src/std/dev/devLiSoft.c
803+++ b/modules/database/src/std/dev/devLiSoft.c
804@@ -25,28 +25,19 @@
805 #include "epicsExport.h"
806
807 /* Create the dset for devLiSoft */
808-static long init_record(longinRecord *prec);
809+static long init_record(dbCommon *pcommon);
810 static long read_longin(longinRecord *prec);
811
812-struct {
813- long number;
814- DEVSUPFUN report;
815- DEVSUPFUN init;
816- DEVSUPFUN init_record;
817- DEVSUPFUN get_ioint_info;
818- DEVSUPFUN read_longin;
819-} devLiSoft = {
820- 5,
821- NULL,
822- NULL,
823- init_record,
824- NULL,
825+longindset devLiSoft = {
826+ {5, NULL, NULL, init_record, NULL},
827 read_longin
828 };
829 epicsExportAddress(dset, devLiSoft);
830
831-static long init_record(longinRecord *prec)
832+static long init_record(dbCommon *pcommon)
833 {
834+ longinRecord *prec = (longinRecord *)pcommon;
835+
836 if (recGblInitConstantLink(&prec->inp, DBF_LONG, &prec->val))
837 prec->udf = FALSE;
838
839diff --git a/modules/database/src/std/dev/devLiSoftCallback.c b/modules/database/src/std/dev/devLiSoftCallback.c
840index d833939..b7f7cee 100644
841--- a/modules/database/src/std/dev/devLiSoftCallback.c
842+++ b/modules/database/src/std/dev/devLiSoftCallback.c
843@@ -151,8 +151,10 @@ static long init(int pass)
844 return 0;
845 }
846
847-static long init_record(longinRecord *prec)
848+static long init_record(dbCommon *pcommon)
849 {
850+ longinRecord *prec = (longinRecord *)pcommon;
851+
852 if (recGblInitConstantLink(&prec->inp, DBR_LONG, &prec->val))
853 prec->udf = FALSE;
854
855@@ -204,10 +206,7 @@ static long read_li(longinRecord *prec)
856 }
857
858 /* Create the dset for devLiSoftCallback */
859-struct {
860- dset common;
861- DEVSUPFUN read_li;
862-} devLiSoftCallback = {
863+longindset devLiSoftCallback = {
864 {5, NULL, init, init_record, NULL},
865 read_li
866 };
867diff --git a/modules/database/src/std/dev/devLoSoft.c b/modules/database/src/std/dev/devLoSoft.c
868index af49c60..c9b8fe3 100644
869--- a/modules/database/src/std/dev/devLoSoft.c
870+++ b/modules/database/src/std/dev/devLoSoft.c
871@@ -26,26 +26,16 @@
872 #include "epicsExport.h"
873
874 /* Create the dset for devLoSoft */
875-static long init_record(longoutRecord *prec);
876+static long init_record(dbCommon *pcommon);
877 static long write_longout(longoutRecord *prec);
878-struct {
879- long number;
880- DEVSUPFUN report;
881- DEVSUPFUN init;
882- DEVSUPFUN init_record;
883- DEVSUPFUN get_ioint_info;
884- DEVSUPFUN write_longout;
885-}devLoSoft={
886- 5,
887- NULL,
888- NULL,
889- init_record,
890- NULL,
891- write_longout
892+
893+longoutdset devLoSoft = {
894+ {5, NULL, NULL, init_record, NULL},
895+ write_longout
896 };
897-epicsExportAddress(dset,devLoSoft);
898-
899
900-static long init_record(longoutRecord *prec)
901+epicsExportAddress(dset, devLoSoft);
902+
903+static long init_record(dbCommon *pcommon)
904 {
905 return 0;
906 } /* end init_record() */
907diff --git a/modules/database/src/std/dev/devLoSoftCallback.c b/modules/database/src/std/dev/devLoSoftCallback.c
908index f211957..3883e19 100644
909--- a/modules/database/src/std/dev/devLoSoftCallback.c
910+++ b/modules/database/src/std/dev/devLoSoftCallback.c
911@@ -29,22 +29,12 @@
912
913 /* Create the dset for devLoSoftCallback */
914 static long write_longout(longoutRecord *prec);
915-struct {
916- long number;
917- DEVSUPFUN report;
918- DEVSUPFUN init;
919- DEVSUPFUN init_record;
920- DEVSUPFUN get_ioint_info;
921- DEVSUPFUN write_longout;
922-}devLoSoftCallback={
923- 5,
924- NULL,
925- NULL,
926- NULL,
927- NULL,
928- write_longout
929+
930+longoutdset devLoSoftCallback = {
931+ {5, NULL, NULL, NULL, NULL},
932+ write_longout
933 };
934-epicsExportAddress(dset,devLoSoftCallback);
935+epicsExportAddress(dset, devLoSoftCallback);
936
937 static long write_longout(longoutRecord *prec)
938 {
939@@ -62,4 +52,3 @@ static long write_longout(longoutRecord *prec)
940
941 return status;
942 }
943-
944diff --git a/modules/database/src/std/dev/devMbbiDirectSoft.c b/modules/database/src/std/dev/devMbbiDirectSoft.c
945index 861952f..2138500 100644
946--- a/modules/database/src/std/dev/devMbbiDirectSoft.c
947+++ b/modules/database/src/std/dev/devMbbiDirectSoft.c
948@@ -25,28 +25,19 @@
949 #include "epicsExport.h"
950
951 /* Create the dset for devMbbiDirectSoft */
952-static long init_record(mbbiDirectRecord *prec);
953+static long init_record(dbCommon *pcommon);
954 static long read_mbbi(mbbiDirectRecord *prec);
955
956-struct {
957- long number;
958- DEVSUPFUN report;
959- DEVSUPFUN init;
960- DEVSUPFUN init_record;
961- DEVSUPFUN get_ioint_info;
962- DEVSUPFUN read_mbbi;
963-} devMbbiDirectSoft = {
964- 5,
965- NULL,
966- NULL,
967- init_record,
968- NULL,
969+mbbidirectdset devMbbiDirectSoft = {
970+ {5, NULL, NULL, init_record, NULL},
971 read_mbbi
972 };
973 epicsExportAddress(dset, devMbbiDirectSoft);
974
975-static long init_record(mbbiDirectRecord *prec)
976+static long init_record(dbCommon *pcommon)
977 {
978+ mbbiDirectRecord *prec = (mbbiDirectRecord *)pcommon;
979+
980 if (recGblInitConstantLink(&prec->inp, DBR_ULONG, &prec->val))
981 prec->udf = FALSE;
982
983diff --git a/modules/database/src/std/dev/devMbbiDirectSoftCallback.c b/modules/database/src/std/dev/devMbbiDirectSoftCallback.c
984index e40a6b0..7c9850b 100644
985--- a/modules/database/src/std/dev/devMbbiDirectSoftCallback.c
986+++ b/modules/database/src/std/dev/devMbbiDirectSoftCallback.c
987@@ -151,8 +151,10 @@ static long init(int pass)
988 return 0;
989 }
990
991-static long init_record(mbbiDirectRecord *prec)
992+static long init_record(dbCommon *pcommon)
993 {
994+ mbbiDirectRecord *prec = (mbbiDirectRecord *)pcommon;
995+
996 if (recGblInitConstantLink(&prec->inp, DBR_ULONG, &prec->val))
997 prec->udf = FALSE;
998
999@@ -204,10 +206,7 @@ static long read_mbbiDirect(mbbiDirectRecord *prec)
1000 }
1001
1002 /* Create the dset for devMbbiDirectSoftCallback */
1003-struct {
1004- dset common;
1005- DEVSUPFUN read_mbbiDirect;
1006-} devMbbiDirectSoftCallback = {
1007+mbbidirectdset devMbbiDirectSoftCallback = {
1008 {5, NULL, init, init_record, NULL},
1009 read_mbbiDirect
1010 };
1011diff --git a/modules/database/src/std/dev/devMbbiDirectSoftRaw.c b/modules/database/src/std/dev/devMbbiDirectSoftRaw.c
1012index 98b4673..0075686 100644
1013--- a/modules/database/src/std/dev/devMbbiDirectSoftRaw.c
1014+++ b/modules/database/src/std/dev/devMbbiDirectSoftRaw.c
1015@@ -25,28 +25,19 @@
1016 #include "epicsExport.h"
1017
1018 /* Create the dset for devMbbiDirectSoftRaw */
1019-static long init_record(mbbiDirectRecord *prec);
1020+static long init_record(dbCommon *pcommon);
1021 static long read_mbbi(mbbiDirectRecord *prec);
1022
1023-struct {
1024- long number;
1025- DEVSUPFUN report;
1026- DEVSUPFUN init;
1027- DEVSUPFUN init_record;
1028- DEVSUPFUN get_ioint_info;
1029- DEVSUPFUN read_mbbi;
1030-} devMbbiDirectSoftRaw = {
1031- 5,
1032- NULL,
1033- NULL,
1034- init_record,
1035- NULL,
1036+mbbidirectdset devMbbiDirectSoftRaw = {
1037+ {5, NULL, NULL, init_record, NULL},
1038 read_mbbi
1039 };
1040 epicsExportAddress(dset, devMbbiDirectSoftRaw);
1041
1042-static long init_record(mbbiDirectRecord *prec)
1043+static long init_record(dbCommon *pcommon)
1044 {
1045+ mbbiDirectRecord *prec = (mbbiDirectRecord *)pcommon;
1046+
1047 recGblInitConstantLink(&prec->inp, DBF_ULONG, &prec->rval);
1048
1049 /* Preserve old functionality */
1050diff --git a/modules/database/src/std/dev/devMbbiSoft.c b/modules/database/src/std/dev/devMbbiSoft.c
1051index b0b5714..d1e0716 100644
1052--- a/modules/database/src/std/dev/devMbbiSoft.c
1053+++ b/modules/database/src/std/dev/devMbbiSoft.c
1054@@ -25,28 +25,19 @@
1055 #include "epicsExport.h"
1056
1057 /* Create the dset for devMbbiSoft */
1058-static long init_record(mbbiRecord *prec);
1059+static long init_record(dbCommon *pcommon);
1060 static long read_mbbi(mbbiRecord *prec);
1061
1062-struct {
1063- long number;
1064- DEVSUPFUN report;
1065- DEVSUPFUN init;
1066- DEVSUPFUN init_record;
1067- DEVSUPFUN get_ioint_info;
1068- DEVSUPFUN read_mbbi;
1069-} devMbbiSoft = {
1070- 5,
1071- NULL,
1072- NULL,
1073- init_record,
1074- NULL,
1075+mbbidset devMbbiSoft = {
1076+ {5, NULL, NULL, init_record, NULL},
1077 read_mbbi
1078 };
1079 epicsExportAddress(dset, devMbbiSoft);
1080
1081-static long init_record(mbbiRecord *prec)
1082+static long init_record(dbCommon *pcommon)
1083 {
1084+ mbbiRecord *prec = (mbbiRecord *)pcommon;
1085+
1086 if (recGblInitConstantLink(&prec->inp, DBF_ENUM, &prec->val))
1087 prec->udf = FALSE;
1088
1089diff --git a/modules/database/src/std/dev/devMbbiSoftCallback.c b/modules/database/src/std/dev/devMbbiSoftCallback.c
1090index fee81b5..6466b4c 100644
1091--- a/modules/database/src/std/dev/devMbbiSoftCallback.c
1092+++ b/modules/database/src/std/dev/devMbbiSoftCallback.c
1093@@ -151,8 +151,10 @@ static long init(int pass)
1094 return 0;
1095 }
1096
1097-static long init_record(mbbiRecord *prec)
1098+static long init_record(dbCommon *pcommon)
1099 {
1100+ mbbiRecord *prec = (mbbiRecord *)pcommon;
1101+
1102 if (recGblInitConstantLink(&prec->inp, DBR_ENUM, &prec->val))
1103 prec->udf = FALSE;
1104
1105@@ -204,11 +206,8 @@ static long read_mbbi(mbbiRecord *prec)
1106 }
1107
1108 /* Create the dset for devMbbiSoftCallback */
1109-struct {
1110- dset common;
1111- DEVSUPFUN read_mbbi;
1112-} devMbbiSoftCallback = {
1113+mbbidset devMbbiSoftCallback = {
1114 {5, NULL, init, init_record, NULL},
1115 read_mbbi
1116 };
1117-epicsExportAddress(dset,devMbbiSoftCallback);
1118+epicsExportAddress(dset, devMbbiSoftCallback);
1119diff --git a/modules/database/src/std/dev/devMbbiSoftRaw.c b/modules/database/src/std/dev/devMbbiSoftRaw.c
1120index 3bd6b21..40617ab 100644
1121--- a/modules/database/src/std/dev/devMbbiSoftRaw.c
1122+++ b/modules/database/src/std/dev/devMbbiSoftRaw.c
1123@@ -25,28 +25,19 @@
1124 #include "epicsExport.h"
1125
1126 /* Create the dset for devMbbiSoftRaw */
1127-static long init_record(mbbiRecord *prec);
1128+static long init_record(dbCommon *pcommon);
1129 static long read_mbbi(mbbiRecord *prec);
1130
1131-struct {
1132- long number;
1133- DEVSUPFUN report;
1134- DEVSUPFUN init;
1135- DEVSUPFUN init_record;
1136- DEVSUPFUN get_ioint_info;
1137- DEVSUPFUN read_mbbi;
1138-} devMbbiSoftRaw = {
1139- 5,
1140- NULL,
1141- NULL,
1142- init_record,
1143- NULL,
1144+mbbidset devMbbiSoftRaw = {
1145+ {5, NULL, NULL, init_record, NULL},
1146 read_mbbi
1147 };
1148 epicsExportAddress(dset, devMbbiSoftRaw);
1149
1150-static long init_record(mbbiRecord *prec)
1151+static long init_record(dbCommon *pcommon)
1152 {
1153+ mbbiRecord *prec = (mbbiRecord *)pcommon;
1154+
1155 recGblInitConstantLink(&prec->inp, DBF_ULONG, &prec->rval);
1156
1157 /* Preserve old functionality*/
1158diff --git a/modules/database/src/std/dev/devMbboDirectSoft.c b/modules/database/src/std/dev/devMbboDirectSoft.c
1159index 75359f2..dc769b2 100644
1160--- a/modules/database/src/std/dev/devMbboDirectSoft.c
1161+++ b/modules/database/src/std/dev/devMbboDirectSoft.c
1162@@ -26,10 +26,7 @@ static long write_mbbo(mbboDirectRecord *prec)
1163 }
1164
1165 /* Create the dset for devMbboDirectSoft */
1166-struct {
1167- dset common;
1168- DEVSUPFUN write;
1169-} devMbboDirectSoft = {
1170+mbbodirectdset devMbboDirectSoft = {
1171 {5, NULL, NULL, NULL, NULL},
1172 write_mbbo
1173 };
1174diff --git a/modules/database/src/std/dev/devMbboDirectSoftCallback.c b/modules/database/src/std/dev/devMbboDirectSoftCallback.c
1175index 6d86507..18d9b9c 100644
1176--- a/modules/database/src/std/dev/devMbboDirectSoftCallback.c
1177+++ b/modules/database/src/std/dev/devMbboDirectSoftCallback.c
1178@@ -38,11 +38,8 @@ static long write_mbbo(mbboDirectRecord *prec)
1179 return status;
1180 }
1181
1182-/* Create the dset for devMbboSoft */
1183-struct {
1184- dset common;
1185- DEVSUPFUN write;
1186-} devMbboDirectSoftCallback = {
1187+/* Create the dset for devMbboDirectSoftCallback */
1188+mbbodirectdset devMbboDirectSoftCallback = {
1189 {5, NULL, NULL, NULL, NULL},
1190 write_mbbo
1191 };
1192diff --git a/modules/database/src/std/dev/devMbboDirectSoftRaw.c b/modules/database/src/std/dev/devMbboDirectSoftRaw.c
1193index c3bbdc8..f3d45a7 100644
1194--- a/modules/database/src/std/dev/devMbboDirectSoftRaw.c
1195+++ b/modules/database/src/std/dev/devMbboDirectSoftRaw.c
1196@@ -20,8 +20,10 @@
1197 #include "mbboDirectRecord.h"
1198 #include "epicsExport.h"
1199
1200-static long init_record(mbboDirectRecord *prec)
1201+static long init_record(dbCommon *pcommon)
1202 {
1203+ mbboDirectRecord *prec = (mbboDirectRecord *)pcommon;
1204+
1205 if (prec->nobt == 0)
1206 prec->mask = 0xffffffff;
1207
1208@@ -40,10 +42,7 @@ static long write_mbbo(mbboDirectRecord *prec)
1209 }
1210
1211 /* Create the dset for devMbboDirectSoftRaw */
1212-struct {
1213- dset common;
1214- DEVSUPFUN write;
1215-} devMbboDirectSoftRaw = {
1216+mbbodirectdset devMbboDirectSoftRaw = {
1217 {5, NULL, NULL, init_record, NULL},
1218 write_mbbo
1219 };
1220diff --git a/modules/database/src/std/dev/devMbboSoft.c b/modules/database/src/std/dev/devMbboSoft.c
1221index b2fe6b0..dfe8569 100644
1222--- a/modules/database/src/std/dev/devMbboSoft.c
1223+++ b/modules/database/src/std/dev/devMbboSoft.c
1224@@ -27,26 +27,16 @@
1225 #include "epicsExport.h"
1226
1227 /* Create the dset for devMbboSoft */
1228-static long init_record(mbboRecord *prec);
1229+static long init_record(dbCommon *pcommon);
1230 static long write_mbbo(mbboRecord *prec);
1231-struct {
1232- long number;
1233- DEVSUPFUN report;
1234- DEVSUPFUN init;
1235- DEVSUPFUN init_record;
1236- DEVSUPFUN get_ioint_info;
1237- DEVSUPFUN write_mbbo;
1238-}devMbboSoft={
1239- 5,
1240- NULL,
1241- NULL,
1242- init_record,
1243- NULL,
1244- write_mbbo
1245+
1246+mbbodset devMbboSoft = {
1247+ {5, NULL, NULL, init_record, NULL},
1248+ write_mbbo
1249 };
1250-epicsExportAddress(dset,devMbboSoft);
1251-
1252
1253-static long init_record(mbboRecord *prec)
1254+epicsExportAddress(dset, devMbboSoft);
1255+
1256+static long init_record(dbCommon *pcommon)
1257 {
1258 /*dont convert*/
1259 return 2;
1260diff --git a/modules/database/src/std/dev/devMbboSoftCallback.c b/modules/database/src/std/dev/devMbboSoftCallback.c
1261index fd5fe40..d5f2f1c 100644
1262--- a/modules/database/src/std/dev/devMbboSoftCallback.c
1263+++ b/modules/database/src/std/dev/devMbboSoftCallback.c
1264@@ -28,22 +28,12 @@
1265
1266 /* Create the dset for devMbboSoftCallback */
1267 static long write_mbbo(mbboRecord *prec);
1268-struct {
1269- long number;
1270- DEVSUPFUN report;
1271- DEVSUPFUN init;
1272- DEVSUPFUN init_record;
1273- DEVSUPFUN get_ioint_info;
1274- DEVSUPFUN write_mbbo;
1275-}devMbboSoftCallback={
1276- 5,
1277- NULL,
1278- NULL,
1279- NULL,
1280- NULL,
1281- write_mbbo
1282+
1283+mbbodset devMbboSoftCallback = {
1284+ {5, NULL, NULL, NULL, NULL},
1285+ write_mbbo
1286 };
1287-epicsExportAddress(dset,devMbboSoftCallback);
1288+epicsExportAddress(dset, devMbboSoftCallback);
1289
1290 static long write_mbbo(mbboRecord *prec)
1291 {
1292diff --git a/modules/database/src/std/dev/devMbboSoftRaw.c b/modules/database/src/std/dev/devMbboSoftRaw.c
1293index 092b6a8..2813ca9 100644
1294--- a/modules/database/src/std/dev/devMbboSoftRaw.c
1295+++ b/modules/database/src/std/dev/devMbboSoftRaw.c
1296@@ -20,8 +20,10 @@
1297 #include "mbboRecord.h"
1298 #include "epicsExport.h"
1299
1300-static long init_record(mbboRecord *prec)
1301+static long init_record(dbCommon *pcommon)
1302 {
1303+ mbboRecord *prec = (mbboRecord *)pcommon;
1304+
1305 if (prec->nobt == 0)
1306 prec->mask = 0xffffffff;
1307
1308@@ -40,10 +42,7 @@ static long write_mbbo(mbboRecord *prec)
1309 }
1310
1311 /* Create the dset for devMbboSoftRaw */
1312-struct {
1313- dset common;
1314- DEVSUPFUN write;
1315-} devMbboSoftRaw = {
1316+mbbodset devMbboSoftRaw = {
1317 {5, NULL, NULL, init_record, NULL},
1318 write_mbbo
1319 };
1320diff --git a/modules/database/src/std/dev/devSASoft.c b/modules/database/src/std/dev/devSASoft.c
1321index 69894dd..be32af4 100644
1322--- a/modules/database/src/std/dev/devSASoft.c
1323+++ b/modules/database/src/std/dev/devSASoft.c
1324@@ -26,22 +26,11 @@
1325 #include "epicsExport.h"
1326
1327 /* Create the dset for devSASoft */
1328-static long init_record(subArrayRecord *prec);
1329+static long init_record(dbCommon *pcommon);
1330 static long read_sa(subArrayRecord *prec);
1331
1332-struct {
1333- long number;
1334- DEVSUPFUN report;
1335- DEVSUPFUN init;
1336- DEVSUPFUN init_record;
1337- DEVSUPFUN get_ioint_info;
1338- DEVSUPFUN read_sa;
1339-} devSASoft = {
1340- 5,
1341- NULL,
1342- NULL,
1343- init_record,
1344- NULL,
1345+sadset devSASoft = {
1346+ {5, NULL, NULL, init_record, NULL},
1347 read_sa
1348 };
1349 epicsExportAddress(dset, devSASoft);
1350@@ -65,8 +54,9 @@ static void subset(subArrayRecord *prec, long nRequest)
1351 prec->udf = FALSE;
1352 }
1353
1354-static long init_record(subArrayRecord *prec)
1355+static long init_record(dbCommon *pcommon)
1356 {
1357+ subArrayRecord *prec = (subArrayRecord *)pcommon;
1358 long nRequest = prec->indx + prec->nelm;
1359 long status;
1360
1361diff --git a/modules/database/src/std/dev/devSiSoft.c b/modules/database/src/std/dev/devSiSoft.c
1362index 5141c10..7b97803 100644
1363--- a/modules/database/src/std/dev/devSiSoft.c
1364+++ b/modules/database/src/std/dev/devSiSoft.c
1365@@ -27,28 +27,19 @@
1366 #include "epicsExport.h"
1367
1368 /* Create the dset for devSiSoft */
1369-static long init_record(stringinRecord *prec);
1370+static long init_record(dbCommon *pcommon);
1371 static long read_stringin(stringinRecord *prec);
1372
1373-struct {
1374- long number;
1375- DEVSUPFUN report;
1376- DEVSUPFUN init;
1377- DEVSUPFUN init_record;
1378- DEVSUPFUN get_ioint_info;
1379- DEVSUPFUN read_stringin;
1380-} devSiSoft = {
1381- 5,
1382- NULL,
1383- NULL,
1384- init_record,
1385- NULL,
1386+stringindset devSiSoft = {
1387+ {5, NULL, NULL, init_record, NULL},
1388 read_stringin
1389 };
1390 epicsExportAddress(dset, devSiSoft);
1391
1392-static long init_record(stringinRecord *prec)
1393+static long init_record(dbCommon *pcommon)
1394 {
1395+ stringinRecord *prec = (stringinRecord *)pcommon;
1396+
1397 if (recGblInitConstantLink(&prec->inp, DBF_STRING, prec->val))
1398 prec->udf = FALSE;
1399
1400diff --git a/modules/database/src/std/dev/devSiSoftCallback.c b/modules/database/src/std/dev/devSiSoftCallback.c
1401index fd0e376..303e1be 100644
1402--- a/modules/database/src/std/dev/devSiSoftCallback.c
1403+++ b/modules/database/src/std/dev/devSiSoftCallback.c
1404@@ -153,8 +153,10 @@ static long init(int pass)
1405 return 0;
1406 }
1407
1408-static long init_record(stringinRecord *prec)
1409+static long init_record(dbCommon *pcommon)
1410 {
1411+ stringinRecord *prec = (stringinRecord *)pcommon;
1412+
1413 if (recGblInitConstantLink(&prec->inp, DBR_STRING, &prec->val))
1414 prec->udf = FALSE;
1415
1416@@ -207,11 +209,8 @@ static long read_si(stringinRecord *prec)
1417 }
1418
1419 /* Create the dset for devSiSoftCallback */
1420-struct {
1421- dset common;
1422- DEVSUPFUN read_li;
1423-} devSiSoftCallback = {
1424+stringindset devSiSoftCallback = {
1425 {5, NULL, init, init_record, NULL},
1426 read_si
1427 };
1428-epicsExportAddress(dset,devSiSoftCallback);
1429+epicsExportAddress(dset, devSiSoftCallback);
1430diff --git a/modules/database/src/std/dev/devSoSoft.c b/modules/database/src/std/dev/devSoSoft.c
1431index 6dda4a7..5af5a52 100644
1432--- a/modules/database/src/std/dev/devSoSoft.c
1433+++ b/modules/database/src/std/dev/devSoSoft.c
1434@@ -27,19 +27,9 @@
1435
1436 /* Create the dset for devSoSoft */
1437 static long write_stringout(stringoutRecord *prec);
1438-struct {
1439- long number;
1440- DEVSUPFUN report;
1441- DEVSUPFUN init;
1442- DEVSUPFUN init_record;
1443- DEVSUPFUN get_ioint_info;
1444- DEVSUPFUN write_stringout;
1445-} devSoSoft = {
1446- 5,
1447- NULL,
1448- NULL,
1449- NULL,
1450- NULL,
1451+
1452+stringoutdset devSoSoft = {
1453+ {5, NULL, NULL, NULL, NULL},
1454 write_stringout
1455 };
1456 epicsExportAddress(dset, devSoSoft);
1457diff --git a/modules/database/src/std/dev/devSoSoftCallback.c b/modules/database/src/std/dev/devSoSoftCallback.c
1458index df8c5d8..ceae801 100644
1459--- a/modules/database/src/std/dev/devSoSoftCallback.c
1460+++ b/modules/database/src/std/dev/devSoSoftCallback.c
1461@@ -27,19 +27,9 @@
1462
1463 /* Create the dset for devSoSoftCallback */
1464 static long write_stringout(stringoutRecord *prec);
1465-struct {
1466- long number;
1467- DEVSUPFUN report;
1468- DEVSUPFUN init;
1469- DEVSUPFUN init_record;
1470- DEVSUPFUN get_ioint_info;
1471- DEVSUPFUN write_stringout;
1472-} devSoSoftCallback = {
1473- 5,
1474- NULL,
1475- NULL,
1476- NULL,
1477- NULL,
1478+
1479+stringoutdset devSoSoftCallback = {
1480+ {5, NULL, NULL, NULL, NULL},
1481 write_stringout
1482 };
1483 epicsExportAddress(dset, devSoSoftCallback);
1484@@ -60,4 +50,3 @@ static long write_stringout(stringoutRecord *prec)
1485
1486 return status;
1487 }
1488-
1489diff --git a/modules/database/src/std/dev/devStdio.c b/modules/database/src/std/dev/devStdio.c
1490index 928c8a4..d8646d9 100644
1491--- a/modules/database/src/std/dev/devStdio.c
1492+++ b/modules/database/src/std/dev/devStdio.c
1493@@ -202,10 +202,8 @@ static long write_stringout(stringoutRecord *prec)
1494 return 0;
1495 }
1496
1497-static struct {
1498- dset common;
1499- DEVSUPFUN write;
1500-} devSoStdio = {
1501- {5, NULL, init_stringout, NULL, NULL}, write_stringout
1502+stringoutdset devSoStdio = {
1503+ {5, NULL, init_stringout, NULL, NULL},
1504+ write_stringout
1505 };
1506 epicsExportAddress(dset, devSoStdio);
1507diff --git a/modules/database/src/std/dev/devTimestamp.c b/modules/database/src/std/dev/devTimestamp.c
1508index bcab266..06f694e 100644
1509--- a/modules/database/src/std/dev/devTimestamp.c
1510+++ b/modules/database/src/std/dev/devTimestamp.c
1511@@ -65,10 +65,7 @@ static long read_stringin (stringinRecord *prec)
1512 return 0;
1513 }
1514
1515-struct {
1516- dset common;
1517- DEVSUPFUN read_stringin;
1518-} devTimestampSI = {
1519+stringindset devTimestampSI = {
1520 {5, NULL, initAllow, NULL, NULL},
1521 read_stringin
1522 };
1523diff --git a/modules/database/src/std/dev/devWfSoft.c b/modules/database/src/std/dev/devWfSoft.c
1524index 5b52151..0a089b8 100644
1525--- a/modules/database/src/std/dev/devWfSoft.c
1526+++ b/modules/database/src/std/dev/devWfSoft.c
1527@@ -26,28 +26,18 @@
1528 #include "epicsExport.h"
1529
1530 /* Create the dset for devWfSoft */
1531-static long init_record(waveformRecord *prec);
1532+static long init_record(dbCommon *pcommon);
1533 static long read_wf(waveformRecord *prec);
1534
1535-struct {
1536- long number;
1537- DEVSUPFUN report;
1538- DEVSUPFUN init;
1539- DEVSUPFUN init_record;
1540- DEVSUPFUN get_ioint_info;
1541- DEVSUPFUN read_wf;
1542-} devWfSoft = {
1543- 5,
1544- NULL,
1545- NULL,
1546- init_record,
1547- NULL,
1548+wfdset devWfSoft = {
1549+ {5, NULL, NULL, init_record, NULL},
1550 read_wf
1551 };
1552 epicsExportAddress(dset, devWfSoft);
1553
1554-static long init_record(waveformRecord *prec)
1555+static long init_record(dbCommon *pcommon)
1556 {
1557+ waveformRecord *prec = (waveformRecord *)pcommon;
1558 long nelm = prec->nelm;
1559 long status = dbLoadLinkArray(&prec->inp, prec->ftvl, prec->bptr, &nelm);
1560
1561diff --git a/modules/database/src/std/rec/Makefile b/modules/database/src/std/rec/Makefile
1562index e6277fb..51f54db 100644
1563--- a/modules/database/src/std/rec/Makefile
1564+++ b/modules/database/src/std/rec/Makefile
1565@@ -11,34 +11,48 @@
1566
1567 SRC_DIRS += $(STDDIR)/rec
1568
1569+aaiRecord_CFLAGS += -DUSE_TYPED_DSET
1570 stdRecords += aaiRecord
1571+aaoRecord_CFLAGS += -DUSE_TYPED_DSET
1572 stdRecords += aaoRecord
1573 aiRecord_CFLAGS += -DUSE_TYPED_DSET
1574 stdRecords += aiRecord
1575+aoRecord_CFLAGS += -DUSE_TYPED_DSET
1576 stdRecords += aoRecord
1577 stdRecords += aSubRecord
1578+biRecord_CFLAGS += -DUSE_TYPED_DSET
1579 stdRecords += biRecord
1580+boRecord_CFLAGS += -DUSE_TYPED_DSET
1581 stdRecords += boRecord
1582 stdRecords += calcRecord
1583+calcoutRecord_CFLAGS += -DUSE_TYPED_DSET
1584 stdRecords += calcoutRecord
1585 stdRecords += compressRecord
1586 stdRecords += dfanoutRecord
1587+eventRecord_CFLAGS += -DUSE_TYPED_DSET
1588 stdRecords += eventRecord
1589 stdRecords += fanoutRecord
1590+histogramRecord_CFLAGS += -DUSE_TYPED_DSET
1591 stdRecords += histogramRecord
1592 int64inRecord_CFLAGS += -DUSE_TYPED_DSET
1593 stdRecords += int64inRecord
1594 int64outRecord_CFLAGS += -DUSE_TYPED_DSET
1595 stdRecords += int64outRecord
1596+longinRecord_CFLAGS += -DUSE_TYPED_DSET
1597 stdRecords += longinRecord
1598+longoutRecord_CFLAGS += -DUSE_TYPED_DSET
1599 stdRecords += longoutRecord
1600 lsiRecord_CFLAGS += -DUSE_TYPED_DSET
1601 stdRecords += lsiRecord
1602 lsoRecord_CFLAGS += -DUSE_TYPED_DSET
1603 stdRecords += lsoRecord
1604+mbbiRecord_CFLAGS += -DUSE_TYPED_DSET
1605 stdRecords += mbbiRecord
1606+mbbiDirectRecord_CFLAGS += -DUSE_TYPED_DSET
1607 stdRecords += mbbiDirectRecord
1608+mbboRecord_CFLAGS += -DUSE_TYPED_DSET
1609 stdRecords += mbboRecord
1610+mbboDirectRecord_CFLAGS += -DUSE_TYPED_DSET
1611 stdRecords += mbboDirectRecord
1612 stdRecords += permissiveRecord
1613 printfRecord_CFLAGS += -DUSE_TYPED_DSET
1614@@ -47,9 +61,12 @@ stdRecords += selRecord
1615 stdRecords += seqRecord
1616 stdRecords += stateRecord
1617 stdRecords += stringinRecord
1618+stringoutRecord_CFLAGS += -DUSE_TYPED_DSET
1619 stdRecords += stringoutRecord
1620 stdRecords += subRecord
1621+subArrayRecord_CFLAGS += -DUSE_TYPED_DSET
1622 stdRecords += subArrayRecord
1623+waveformRecord_CFLAGS += -DUSE_TYPED_DSET
1624 stdRecords += waveformRecord
1625
1626 DBDINC += $(stdRecords)
1627diff --git a/modules/database/src/std/rec/aaiRecord.c b/modules/database/src/std/rec/aaiRecord.c
1628index 51af45f..e8143ae 100644
1629--- a/modules/database/src/std/rec/aaiRecord.c
1630+++ b/modules/database/src/std/rec/aaiRecord.c
1631@@ -90,22 +90,13 @@ rset aaiRSET={
1632 };
1633 epicsExportAddress(rset,aaiRSET);
1634
1635-struct aaidset { /* aai dset */
1636- long number;
1637- DEVSUPFUN dev_report;
1638- DEVSUPFUN init;
1639- DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
1640- DEVSUPFUN get_ioint_info;
1641- DEVSUPFUN read_aai; /*returns: (-1,0)=>(failure,success)*/
1642-};
1643-
1644 static void monitor(aaiRecord *);
1645 static long readValue(aaiRecord *);
1646
1647 static long init_record(struct dbCommon *pcommon, int pass)
1648 {
1649 struct aaiRecord *prec = (struct aaiRecord *)pcommon;
1650- struct aaidset *pdset = (struct aaidset *)(prec->dset);
1651+ aaidset *pdset = (aaidset *)(prec->dset);
1652
1653 /* must have dset defined */
1654 if (!pdset) {
1655@@ -125,8 +116,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
1656 not change after links are established before pass 1
1657 */
1658
1659- if (pdset->init_record) {
1660- long status = pdset->init_record(prec);
1661+ if (pdset->common.init_record) {
1662+ long status = pdset->common.init_record(pcommon);
1663
1664 /* init_record may set the bptr to point to the data */
1665 if (status)
1666@@ -143,7 +134,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
1667 recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
1668
1669 /* must have read_aai function defined */
1670- if (pdset->number < 5 || pdset->read_aai == NULL) {
1671+ if (pdset->common.number < 5 || pdset->read_aai == NULL) {
1672 recGblRecordError(S_dev_missingSup, prec, "aai: init_record");
1673 return S_dev_missingSup;
1674 }
1675@@ -153,7 +144,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
1676 static long process(struct dbCommon *pcommon)
1677 {
1678 struct aaiRecord *prec = (struct aaiRecord *)pcommon;
1679- struct aaidset *pdset = (struct aaidset *)(prec->dset);
1680+ aaidset *pdset = (aaidset *)(prec->dset);
1681 long status;
1682 unsigned char pact = prec->pact;
1683
1684@@ -339,7 +330,7 @@ static void monitor(aaiRecord *prec)
1685
1686 static long readValue(aaiRecord *prec)
1687 {
1688- struct aaidset *pdset = (struct aaidset *) prec->dset;
1689+ aaidset *pdset = (aaidset *) prec->dset;
1690 long status;
1691
1692 /* NB: Device support must post updates to NORD */
1693diff --git a/modules/database/src/std/rec/aaiRecord.dbd b/modules/database/src/std/rec/aaiRecord.dbd
1694index b4675b3..bc29209 100644
1695--- a/modules/database/src/std/rec/aaiRecord.dbd
1696+++ b/modules/database/src/std/rec/aaiRecord.dbd
1697@@ -12,6 +12,15 @@ menu(aaiPOST) {
1698 }
1699 recordtype(aai) {
1700 include "dbCommon.dbd"
1701+ %
1702+ %/* Declare Device Support Entry Table */
1703+ %struct aaiRecord;
1704+ %typedef struct aaidset {
1705+ % dset common; /*init_record returns: (-1,0)=>(failure,success)*/
1706+ % long (*read_aai)(struct aaiRecord *prec); /*returns: (-1,0)=>(failure,success)*/
1707+ %} aaidset;
1708+ %#define HAS_aaidset
1709+ %
1710 field(VAL,DBF_NOACCESS) {
1711 prompt("Value")
1712 asl(ASL0)
1713diff --git a/modules/database/src/std/rec/aaoRecord.c b/modules/database/src/std/rec/aaoRecord.c
1714index ccf0517..feb4e34 100644
1715--- a/modules/database/src/std/rec/aaoRecord.c
1716+++ b/modules/database/src/std/rec/aaoRecord.c
1717@@ -90,22 +90,13 @@ rset aaoRSET={
1718 };
1719 epicsExportAddress(rset,aaoRSET);
1720
1721-struct aaodset { /* aao dset */
1722- long number;
1723- DEVSUPFUN dev_report;
1724- DEVSUPFUN init;
1725- DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
1726- DEVSUPFUN get_ioint_info;
1727- DEVSUPFUN write_aao; /*returns: (-1,0)=>(failure,success)*/
1728-};
1729-
1730 static void monitor(aaoRecord *);
1731 static long writeValue(aaoRecord *);
1732
1733 static long init_record(struct dbCommon *pcommon, int pass)
1734 {
1735 struct aaoRecord *prec = (struct aaoRecord *)pcommon;
1736- struct aaodset *pdset = (struct aaodset *)(prec->dset);
1737+ aaodset *pdset = (aaodset *)(prec->dset);
1738 long status;
1739
1740 /* must have dset defined */
1741@@ -130,9 +121,9 @@ static long init_record(struct dbCommon *pcommon, int pass)
1742 not change after links are established before pass 1
1743 */
1744
1745- if (pdset->init_record) {
1746+ if (pdset->common.init_record) {
1747 /* init_record may set the bptr to point to the data */
1748- if ((status = pdset->init_record(prec)))
1749+ if ((status = pdset->common.init_record(pcommon)))
1750 return status;
1751 }
1752 if (!prec->bptr) {
1753@@ -146,7 +137,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
1754 recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
1755
1756 /* must have write_aao function defined */
1757- if (pdset->number < 5 || pdset->write_aao == NULL) {
1758+ if (pdset->common.number < 5 || pdset->write_aao == NULL) {
1759 recGblRecordError(S_dev_missingSup, prec, "aao: init_record");
1760 return S_dev_missingSup;
1761 }
1762@@ -156,7 +147,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
1763 static long process(struct dbCommon *pcommon)
1764 {
1765 struct aaoRecord *prec = (struct aaoRecord *)pcommon;
1766- struct aaodset *pdset = (struct aaodset *)(prec->dset);
1767+ aaodset *pdset = (aaodset *)(prec->dset);
1768 long status;
1769 unsigned char pact = prec->pact;
1770
1771@@ -339,7 +330,7 @@ static void monitor(aaoRecord *prec)
1772
1773 static long writeValue(aaoRecord *prec)
1774 {
1775- struct aaodset *pdset = (struct aaodset *) prec->dset;
1776+ aaodset *pdset = (aaodset *) prec->dset;
1777 long status = 0;
1778
1779 if (!prec->pact) {
1780diff --git a/modules/database/src/std/rec/aaoRecord.dbd b/modules/database/src/std/rec/aaoRecord.dbd
1781index 20e957f..aebb769 100644
1782--- a/modules/database/src/std/rec/aaoRecord.dbd
1783+++ b/modules/database/src/std/rec/aaoRecord.dbd
1784@@ -12,6 +12,15 @@ menu(aaoPOST) {
1785 }
1786 recordtype(aao) {
1787 include "dbCommon.dbd"
1788+ %
1789+ %/* Declare Device Support Entry Table */
1790+ %struct aaoRecord;
1791+ %typedef struct aaodset {
1792+ % dset common; /*init_record returns: (-1,0)=>(failure,success)*/
1793+ % long (*write_aao)(struct aaoRecord *prec); /*returns: (-1,0)=>(failure,success)*/
1794+ %} aaodset;
1795+ %#define HAS_aaodset
1796+ %
1797 field(VAL,DBF_NOACCESS) {
1798 prompt("Value")
1799 asl(ASL0)
1800diff --git a/modules/database/src/std/rec/aoRecord.c b/modules/database/src/std/rec/aoRecord.c
1801index 6fa6585..3f9a84e 100644
1802--- a/modules/database/src/std/rec/aoRecord.c
1803+++ b/modules/database/src/std/rec/aoRecord.c
1804@@ -81,20 +81,10 @@ rset aoRSET={
1805 put_enum_str,
1806 get_graphic_double,
1807 get_control_double,
1808- get_alarm_double };
1809-
1810-struct aodset { /* analog input dset */
1811- long number;
1812- DEVSUPFUN dev_report;
1813- DEVSUPFUN init;
1814- DEVSUPFUN init_record; /*returns: (0,2)=>(success,success no convert)*/
1815- DEVSUPFUN get_ioint_info;
1816- DEVSUPFUN write_ao;/*(0)=>(success ) */
1817- DEVSUPFUN special_linconv;
1818+ get_alarm_double
1819 };
1820 epicsExportAddress(rset,aoRSET);
1821
1822-
1823 static void checkAlarms(aoRecord *);
1824 static long fetch_value(aoRecord *, double *);
1825 static void convert(aoRecord *, double);
1826@@ -104,7 +94,7 @@ static long writeValue(aoRecord *);
1827 static long init_record(struct dbCommon *pcommon, int pass)
1828 {
1829 struct aoRecord *prec = (struct aoRecord *)pcommon;
1830- struct aodset *pdset;
1831+ aodset *pdset;
1832 double eoff = prec->eoff, eslo = prec->eslo;
1833 double value;
1834 long status = 0;
1835@@ -113,7 +103,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
1836
1837 recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
1838
1839- if(!(pdset = (struct aodset *)(prec->dset))) {
1840+ if(!(pdset = (aodset *)(prec->dset))) {
1841 recGblRecordError(S_dev_noDSET,(void *)prec,"ao: init_record");
1842 return(S_dev_noDSET);
1843 }
1844@@ -122,7 +112,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
1845 prec->udf = isnan(prec->val);
1846
1847 /* must have write_ao function defined */
1848- if ((pdset->number < 6) || (pdset->write_ao ==NULL)) {
1849+ if ((pdset->common.number < 6) || (pdset->write_ao ==NULL)) {
1850 recGblRecordError(S_dev_missingSup,(void *)prec,"ao: init_record");
1851 return(S_dev_missingSup);
1852 }
1853@@ -132,8 +122,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
1854 prec->eoff = prec->egul;
1855 }
1856
1857- if (pdset->init_record) {
1858- status = (*pdset->init_record)(prec);
1859+ if (pdset->common.init_record) {
1860+ status = pdset->common.init_record(pcommon);
1861 if (prec->linr == menuConvertSLOPE) {
1862 prec->eoff = eoff;
1863 prec->eslo = eslo;
1864@@ -174,7 +164,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
1865 static long process(struct dbCommon *pcommon)
1866 {
1867 struct aoRecord *prec = (struct aoRecord *)pcommon;
1868- struct aodset *pdset = (struct aodset *)(prec->dset);
1869+ aodset *pdset = (aodset *)(prec->dset);
1870 long status=0;
1871 unsigned char pact=prec->pact;
1872 double value;
1873@@ -245,12 +235,12 @@ static long process(struct dbCommon *pcommon)
1874 static long special(DBADDR *paddr, int after)
1875 {
1876 aoRecord *prec = (aoRecord *)(paddr->precord);
1877- struct aodset *pdset = (struct aodset *) (prec->dset);
1878+ aodset *pdset = (aodset *) (prec->dset);
1879 int special_type = paddr->special;
1880
1881 switch(special_type) {
1882 case(SPC_LINCONV):
1883- if(pdset->number<6 ) {
1884+ if(pdset->common.number<6 ) {
1885 recGblDbaddrError(S_db_noMod,paddr,"ao: special");
1886 return(S_db_noMod);
1887 }
1888@@ -555,7 +545,7 @@ static void monitor(aoRecord *prec)
1889
1890
1891 static long writeValue(aoRecord *prec)
1892 {
1893- struct aodset *pdset = (struct aodset *) prec->dset;
1894+ aodset *pdset = (aodset *) prec->dset;
1895 long status = 0;
1896
1897 if (!prec->pact) {
1898diff --git a/modules/database/src/std/rec/aoRecord.dbd.pod b/modules/database/src/std/rec/aoRecord.dbd.pod
1899index c54cb2c..672329e 100644
1900--- a/modules/database/src/std/rec/aoRecord.dbd.pod
1901+++ b/modules/database/src/std/rec/aoRecord.dbd.pod
1902@@ -269,6 +269,16 @@ information on these fields.
1903 =cut
1904
1905 include "dbCommon.dbd"
1906+ %
1907+ %/* Declare Device Support Entry Table */
1908+ %struct aoRecord;
1909+ %typedef struct aodset {
1910+ % dset common; /*init_record returns: (0,2)=>(success,success no convert)*/
1911+ % long (*write_ao)(struct aoRecord *prec); /*(0)=>(success ) */
1912+ % long (*special_linconv)(struct aoRecord *prec, int after);
1913+ %} aodset;
1914+ %#define HAS_aodset
1915+ %
1916 field(VAL,DBF_DOUBLE) {
1917 prompt("Desired Output")
1918 promptgroup("50 - Output")
1919diff --git a/modules/database/src/std/rec/biRecord.c b/modules/database/src/std/rec/biRecord.c
1920index 9c0ddb3..c26ed79 100644
1921--- a/modules/database/src/std/rec/biRecord.c
1922+++ b/modules/database/src/std/rec/biRecord.c
1923@@ -75,17 +75,10 @@ rset biRSET={
1924 put_enum_str,
1925 get_graphic_double,
1926 get_control_double,
1927- get_alarm_double };
1928-struct bidset { /* binary input dset */
1929- long number;
1930- DEVSUPFUN dev_report;
1931- DEVSUPFUN init;
1932- DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
1933- DEVSUPFUN get_ioint_info;
1934- DEVSUPFUN read_bi;/*(0,2)=> success and convert, don't convert)*/
1935- /* if convert then raw value stored in rval */
1936+ get_alarm_double
1937 };
1938 epicsExportAddress(rset,biRSET);
1939+
1940 static void checkAlarms(biRecord *);
1941 static void monitor(biRecord *);
1942 static long readValue(biRecord *);
1943@@ -93,7 +86,7 @@ static long readValue(biRecord *);
1944 static long init_record(struct dbCommon *pcommon, int pass)
1945 {
1946 struct biRecord *prec = (struct biRecord *)pcommon;
1947- struct bidset *pdset;
1948+ bidset *pdset;
1949 long status;
1950
1951 if (pass == 0) return 0;
1952@@ -101,17 +94,17 @@ static long init_record(struct dbCommon *pcommon, int pass)
1953 recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
1954 recGblInitConstantLink(&prec->siol, DBF_USHORT, &prec->sval);
1955
1956- if(!(pdset = (struct bidset *)(prec->dset))) {
1957+ if(!(pdset = (bidset *)(prec->dset))) {
1958 recGblRecordError(S_dev_noDSET,(void *)prec,"bi: init_record");
1959 return(S_dev_noDSET);
1960 }
1961 /* must have read_bi function defined */
1962- if( (pdset->number < 5) || (pdset->read_bi == NULL) ) {
1963+ if( (pdset->common.number < 5) || (pdset->read_bi == NULL) ) {
1964 recGblRecordError(S_dev_missingSup,(void *)prec,"bi: init_record");
1965 return(S_dev_missingSup);
1966 }
1967- if( pdset->init_record ) {
1968- if((status=(*pdset->init_record)(prec))) return(status);
1969+ if( pdset->common.init_record ) {
1970+ if((status=(*pdset->common.init_record)(pcommon))) return(status);
1971 }
1972 prec->mlst = prec->val;
1973 prec->lalm = prec->val;
1974@@ -122,7 +115,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
1975 static long process(struct dbCommon *pcommon)
1976 {
1977 struct biRecord *prec = (struct biRecord *)pcommon;
1978- struct bidset *pdset = (struct bidset *)(prec->dset);
1979+ bidset *pdset = (bidset *)(prec->dset);
1980 long status;
1981 unsigned char pact=prec->pact;
1982
1983@@ -275,7 +268,7 @@ static void monitor(biRecord *prec)
1984
1985
1986 static long readValue(biRecord *prec)
1987 {
1988- struct bidset *pdset = (struct bidset *)prec->dset;
1989+ bidset *pdset = (bidset *)prec->dset;
1990 long status = 0;
1991
1992 if (!prec->pact) {
1993diff --git a/modules/database/src/std/rec/biRecord.dbd.pod b/modules/database/src/std/rec/biRecord.dbd.pod
1994index 62bcf3b..a3b5ed3 100644
1995--- a/modules/database/src/std/rec/biRecord.dbd.pod
1996+++ b/modules/database/src/std/rec/biRecord.dbd.pod
1997@@ -163,6 +163,15 @@ these fields.
1998 =cut
1999
2000 include "dbCommon.dbd"
2001+ %
2002+ %/* Declare Device Support Entry Table */
2003+ %struct biRecord;
2004+ %typedef struct bidset {
2005+ % dset common; /*init_record returns: (-1,0)=>(failure,success)*/
2006+ % long (*read_bi)(struct biRecord *prec);/*(0,2)=> success and convert, don't convert); if convert then raw value stored in rval */
2007+ %} bidset;
2008+ %#define HAS_bidset
2009+ %
2010 field(INP,DBF_INLINK) {
2011 prompt("Input Specification")
2012 promptgroup("40 - Input")
2013diff --git a/modules/database/src/std/rec/boRecord.c b/modules/database/src/std/rec/boRecord.c
2014index 4cfe62d..94aa587 100644
2015--- a/modules/database/src/std/rec/boRecord.c
2016+++ b/modules/database/src/std/rec/boRecord.c
2017@@ -86,16 +86,6 @@ epicsExportAddress(int, boHIGHprecision);
2018 double boHIGHlimit = 100000;
2019 epicsExportAddress(double, boHIGHlimit);
2020
2021-struct bodset { /* binary output dset */
2022- long number;
2023- DEVSUPFUN dev_report;
2024- DEVSUPFUN init;
2025- DEVSUPFUN init_record; /*returns:(0,2)=>(success,success no convert*/
2026- DEVSUPFUN get_ioint_info;
2027- DEVSUPFUN write_bo;/*returns: (-1,0)=>(failure,success)*/
2028-};
2029-
2030-
2031 /* control block for callback*/
2032 typedef struct myCallback {
2033 epicsCallback callback;
2034@@ -131,7 +121,7 @@ static void myCallbackFunc(epicsCallback *arg)
2035 static long init_record(struct dbCommon *pcommon,int pass)
2036 {
2037 struct boRecord *prec = (struct boRecord *)pcommon;
2038- struct bodset *pdset = (struct bodset *) prec->dset;
2039+ bodset *pdset = (bodset *) prec->dset;
2040 unsigned short ival = 0;
2041 long status = 0;
2042 myCallback *pcallback;
2043@@ -146,7 +136,7 @@ static long init_record(struct dbCommon *pcommon,int pass)
2044 }
2045
2046 /* must have write_bo functions defined */
2047- if ((pdset->number < 5) || (pdset->write_bo == NULL)) {
2048+ if ((pdset->common.number < 5) || (pdset->write_bo == NULL)) {
2049 recGblRecordError(S_dev_missingSup, prec, "bo: init_record");
2050 return S_dev_missingSup;
2051 }
2052@@ -163,8 +153,8 @@ static long init_record(struct dbCommon *pcommon,int pass)
2053 callbackSetUser(pcallback, &pcallback->callback);
2054 pcallback->precord = (struct dbCommon *) prec;
2055
2056- if (pdset->init_record) {
2057- status=(*pdset->init_record)(prec);
2058+ if (pdset->common.init_record) {
2059+ status=(*pdset->common.init_record)(pcommon);
2060 if(status==0) {
2061 if(prec->rval==0) prec->val = 0;
2062 else prec->val = 1;
2063@@ -188,7 +178,7 @@ static long init_record(struct dbCommon *pcommon,int pass)
2064 static long process(struct dbCommon *pcommon)
2065 {
2066 struct boRecord *prec = (struct boRecord *)pcommon;
2067- struct bodset *pdset = (struct bodset *)(prec->dset);
2068+ bodset *pdset = (bodset *)(prec->dset);
2069 long status=0;
2070 unsigned char pact=prec->pact;
2071
2072@@ -420,7 +410,7 @@ static void monitor(boRecord *prec)
2073
2074
2075 static long writeValue(boRecord *prec)
2076 {
2077- struct bodset *pdset = (struct bodset *) prec->dset;
2078+ bodset *pdset = (bodset *) prec->dset;
2079 long status = 0;
2080
2081 if (!prec->pact) {
2082diff --git a/modules/database/src/std/rec/boRecord.dbd.pod b/modules/database/src/std/rec/boRecord.dbd.pod
2083index 6b6d180..ad48070 100644
2084--- a/modules/database/src/std/rec/boRecord.dbd.pod
2085+++ b/modules/database/src/std/rec/boRecord.dbd.pod
2086@@ -210,6 +210,15 @@ information on these fields.
2087 =cut
2088
2089 include "dbCommon.dbd"
2090+ %
2091+ %/* Declare Device Support Entry Table */
2092+ %struct boRecord;
2093+ %typedef struct bodset {
2094+ % dset common; /*init_record returns:(0,2)=>(success,success no convert*/
2095+ % long (*write_bo)(struct boRecord *prec); /*returns: (-1,0)=>(failure,success)*/
2096+ %} bodset;
2097+ %#define HAS_bodset
2098+ %
2099 field(VAL,DBF_ENUM) {
2100 prompt("Current Value")
2101 promptgroup("50 - Output")
2102diff --git a/modules/database/src/std/rec/calcRecord.c b/modules/database/src/std/rec/calcRecord.c
2103index 12a58d1..d72792a 100644
2104--- a/modules/database/src/std/rec/calcRecord.c
2105+++ b/modules/database/src/std/rec/calcRecord.c
2106@@ -43,7 +43,7 @@
2107
2108 #define report NULL
2109 #define initialize NULL
2110-static long init_record(struct dbCommon *prec, int pass);
2111+static long init_record(struct dbCommon *pcommon, int pass);
2112 static long process(struct dbCommon *prec);
2113 static long special(DBADDR *paddr, int after);
2114 #define get_value NULL
2115diff --git a/modules/database/src/std/rec/calcoutRecord.c b/modules/database/src/std/rec/calcoutRecord.c
2116index d9f66af..75edcce 100644
2117--- a/modules/database/src/std/rec/calcoutRecord.c
2118+++ b/modules/database/src/std/rec/calcoutRecord.c
2119@@ -90,16 +90,6 @@ epicsExportAddress(int, calcoutODLYprecision);
2120 double calcoutODLYlimit = 100000;
2121 epicsExportAddress(double, calcoutODLYlimit);
2122
2123-typedef struct calcoutDSET {
2124- long number;
2125- DEVSUPFUN dev_report;
2126- DEVSUPFUN init;
2127- DEVSUPFUN init_record;
2128- DEVSUPFUN get_ioint_info;
2129- DEVSUPFUN write;
2130-}calcoutDSET;
2131-
2132-
2133 /* To provide feedback to the user as to the connection status of the
2134 * links (.INxV and .OUTV), the following algorithm has been implemented ...
2135 *
2136@@ -142,7 +132,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
2137 double *pvalue;
2138 epicsEnum16 *plinkValid;
2139 short error_number;
2140- calcoutDSET *pcalcoutDSET;
2141+ calcoutdset *pcalcoutDSET;
2142 rpvtStruct *prpvt;
2143
2144 if (pass == 0) {
2145@@ -150,13 +140,13 @@ static long init_record(struct dbCommon *pcommon, int pass)
2146 return 0;
2147 }
2148
2149- if (!(pcalcoutDSET = (calcoutDSET *)prec->dset)) {
2150+ if (!(pcalcoutDSET = (calcoutdset *)prec->dset)) {
2151 recGblRecordError(S_dev_noDSET, (void *)prec, "calcout:init_record");
2152 return S_dev_noDSET;
2153 }
2154
2155 /* must have write defined */
2156- if ((pcalcoutDSET->number < 5) || (pcalcoutDSET->write ==NULL)) {
2157+ if ((pcalcoutDSET->common.number < 5) || (pcalcoutDSET->write ==NULL)) {
2158 recGblRecordError(S_dev_missingSup, (void *)prec, "calcout:init_record");
2159 return S_dev_missingSup;
2160 }
2161@@ -221,7 +211,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
2162
2163 prec->epvt = eventNameToHandle(prec->oevt);
2164
2165- if (pcalcoutDSET->init_record) pcalcoutDSET->init_record(prec);
2166+ if (pcalcoutDSET->common.init_record) pcalcoutDSET->common.init_record(pcommon);
2167 prec->pval = prec->val;
2168 prec->mlst = prec->val;
2169 prec->alst = prec->val;
2170@@ -768,7 +758,7 @@ static void checkLinks(calcoutRecord *prec)
2171
2172
2173 static long writeValue(calcoutRecord *prec)
2174 {
2175- calcoutDSET *pcalcoutDSET = (calcoutDSET *)prec->dset;
2176+ calcoutdset *pcalcoutDSET = (calcoutdset *)prec->dset;
2177
2178
2179 if (!pcalcoutDSET || !pcalcoutDSET->write) {
2180diff --git a/modules/database/src/std/rec/calcoutRecord.dbd.pod b/modules/database/src/std/rec/calcoutRecord.dbd.pod
2181index 176f1d2..ef329f5 100644
2182--- a/modules/database/src/std/rec/calcoutRecord.dbd.pod
2183+++ b/modules/database/src/std/rec/calcoutRecord.dbd.pod
2184@@ -659,6 +659,14 @@ manner for the VAL field.
2185 =cut
2186
2187 include "dbCommon.dbd"
2188+ %/* Declare Device Support Entry Table */
2189+ %struct calcoutRecord;
2190+ %typedef struct calcoutdset {
2191+ % dset common;
2192+ % long (*write)(struct calcoutRecord *prec);
2193+ %} calcoutdset;
2194+ %#define HAS_calcoutdset
2195+ %
2196 field(RPVT,DBF_NOACCESS) {
2197 prompt("Record Private")
2198 special(SPC_NOMOD)
2199diff --git a/modules/database/src/std/rec/eventRecord.c b/modules/database/src/std/rec/eventRecord.c
2200index c10c902..0d03cf3 100644
2201--- a/modules/database/src/std/rec/eventRecord.c
2202+++ b/modules/database/src/std/rec/eventRecord.c
2203@@ -80,14 +80,6 @@ rset eventRSET={
2204 };
2205 epicsExportAddress(rset,eventRSET);
2206
2207-struct eventdset { /* event input dset */
2208- long number;
2209- DEVSUPFUN dev_report;
2210- DEVSUPFUN init;
2211- DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
2212- DEVSUPFUN get_ioint_info;
2213- DEVSUPFUN read_event;/*(0)=> success */
2214-};
2215 static void monitor(eventRecord *);
2216 static long readValue(eventRecord *);
2217
2218@@ -95,7 +87,7 @@ static long readValue(eventRecord *);
2219 static long init_record(struct dbCommon *pcommon, int pass)
2220 {
2221 struct eventRecord *prec = (struct eventRecord *)pcommon;
2222- struct eventdset *pdset;
2223+ eventdset *pdset;
2224 long status=0;
2225
2226 if (pass == 0) return 0;
2227@@ -103,8 +95,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
2228 recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
2229 recGblInitConstantLink(&prec->siol, DBF_STRING, &prec->sval);
2230
2231- if( (pdset=(struct eventdset *)(prec->dset)) && (pdset->init_record) )
2232- status=(*pdset->init_record)(prec);
2233+ if( (pdset=(eventdset *)(prec->dset)) && (pdset->common.init_record) )
2234+ status=(*pdset->common.init_record)(pcommon);
2235
2236 prec->epvt = eventNameToHandle(prec->val);
2237
2238@@ -114,11 +106,11 @@ static long init_record(struct dbCommon *pcommon, int pass)
2239 static long process(struct dbCommon *pcommon)
2240 {
2241 struct eventRecord *prec = (struct eventRecord *)pcommon;
2242- struct eventdset *pdset = (struct eventdset *)(prec->dset);
2243+ eventdset *pdset = (eventdset *)(prec->dset);
2244 long status=0;
2245 unsigned char pact=prec->pact;
2246
2247- if((pdset!=NULL) && (pdset->number >= 5) && pdset->read_event )
2248+ if((pdset!=NULL) && (pdset->common.number >= 5) && pdset->read_event )
2249 status=readValue(prec); /* read the new value */
2250 /* check if device support set pact */
2251 if ( !pact && prec->pact ) return(0);
2252@@ -173,7 +165,7 @@ static void monitor(eventRecord *prec)
2253
2254
2255 static long readValue(eventRecord *prec)
2256 {
2257- struct eventdset *pdset = (struct eventdset *) prec->dset;
2258+ eventdset *pdset = (eventdset *) prec->dset;
2259 long status = 0;
2260
2261 if (!prec->pact) {
2262diff --git a/modules/database/src/std/rec/eventRecord.dbd.pod b/modules/database/src/std/rec/eventRecord.dbd.pod
2263index c783e98..4004056 100644
2264--- a/modules/database/src/std/rec/eventRecord.dbd.pod
2265+++ b/modules/database/src/std/rec/eventRecord.dbd.pod
2266@@ -44,6 +44,16 @@ simulation mode parameters
2267 recordtype(event) {
2268 include "dbCommon.dbd"
2269
2270+ %
2271+ %/* Declare Device Support Entry Table */
2272+ %struct eventRecord;
2273+ %typedef struct eventdset {
2274+ % dset common; /*init_record returns: (-1,0)=>(failure,success)*/
2275+ % long (*read_event)(struct eventRecord *prec); /*(0)=> success */
2276+ %} eventdset;
2277+ %#define HAS_eventdset
2278+ %
2279+
2280 =head3 Scan Parameters
2281
2282 The event record has the standard fields for specifying under what circumstances
2283diff --git a/modules/database/src/std/rec/histogramRecord.c b/modules/database/src/std/rec/histogramRecord.c
2284index 82fc91a..1a42636 100644
2285--- a/modules/database/src/std/rec/histogramRecord.c
2286+++ b/modules/database/src/std/rec/histogramRecord.c
2287@@ -87,17 +87,6 @@ epicsExportAddress(rset,histogramRSET);
2288 int histogramSDELprecision = 2;
2289 epicsExportAddress(int, histogramSDELprecision);
2290
2291-struct histogramdset { /* histogram input dset */
2292- long number;
2293- DEVSUPFUN dev_report;
2294- DEVSUPFUN init;
2295- DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
2296- DEVSUPFUN get_ioint_info;
2297- DEVSUPFUN read_histogram;/*(0,2)=> success and add_count, don't add_count)*/
2298- /* if add_count then sgnl added to array */
2299- DEVSUPFUN special_linconv;
2300-};
2301-
2302 /* control block for callback*/
2303 typedef struct myCallback {
2304 epicsCallback callback;
2305@@ -165,7 +154,7 @@ static long wdogInit(histogramRecord *prec)
2306 static long init_record(struct dbCommon *pcommon, int pass)
2307 {
2308 struct histogramRecord *prec = (struct histogramRecord *)pcommon;
2309- struct histogramdset *pdset;
2310+ histogramdset *pdset;
2311
2312 if (pass == 0) {
2313 /* allocate space for histogram array */
2314@@ -186,21 +175,21 @@ static long init_record(struct dbCommon *pcommon, int pass)
2315 recGblInitConstantLink(&prec->siol, DBF_DOUBLE, &prec->sval);
2316
2317 /* must have device support defined */
2318- pdset = (struct histogramdset *) prec->dset;
2319+ pdset = (histogramdset *) prec->dset;
2320 if (!pdset) {
2321 recGblRecordError(S_dev_noDSET, prec, "histogram: init_record");
2322 return S_dev_noDSET;
2323 }
2324
2325 /* must have read_histogram function defined */
2326- if (pdset->number < 6 || !pdset->read_histogram) {
2327+ if (pdset->common.number < 6 || !pdset->read_histogram) {
2328 recGblRecordError(S_dev_missingSup, prec, "histogram: init_record");
2329 return S_dev_missingSup;
2330 }
2331
2332 /* call device support init_record */
2333- if (pdset->init_record) {
2334- long status = pdset->init_record(prec);
2335+ if (pdset->common.init_record) {
2336+ long status = pdset->common.init_record(pcommon);
2337
2338 if (status)
2339 return status;
2340@@ -211,7 +200,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
2341 static long process(struct dbCommon *pcommon)
2342 {
2343 struct histogramRecord *prec = (struct histogramRecord *)pcommon;
2344- struct histogramdset *pdset = (struct histogramdset *) prec->dset;
2345+ histogramdset *pdset = (histogramdset *) prec->dset;
2346 int pact = prec->pact;
2347 long status;
2348
2349@@ -380,7 +369,7 @@ static long clear_histogram(histogramRecord *prec)
2350
2351 static long readValue(histogramRecord *prec)
2352 {
2353- struct histogramdset *pdset = (struct histogramdset *) prec->dset;
2354+ histogramdset *pdset = (histogramdset *) prec->dset;
2355 long status = 0;
2356
2357 if (!prec->pact) {
2358diff --git a/modules/database/src/std/rec/histogramRecord.dbd b/modules/database/src/std/rec/histogramRecord.dbd
2359index 304038b..e615d29 100644
2360--- a/modules/database/src/std/rec/histogramRecord.dbd
2361+++ b/modules/database/src/std/rec/histogramRecord.dbd
2362@@ -14,6 +14,16 @@ menu(histogramCMD) {
2363 }
2364 recordtype(histogram) {
2365 include "dbCommon.dbd"
2366+ %
2367+ %/* Declare Device Support Entry Table */
2368+ %struct histogramRecord;
2369+ %typedef struct histogramdset {
2370+ % dset common; /*init_record returns: (-1,0)=>(failure,success)*/
2371+ % long (*read_histogram)(struct histogramRecord *prec); /*(0,2)=> success and add_count, don't add_count); if add_count then sgnl added to array*/
2372+ % long (*special_linconv)(struct histogramRecord *prec, int after);
2373+ %} histogramdset;
2374+ %#define HAS_histogramdset
2375+ %
2376 field(VAL,DBF_NOACCESS) {
2377 prompt("Value")
2378 asl(ASL0)
2379diff --git a/modules/database/src/std/rec/int64inRecord.c b/modules/database/src/std/rec/int64inRecord.c
2380index b802f12..cb4d853 100644
2381--- a/modules/database/src/std/rec/int64inRecord.c
2382+++ b/modules/database/src/std/rec/int64inRecord.c
2383@@ -91,7 +91,7 @@ static long readValue(int64inRecord *prec);
2384 static long init_record(dbCommon *pcommon, int pass)
2385 {
2386 int64inRecord *prec = (int64inRecord*)pcommon;
2387- struct int64indset *pdset;
2388+ int64indset *pdset;
2389 long status;
2390
2391 if (pass == 0) return 0;
2392@@ -100,7 +100,7 @@ static long init_record(dbCommon *pcommon, int pass)
2393 recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
2394 recGblInitConstantLink(&prec->siol, DBF_INT64, &prec->sval);
2395
2396- if(!(pdset = (struct int64indset *)(prec->dset))) {
2397+ if(!(pdset = (int64indset *)(prec->dset))) {
2398 recGblRecordError(S_dev_noDSET,(void *)prec,"int64in: init_record");
2399 return(S_dev_noDSET);
2400 }
2401@@ -121,7 +121,7 @@ static long init_record(dbCommon *pcommon, int pass)
2402 static long process(dbCommon *pcommon)
2403 {
2404 int64inRecord *prec = (int64inRecord*)pcommon;
2405- struct int64indset *pdset = (struct int64indset *)(prec->dset);
2406+ int64indset *pdset = (int64indset *)(prec->dset);
2407 long status;
2408 unsigned char pact=prec->pact;
2409 epicsTimeStamp timeLast;
2410@@ -389,7 +389,7 @@ static void monitor(int64inRecord *prec)
2411
2412
2413 static long readValue(int64inRecord *prec)
2414 {
2415- struct int64indset *pdset = (struct int64indset *) prec->dset;
2416+ int64indset *pdset = (int64indset *) prec->dset;
2417 long status = 0;
2418
2419 if (!prec->pact) {
2420diff --git a/modules/database/src/std/rec/int64outRecord.c b/modules/database/src/std/rec/int64outRecord.c
2421index cbacb27..c90518e 100644
2422--- a/modules/database/src/std/rec/int64outRecord.c
2423+++ b/modules/database/src/std/rec/int64outRecord.c
2424@@ -89,14 +89,14 @@ static void convert(int64outRecord *prec, epicsInt64 value);
2425 static long init_record(dbCommon *pcommon, int pass)
2426 {
2427 int64outRecord *prec = (int64outRecord*)pcommon;
2428- struct int64outdset *pdset;
2429+ int64outdset *pdset;
2430 long status=0;
2431
2432 if (pass == 0) return 0;
2433
2434 recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
2435
2436- if(!(pdset = (struct int64outdset *)(prec->dset))) {
2437+ if(!(pdset = (int64outdset *)(prec->dset))) {
2438 recGblRecordError(S_dev_noDSET,(void *)prec,"int64out: init_record");
2439 return(S_dev_noDSET);
2440 }
2441@@ -121,7 +121,7 @@ static long init_record(dbCommon *pcommon, int pass)
2442 static long process(dbCommon *pcommon)
2443 {
2444 int64outRecord *prec = (int64outRecord*)pcommon;
2445- struct int64outdset *pdset = (struct int64outdset *)(prec->dset);
2446+ int64outdset *pdset = (int64outdset *)(prec->dset);
2447 long status=0;
2448 epicsInt64 value;
2449 unsigned char pact=prec->pact;
2450@@ -369,7 +369,7 @@ static void monitor(int64outRecord *prec)
2451
2452 static long writeValue(int64outRecord *prec)
2453 {
2454- struct int64outdset *pdset = (struct int64outdset *) prec->dset;
2455+ int64outdset *pdset = (int64outdset *) prec->dset;
2456 long status = 0;
2457
2458 if (!prec->pact) {
2459diff --git a/modules/database/src/std/rec/longinRecord.c b/modules/database/src/std/rec/longinRecord.c
2460index d524641..299cfb8 100644
2461--- a/modules/database/src/std/rec/longinRecord.c
2462+++ b/modules/database/src/std/rec/longinRecord.c
2463@@ -83,15 +83,6 @@ rset longinRSET={
2464 };
2465 epicsExportAddress(rset,longinRSET);
2466
2467-
2468-struct longindset { /* longin input dset */
2469- long number;
2470- DEVSUPFUN dev_report;
2471- DEVSUPFUN init;
2472- DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
2473- DEVSUPFUN get_ioint_info;
2474- DEVSUPFUN read_longin; /*returns: (-1,0)=>(failure,success)*/
2475-};
2476 static void checkAlarms(longinRecord *prec, epicsTimeStamp *timeLast);
2477 static void monitor(longinRecord *prec);
2478 static long readValue(longinRecord *prec);
2479@@ -100,7 +91,7 @@ static long readValue(longinRecord *prec);
2480 static long init_record(struct dbCommon *pcommon, int pass)
2481 {
2482 struct longinRecord *prec = (struct longinRecord *)pcommon;
2483- struct longindset *pdset = (struct longindset *) prec->dset;
2484+ longindset *pdset = (longindset *) prec->dset;
2485
2486 if (pass == 0) return 0;
2487
2488@@ -113,13 +104,13 @@ static long init_record(struct dbCommon *pcommon, int pass)
2489 }
2490
2491 /* must have read_longin function defined */
2492- if ((pdset->number < 5) || (pdset->read_longin == NULL)) {
2493+ if ((pdset->common.number < 5) || (pdset->read_longin == NULL)) {
2494 recGblRecordError(S_dev_missingSup, prec, "longin: init_record");
2495 return S_dev_missingSup;
2496 }
2497
2498- if (pdset->init_record) {
2499- long status = pdset->init_record(prec);
2500+ if (pdset->common.init_record) {
2501+ long status = pdset->common.init_record(pcommon);
2502
2503 if (status)
2504 return status;
2505@@ -134,7 +125,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
2506 static long process(struct dbCommon *pcommon)
2507 {
2508 struct longinRecord *prec = (struct longinRecord *)pcommon;
2509- struct longindset *pdset = (struct longindset *)(prec->dset);
2510+ longindset *pdset = (longindset *)(prec->dset);
2511 long status;
2512 unsigned char pact=prec->pact;
2513 epicsTimeStamp timeLast;
2514@@ -405,7 +396,7 @@ static void monitor(longinRecord *prec)
2515
2516
2517 static long readValue(longinRecord *prec)
2518 {
2519- struct longindset *pdset = (struct longindset *) prec->dset;
2520+ longindset *pdset = (longindset *) prec->dset;
2521 long status = 0;
2522
2523 if (!prec->pact) {
2524diff --git a/modules/database/src/std/rec/longinRecord.dbd.pod b/modules/database/src/std/rec/longinRecord.dbd.pod
2525index cf2a3a3..51f74bc 100644
2526--- a/modules/database/src/std/rec/longinRecord.dbd.pod
2527+++ b/modules/database/src/std/rec/longinRecord.dbd.pod
2528@@ -305,6 +305,15 @@ sets UDF to FALSE. read_longin returns the status of C<recGblGetLinkValue>.
2529 =cut
2530
2531 include "dbCommon.dbd"
2532+ %
2533+ %/* Declare Device Support Entry Table */
2534+ %struct longinRecord;
2535+ %typedef struct longindset {
2536+ % dset common; /*init_record returns: (-1,0)=>(failure,success)*/
2537+ % long (*read_longin)(struct longinRecord *prec); /*returns: (-1,0)=>(failure,success)*/
2538+ %} longindset;
2539+ %#define HAS_longindset
2540+ %
2541 field(VAL,DBF_LONG) {
2542 prompt("Current value")
2543 promptgroup("40 - Input")
2544diff --git a/modules/database/src/std/rec/longoutRecord.c b/modules/database/src/std/rec/longoutRecord.c
2545index 06e3b6e..238fb69 100644
2546--- a/modules/database/src/std/rec/longoutRecord.c
2547+++ b/modules/database/src/std/rec/longoutRecord.c
2548@@ -80,15 +80,6 @@ rset longoutRSET={
2549 };
2550 epicsExportAddress(rset,longoutRSET);
2551
2552-
2553-struct longoutdset { /* longout input dset */
2554- long number;
2555- DEVSUPFUN dev_report;
2556- DEVSUPFUN init;
2557- DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
2558- DEVSUPFUN get_ioint_info;
2559- DEVSUPFUN write_longout;/*(-1,0)=>(failure,success*/
2560-};
2561 static void checkAlarms(longoutRecord *prec);
2562 static void monitor(longoutRecord *prec);
2563 static long writeValue(longoutRecord *prec);
2564@@ -97,7 +88,7 @@ static void convert(longoutRecord *prec, epicsInt32 value);
2565 static long init_record(struct dbCommon *pcommon, int pass)
2566 {
2567 struct longoutRecord *prec = (struct longoutRecord *)pcommon;
2568- struct longoutdset *pdset = (struct longoutdset *) prec->dset;
2569+ longoutdset *pdset = (longoutdset *) prec->dset;
2570
2571 if (pass == 0) return 0;
2572
2573@@ -109,7 +100,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
2574 }
2575
2576 /* must have write_longout functions defined */
2577- if ((pdset->number < 5) || (pdset->write_longout == NULL)) {
2578+ if ((pdset->common.number < 5) || (pdset->write_longout == NULL)) {
2579 recGblRecordError(S_dev_missingSup, prec, "longout: init_record");
2580 return S_dev_missingSup;
2581 }
2582@@ -117,8 +108,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
2583 if (recGblInitConstantLink(&prec->dol, DBF_LONG, &prec->val))
2584 prec->udf=FALSE;
2585
2586- if (pdset->init_record) {
2587- long status = pdset->init_record(prec);
2588+ if (pdset->common.init_record) {
2589+ long status = pdset->common.init_record(pcommon);
2590
2591 if (status)
2592 return status;
2593@@ -133,7 +124,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
2594 static long process(struct dbCommon *pcommon)
2595 {
2596 struct longoutRecord *prec = (struct longoutRecord *)pcommon;
2597- struct longoutdset *pdset = (struct longoutdset *)(prec->dset);
2598+ longoutdset *pdset = (longoutdset *)(prec->dset);
2599 long status=0;
2600 epicsInt32 value;
2601 unsigned char pact=prec->pact;
2602@@ -382,7 +373,7 @@ static void monitor(longoutRecord *prec)
2603
2604
2605 static long writeValue(longoutRecord *prec)
2606 {
2607- struct longoutdset *pdset = (struct longoutdset *) prec->dset;
2608+ longoutdset *pdset = (longoutdset *) prec->dset;
2609 long status = 0;
2610
2611 if (!prec->pact) {
2612diff --git a/modules/database/src/std/rec/longoutRecord.dbd.pod b/modules/database/src/std/rec/longoutRecord.dbd.pod
2613index 276f304..f5e8b75 100644
2614--- a/modules/database/src/std/rec/longoutRecord.dbd.pod
2615+++ b/modules/database/src/std/rec/longoutRecord.dbd.pod
2616@@ -96,6 +96,15 @@ and database links.
2617 =cut
2618
2619 include "dbCommon.dbd"
2620+ %
2621+ %/* Declare Device Support Entry Table */
2622+ %struct longoutRecord;
2623+ %typedef struct longoutdset {
2624+ % dset common; /*init_record returns: (-1,0)=>(failure,success)*/
2625+ % long (*write_longout)(struct longoutRecord *prec); /*(-1,0)=>(failure,success*/
2626+ %} longoutdset;
2627+ %#define HAS_longoutdset
2628+ %
2629 field(VAL,DBF_LONG) {
2630 prompt("Desired Output")
2631 promptgroup("50 - Output")
2632diff --git a/modules/database/src/std/rec/lsiRecord.c b/modules/database/src/std/rec/lsiRecord.c
2633index 96e870b..6d5b9db 100644
2634--- a/modules/database/src/std/rec/lsiRecord.c
2635+++ b/modules/database/src/std/rec/lsiRecord.c
2636@@ -221,7 +221,7 @@ static void monitor(lsiRecord *prec)
2637
2638 static long readValue(lsiRecord *prec)
2639 {
2640- struct lsidset *pdset = (struct lsidset *) prec->dset;
2641+ lsidset *pdset = (lsidset *) prec->dset;
2642 long status = 0;
2643
2644 if (!prec->pact) {
2645diff --git a/modules/database/src/std/rec/mbbiDirectRecord.c b/modules/database/src/std/rec/mbbiDirectRecord.c
2646index 88d805c..d351511 100644
2647--- a/modules/database/src/std/rec/mbbiDirectRecord.c
2648+++ b/modules/database/src/std/rec/mbbiDirectRecord.c
2649@@ -81,15 +81,6 @@ rset mbbiDirectRSET={
2650 };
2651 epicsExportAddress(rset,mbbiDirectRSET);
2652
2653-struct mbbidset { /* multi bit binary input dset */
2654- long number;
2655- DEVSUPFUN dev_report;
2656- DEVSUPFUN init;
2657- DEVSUPFUN init_record; /*returns: (-1,0)=>(failure, success)*/
2658- DEVSUPFUN get_ioint_info;
2659- DEVSUPFUN read_mbbi; /*returns: (0,2)=>(success, success no convert)*/
2660-};
2661-
2662 static void monitor(mbbiDirectRecord *);
2663 static long readValue(mbbiDirectRecord *);
2664
2665@@ -98,7 +89,7 @@ static long readValue(mbbiDirectRecord *);
2666 static long init_record(struct dbCommon *pcommon, int pass)
2667 {
2668 struct mbbiDirectRecord *prec = (struct mbbiDirectRecord *)pcommon;
2669- struct mbbidset *pdset = (struct mbbidset *) prec->dset;
2670+ mbbidirectdset *pdset = (mbbidirectdset *) prec->dset;
2671 long status = 0;
2672
2673 if (pass == 0) return 0;
2674@@ -108,7 +99,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
2675 return S_dev_noDSET;
2676 }
2677
2678- if ((pdset->number < 5) || (pdset->read_mbbi == NULL)) {
2679+ if ((pdset->common.number < 5) || (pdset->read_mbbi == NULL)) {
2680 recGblRecordError(S_dev_missingSup, prec, "mbbiDirect: init_record");
2681 return S_dev_missingSup;
2682 }
2683@@ -120,8 +111,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
2684 if (prec->mask == 0 && prec->nobt <= 32)
2685 prec->mask = ((epicsUInt64) 1u << prec->nobt) - 1;
2686
2687- if (pdset->init_record) {
2688- status = pdset->init_record(prec);
2689+ if (pdset->common.init_record) {
2690+ status = pdset->common.init_record(pcommon);
2691 if (status == 0) {
2692 epicsUInt32 val = prec->val;
2693 epicsUInt8 *pBn = &prec->b0;
2694@@ -141,7 +132,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
2695 static long process(struct dbCommon *pcommon)
2696 {
2697 struct mbbiDirectRecord *prec = (struct mbbiDirectRecord *)pcommon;
2698- struct mbbidset *pdset = (struct mbbidset *) prec->dset;
2699+ mbbidirectdset *pdset = (mbbidirectdset *) prec->dset;
2700 long status;
2701 int pact = prec->pact;
2702
2703@@ -248,7 +239,7 @@ static void monitor(mbbiDirectRecord *prec)
2704
2705 static long readValue(mbbiDirectRecord *prec)
2706 {
2707- struct mbbidset *pdset = (struct mbbidset *) prec->dset;
2708+ mbbidirectdset *pdset = (mbbidirectdset *) prec->dset;
2709 long status = 0;
2710
2711 if (!prec->pact) {
2712diff --git a/modules/database/src/std/rec/mbbiDirectRecord.dbd.pod b/modules/database/src/std/rec/mbbiDirectRecord.dbd.pod
2713index 5b1c4da..fa5d40f 100644
2714--- a/modules/database/src/std/rec/mbbiDirectRecord.dbd.pod
2715+++ b/modules/database/src/std/rec/mbbiDirectRecord.dbd.pod
2716@@ -85,6 +85,14 @@ description (DESC) fields.
2717 =cut
2718
2719 include "dbCommon.dbd"
2720+ %/* Declare Device Support Entry Table */
2721+ %struct mbbiDirectRecord;
2722+ %typedef struct mbbidirectdset {
2723+ % dset common; /* init_record returns: (-1,0) => (failure, success)*/
2724+ % long (*read_mbbi)(struct mbbiDirectRecord *prec); /* (0, 2) => (success, success no convert)*/
2725+ %} mbbidirectdset;
2726+ %#define HAS_mbbidirectdset
2727+ %
2728 field(VAL,DBF_LONG) {
2729 prompt("Current Value")
2730 promptgroup("40 - Input")
2731diff --git a/modules/database/src/std/rec/mbbiRecord.c b/modules/database/src/std/rec/mbbiRecord.c
2732index 0202594..ba24d52 100644
2733--- a/modules/database/src/std/rec/mbbiRecord.c
2734+++ b/modules/database/src/std/rec/mbbiRecord.c
2735@@ -83,15 +83,6 @@ rset mbbiRSET = {
2736 };
2737 epicsExportAddress(rset,mbbiRSET);
2738
2739-struct mbbidset { /* multi bit binary input dset */
2740- long number;
2741- DEVSUPFUN dev_report;
2742- DEVSUPFUN init;
2743- DEVSUPFUN init_record; /* returns: (-1,0) => (failure, success)*/
2744- DEVSUPFUN get_ioint_info;
2745- DEVSUPFUN read_mbbi;/* (0, 2) => (success, success no convert)*/
2746-};
2747-
2748 static void checkAlarms(mbbiRecord *, epicsTimeStamp *);
2749 static void monitor(mbbiRecord *);
2750 static long readValue(mbbiRecord *);
2751@@ -115,18 +106,17 @@ static void init_common(mbbiRecord *prec)
2752 static long init_record(struct dbCommon *pcommon, int pass)
2753 {
2754 struct mbbiRecord *prec = (struct mbbiRecord *)pcommon;
2755- struct mbbidset *pdset = (struct mbbidset *) prec->dset;
2756+ mbbidset *pdset = (mbbidset *) prec->dset;
2757 long status = 0;
2758
2759 if (pass == 0) return 0;
2760
2761- pdset = (struct mbbidset *) prec->dset;
2762 if (!pdset) {
2763 recGblRecordError(S_dev_noDSET, prec, "mbbi: init_record");
2764 return S_dev_noDSET;
2765 }
2766
2767- if ((pdset->number < 5) || (pdset->read_mbbi == NULL)) {
2768+ if ((pdset->common.number < 5) || (pdset->read_mbbi == NULL)) {
2769 recGblRecordError(S_dev_missingSup, prec, "mbbi: init_record");
2770 return S_dev_missingSup;
2771 }
2772@@ -138,8 +128,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
2773 if (prec->mask == 0 && prec->nobt <= 32)
2774 prec->mask = ((epicsUInt64) 1u << prec->nobt) - 1;
2775
2776- if (pdset->init_record)
2777- status = pdset->init_record(prec);
2778+ if (pdset->common.init_record)
2779+ status = pdset->common.init_record(pcommon);
2780
2781 init_common(prec);
2782
2783@@ -152,7 +142,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
2784 static long process(struct dbCommon *pcommon)
2785 {
2786 struct mbbiRecord *prec = (struct mbbiRecord *)pcommon;
2787- struct mbbidset *pdset = (struct mbbidset *) prec->dset;
2788+ mbbidset *pdset = (mbbidset *) prec->dset;
2789 long status;
2790 int pact = prec->pact;
2791 epicsTimeStamp timeLast;
2792@@ -380,7 +370,7 @@ static void monitor(mbbiRecord *prec)
2793
2794 static long readValue(mbbiRecord *prec)
2795 {
2796- struct mbbidset *pdset = (struct mbbidset *) prec->dset;
2797+ mbbidset *pdset = (mbbidset *) prec->dset;
2798 long status = 0;
2799
2800 if (!prec->pact) {
2801diff --git a/modules/database/src/std/rec/mbbiRecord.dbd.pod b/modules/database/src/std/rec/mbbiRecord.dbd.pod
2802index b4ab1b4..5f0e08e 100644
2803--- a/modules/database/src/std/rec/mbbiRecord.dbd.pod
2804+++ b/modules/database/src/std/rec/mbbiRecord.dbd.pod
2805@@ -119,6 +119,14 @@ description (DESC) fields.
2806 =cut
2807
2808 include "dbCommon.dbd"
2809+ %/* Declare Device Support Entry Table */
2810+ %struct mbbiRecord;
2811+ %typedef struct mbbidset {
2812+ % dset common; /* init_record returns: (-1,0) => (failure, success)*/
2813+ % long (*read_mbbi)(struct mbbiRecord *prec); /* (0, 2) => (success, success no convert)*/
2814+ %} mbbidset;
2815+ %#define HAS_mbbidset
2816+ %
2817 field(VAL,DBF_ENUM) {
2818 prompt("Current Value")
2819 promptgroup("40 - Input")
2820diff --git a/modules/database/src/std/rec/mbboDirectRecord.c b/modules/database/src/std/rec/mbboDirectRecord.c
2821index 5c2dd94..2f92819 100644
2822--- a/modules/database/src/std/rec/mbboDirectRecord.c
2823+++ b/modules/database/src/std/rec/mbboDirectRecord.c
2824@@ -81,16 +81,6 @@ rset mbboDirectRSET = {
2825 };
2826 epicsExportAddress(rset, mbboDirectRSET);
2827
2828-struct mbbodset { /* multi bit binary output dset */
2829- long number;
2830- DEVSUPFUN dev_report;
2831- DEVSUPFUN init;
2832- DEVSUPFUN init_record; /*returns: (0, 2)=>(success, success no convert)*/
2833- DEVSUPFUN get_ioint_info;
2834- DEVSUPFUN write_mbbo; /*returns: (0, 2)=>(success, success no convert)*/
2835-};
2836-
2837-
2838 static void convert(mbboDirectRecord *);
2839 static void monitor(mbboDirectRecord *);
2840 static long writeValue(mbboDirectRecord *);
2841@@ -100,7 +90,7 @@ static long writeValue(mbboDirectRecord *);
2842 static long init_record(struct dbCommon *pcommon, int pass)
2843 {
2844 struct mbboDirectRecord *prec = (struct mbboDirectRecord *)pcommon;
2845- struct mbbodset *pdset = (struct mbbodset *) prec->dset;
2846+ mbbodirectdset *pdset = (mbbodirectdset *) prec->dset;
2847 long status = 0;
2848
2849 if (pass == 0) return 0;
2850@@ -110,7 +100,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
2851 return S_dev_noDSET;
2852 }
2853
2854- if ((pdset->number < 5) || (pdset->write_mbbo == NULL)) {
2855+ if ((pdset->common.number < 5) || (pdset->write_mbbo == NULL)) {
2856 recGblRecordError(S_dev_missingSup, prec, "mbboDirect: init_record");
2857 return S_dev_missingSup;
2858 }
2859@@ -124,8 +114,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
2860 if (prec->mask == 0 && prec->nobt <= 32)
2861 prec->mask = ((epicsUInt64) 1u << prec->nobt) - 1;
2862
2863- if (pdset->init_record) {
2864- status = pdset->init_record(prec);
2865+ if (pdset->common.init_record) {
2866+ status = pdset->common.init_record(pcommon);
2867 if (status == 0) {
2868 /* Convert initial read-back */
2869 epicsUInt32 rval = prec->rval;
2870@@ -162,7 +152,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
2871 static long process(struct dbCommon *pcommon)
2872 {
2873 struct mbboDirectRecord *prec = (struct mbboDirectRecord *)pcommon;
2874- struct mbbodset *pdset = (struct mbbodset *)(prec->dset);
2875+ mbbodirectdset *pdset = (mbbodirectdset *)(prec->dset);
2876 long status = 0;
2877 int pact = prec->pact;
2878
2879@@ -356,7 +346,7 @@ static void convert(mbboDirectRecord *prec)
2880
2881 static long writeValue(mbboDirectRecord *prec)
2882 {
2883- struct mbbodset *pdset = (struct mbbodset *) prec->dset;
2884+ mbbodirectdset *pdset = (mbbodirectdset *) prec->dset;
2885 long status = 0;
2886
2887 if (!prec->pact) {
2888diff --git a/modules/database/src/std/rec/mbboDirectRecord.dbd.pod b/modules/database/src/std/rec/mbboDirectRecord.dbd.pod
2889index ca49bcd..01402db 100644
2890--- a/modules/database/src/std/rec/mbboDirectRecord.dbd.pod
2891+++ b/modules/database/src/std/rec/mbboDirectRecord.dbd.pod
2892@@ -90,6 +90,14 @@ description (DESC) fields.
2893 =cut
2894
2895 include "dbCommon.dbd"
2896+ %/* Declare Device Support Entry Table */
2897+ %struct mbboDirectRecord;
2898+ %typedef struct mbbodirectdset {
2899+ % dset common; /*init_record returns: (0, 2)=>(success, success no convert)*/
2900+ % long (*write_mbbo)(struct mbboDirectRecord *prec); /*returns: (0, 2)=>(success, success no convert)*/
2901+ %} mbbodirectdset;
2902+ %#define HAS_mbbodirectdset
2903+ %
2904 field(VAL,DBF_LONG) {
2905 prompt("Word")
2906 promptgroup("50 - Output")
2907diff --git a/modules/database/src/std/rec/mbboRecord.c b/modules/database/src/std/rec/mbboRecord.c
2908index 2488552..b54988d 100644
2909--- a/modules/database/src/std/rec/mbboRecord.c
2910+++ b/modules/database/src/std/rec/mbboRecord.c
2911@@ -82,15 +82,6 @@ rset mbboRSET = {
2912 };
2913 epicsExportAddress(rset,mbboRSET);
2914
2915-struct mbbodset { /* multi bit binary output dset */
2916- long number;
2917- DEVSUPFUN dev_report;
2918- DEVSUPFUN init;
2919- DEVSUPFUN init_record; /*returns: (0, 2) => (success, success no convert)*/
2920- DEVSUPFUN get_ioint_info;
2921- DEVSUPFUN write_mbbo; /*returns: (0, 2) => (success, success no convert)*/
2922-};
2923-
2924
2925 static void checkAlarms(mbboRecord *);
2926 static void convert(mbboRecord *);
2927@@ -117,7 +108,7 @@ static void init_common(mbboRecord *prec)
2928 static long init_record(struct dbCommon *pcommon, int pass)
2929 {
2930 struct mbboRecord *prec = (struct mbboRecord *)pcommon;
2931- struct mbbodset *pdset;
2932+ mbbodset *pdset;
2933 long status;
2934
2935 if (pass == 0) {
2936@@ -125,13 +116,13 @@ static long init_record(struct dbCommon *pcommon, int pass)
2937 return 0;
2938 }
2939
2940- pdset = (struct mbbodset *) prec->dset;
2941+ pdset = (mbbodset *) prec->dset;
2942 if (!pdset) {
2943 recGblRecordError(S_dev_noDSET, prec, "mbbo: init_record");
2944 return S_dev_noDSET;
2945 }
2946
2947- if ((pdset->number < 5) || (pdset->write_mbbo == NULL)) {
2948+ if ((pdset->common.number < 5) || (pdset->write_mbbo == NULL)) {
2949 recGblRecordError(S_dev_missingSup, prec, "mbbo: init_record");
2950 return S_dev_missingSup;
2951 }
2952@@ -145,8 +136,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
2953 if (prec->mask == 0 && prec->nobt <= 32)
2954 prec->mask = ((epicsUInt64) 1u << prec->nobt) - 1;
2955
2956- if (pdset->init_record) {
2957- status = pdset->init_record(prec);
2958+ if (pdset->common.init_record) {
2959+ status = pdset->common.init_record(pcommon);
2960 init_common(prec);
2961 if (status == 0) {
2962 /* Convert initial read-back */
2963@@ -194,7 +185,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
2964 static long process(struct dbCommon *pcommon)
2965 {
2966 struct mbboRecord *prec = (struct mbboRecord *)pcommon;
2967- struct mbbodset *pdset = (struct mbbodset *) prec->dset;
2968+ mbbodset *pdset = (mbbodset *) prec->dset;
2969 long status = 0;
2970 int pact = prec->pact;
2971
2972@@ -439,7 +430,7 @@ static void convert(mbboRecord *prec)
2973
2974 static long writeValue(mbboRecord *prec)
2975 {
2976- struct mbbodset *pdset = (struct mbbodset *) prec->dset;
2977+ mbbodset *pdset = (mbbodset *) prec->dset;
2978 long status = 0;
2979
2980 if (!prec->pact) {
2981diff --git a/modules/database/src/std/rec/mbboRecord.dbd.pod b/modules/database/src/std/rec/mbboRecord.dbd.pod
2982index 2196aa5..ff5cd7e 100644
2983--- a/modules/database/src/std/rec/mbboRecord.dbd.pod
2984+++ b/modules/database/src/std/rec/mbboRecord.dbd.pod
2985@@ -173,6 +173,14 @@ mode fields.
2986 =cut
2987
2988 include "dbCommon.dbd"
2989+ %/* Declare Device Support Entry Table */
2990+ %struct mbboRecord;
2991+ %typedef struct mbbodset {
2992+ % dset common; /*init_record returns: (0, 2) => (success, success no convert)*/
2993+ % long (*write_mbbo)(struct mbboRecord *prec); /*returns: (0, 2) => (success, success no convert)*/
2994+ %} mbbodset;
2995+ %#define HAS_mbbodset
2996+ %
2997 field(VAL,DBF_ENUM) {
2998 prompt("Desired Value")
2999 promptgroup("50 - Output")
3000diff --git a/modules/database/src/std/rec/stringinRecord.c b/modules/database/src/std/rec/stringinRecord.c
3001index fdc1f26..3c67762 100644
3002--- a/modules/database/src/std/rec/stringinRecord.c
3003+++ b/modules/database/src/std/rec/stringinRecord.c
3004@@ -80,14 +80,6 @@ rset stringinRSET={
3005 };
3006 epicsExportAddress(rset,stringinRSET);
3007
3008-struct stringindset { /* stringin input dset */
3009- long number;
3010- DEVSUPFUN dev_report;
3011- DEVSUPFUN init;
3012- DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
3013- DEVSUPFUN get_ioint_info;
3014- DEVSUPFUN read_stringin; /*returns: (-1,0)=>(failure,success)*/
3015-};
3016 static void monitor(stringinRecord *);
3017 static long readValue(stringinRecord *);
3018
3019@@ -97,7 +89,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
3020 struct stringinRecord *prec = (struct stringinRecord *)pcommon;
3021 STATIC_ASSERT(sizeof(prec->oval)==sizeof(prec->val));
3022 STATIC_ASSERT(sizeof(prec->sval)==sizeof(prec->val));
3023- struct stringindset *pdset = (struct stringindset *) prec->dset;
3024+ stringindset *pdset = (stringindset *) prec->dset;
3025
3026 if (pass == 0) return 0;
3027
3028@@ -110,13 +102,13 @@ static long init_record(struct dbCommon *pcommon, int pass)
3029 }
3030
3031 /* must have read_stringin function defined */
3032- if ((pdset->number < 5) || (pdset->read_stringin == NULL)) {
3033+ if ((pdset->common.number < 5) || (pdset->read_stringin == NULL)) {
3034 recGblRecordError(S_dev_missingSup, prec, "stringin: init_record");
3035 return S_dev_missingSup;
3036 }
3037
3038- if (pdset->init_record) {
3039- long status = pdset->init_record(prec);
3040+ if (pdset->common.init_record) {
3041+ long status = pdset->common.init_record(pcommon);
3042
3043 if (status)
3044 return status;
3045@@ -130,7 +122,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
3046 static long process(struct dbCommon *pcommon)
3047 {
3048 struct stringinRecord *prec = (struct stringinRecord *)pcommon;
3049- struct stringindset *pdset = (struct stringindset *)(prec->dset);
3050+ stringindset *pdset = (stringindset *)(prec->dset);
3051 long status;
3052 unsigned char pact=prec->pact;
3053
3054@@ -196,7 +188,7 @@ static void monitor(stringinRecord *prec)
3055
3056
3057 static long readValue(stringinRecord *prec)
3058 {
3059- struct stringindset *pdset = (struct stringindset *) prec->dset;
3060+ stringindset *pdset = (stringindset *) prec->dset;
3061 long status = 0;
3062
3063 if (!prec->pact) {
3064diff --git a/modules/database/src/std/rec/stringinRecord.dbd.pod b/modules/database/src/std/rec/stringinRecord.dbd.pod
3065index 17e0c10..c633b31 100644
3066--- a/modules/database/src/std/rec/stringinRecord.dbd.pod
3067+++ b/modules/database/src/std/rec/stringinRecord.dbd.pod
3068@@ -24,6 +24,15 @@ menu(stringinPOST) {
3069 }
3070 recordtype(stringin) {
3071 include "dbCommon.dbd"
3072+ %
3073+ %/* Declare Device Support Entry Table */
3074+ %struct stringinRecord;
3075+ %typedef struct stringindset {
3076+ % dset common; /*init_record returns: (-1,0)=>(failure,success)*/
3077+ % long (*read_stringin)(struct stringinRecord *prec); /*returns: (-1,0)=>(failure,success)*/
3078+ %} stringindset;
3079+ %#define HAS_stringindset
3080+ %
3081 field(VAL,DBF_STRING) {
3082 prompt("Current Value")
3083 promptgroup("40 - Input")
3084diff --git a/modules/database/src/std/rec/stringoutRecord.c b/modules/database/src/std/rec/stringoutRecord.c
3085index ddf3028..786d295 100644
3086--- a/modules/database/src/std/rec/stringoutRecord.c
3087+++ b/modules/database/src/std/rec/stringoutRecord.c
3088@@ -82,14 +82,6 @@ rset stringoutRSET={
3089 };
3090 epicsExportAddress(rset,stringoutRSET);
3091
3092-struct stringoutdset { /* stringout input dset */
3093- long number;
3094- DEVSUPFUN dev_report;
3095- DEVSUPFUN init;
3096- DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
3097- DEVSUPFUN get_ioint_info;
3098- DEVSUPFUN write_stringout;/*(-1,0)=>(failure,success)*/
3099-};
3100 static void monitor(stringoutRecord *);
3101 static long writeValue(stringoutRecord *);
3102
3103@@ -99,7 +91,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
3104 struct stringoutRecord *prec = (struct stringoutRecord *)pcommon;
3105 STATIC_ASSERT(sizeof(prec->oval)==sizeof(prec->val));
3106 STATIC_ASSERT(sizeof(prec->ivov)==sizeof(prec->val));
3107- struct stringoutdset *pdset = (struct stringoutdset *) prec->dset;
3108+ stringoutdset *pdset = (stringoutdset *) prec->dset;
3109
3110 if (pass == 0) return 0;
3111
3112@@ -111,7 +103,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
3113 }
3114
3115 /* must have write_stringout functions defined */
3116- if ((pdset->number < 5) || (pdset->write_stringout == NULL)) {
3117+ if ((pdset->common.number < 5) || (pdset->write_stringout == NULL)) {
3118 recGblRecordError(S_dev_missingSup, prec, "stringout: init_record");
3119 return S_dev_missingSup;
3120 }
3121@@ -120,8 +112,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
3122 if (recGblInitConstantLink(&prec->dol, DBF_STRING, prec->val))
3123 prec->udf = FALSE;
3124
3125- if (pdset->init_record) {
3126- long status = pdset->init_record(prec);
3127+ if (pdset->common.init_record) {
3128+ long status = pdset->common.init_record(pcommon);
3129
3130 if(status)
3131 return status;
3132@@ -133,7 +125,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
3133 static long process(struct dbCommon *pcommon)
3134 {
3135 struct stringoutRecord *prec = (struct stringoutRecord *)pcommon;
3136- struct stringoutdset *pdset = (struct stringoutdset *)(prec->dset);
3137+ stringoutdset *pdset = (stringoutdset *)(prec->dset);
3138 long status=0;
3139 unsigned char pact=prec->pact;
3140
3141@@ -228,7 +220,7 @@ static void monitor(stringoutRecord *prec)
3142
3143
3144 static long writeValue(stringoutRecord *prec)
3145 {
3146- struct stringoutdset *pdset = (struct stringoutdset *) prec->dset;
3147+ stringoutdset *pdset = (stringoutdset *) prec->dset;
3148 long status = 0;
3149
3150 if (!prec->pact) {
3151diff --git a/modules/database/src/std/rec/stringoutRecord.dbd.pod b/modules/database/src/std/rec/stringoutRecord.dbd.pod
3152index 0d63d5f..1c843ed 100644
3153--- a/modules/database/src/std/rec/stringoutRecord.dbd.pod
3154+++ b/modules/database/src/std/rec/stringoutRecord.dbd.pod
3155@@ -24,6 +24,15 @@ menu(stringoutPOST) {
3156 }
3157 recordtype(stringout) {
3158 include "dbCommon.dbd"
3159+ %
3160+ %/* Declare Device Support Entry Table */
3161+ %struct stringoutRecord;
3162+ %typedef struct stringoutdset {
3163+ % dset common; /*init_record returns: (-1,0)=>(failure,success)*/
3164+ % long (*write_stringout)(struct stringoutRecord *prec); /*(-1,0)=>(failure,success)*/
3165+ %} stringoutdset;
3166+ %#define HAS_stringoutdset
3167+ %
3168 field(VAL,DBF_STRING) {
3169 prompt("Current Value")
3170 promptgroup("50 - Output")
3171diff --git a/modules/database/src/std/rec/subArrayRecord.c b/modules/database/src/std/rec/subArrayRecord.c
3172index 6de5147..00eed31 100644
3173--- a/modules/database/src/std/rec/subArrayRecord.c
3174+++ b/modules/database/src/std/rec/subArrayRecord.c
3175@@ -82,15 +82,6 @@ rset subArrayRSET={
3176 };
3177 epicsExportAddress(rset,subArrayRSET);
3178
3179-struct sadset { /* subArray dset */
3180- long number;
3181- DEVSUPFUN dev_report;
3182- DEVSUPFUN init;
3183- DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
3184- DEVSUPFUN get_ioint_info;
3185- DEVSUPFUN read_sa; /*returns: (-1,0)=>(failure,success)*/
3186-};
3187-
3188 static void monitor(subArrayRecord *prec);
3189 static long readValue(subArrayRecord *prec);
3190
3191@@ -98,7 +89,7 @@ static long readValue(subArrayRecord *prec);
3192 static long init_record(struct dbCommon *pcommon, int pass)
3193 {
3194 struct subArrayRecord *prec = (struct subArrayRecord *)pcommon;
3195- struct sadset *pdset;
3196+ sadset *pdset;
3197
3198 if (pass==0){
3199 if (prec->malm <= 0)
3200@@ -114,19 +105,19 @@ static long init_record(struct dbCommon *pcommon, int pass)
3201 }
3202
3203 /* must have dset defined */
3204- if (!(pdset = (struct sadset *)(prec->dset))) {
3205+ if (!(pdset = (sadset *)(prec->dset))) {
3206 recGblRecordError(S_dev_noDSET,(void *)prec,"sa: init_record");
3207 return S_dev_noDSET;
3208 }
3209
3210 /* must have read_sa function defined */
3211- if ( (pdset->number < 5) || (pdset->read_sa == NULL) ) {
3212+ if ( (pdset->common.number < 5) || (pdset->read_sa == NULL) ) {
3213 recGblRecordError(S_dev_missingSup,(void *)prec,"sa: init_record");
3214 return S_dev_missingSup;
3215 }
3216
3217- if (pdset->init_record)
3218- return pdset->init_record(prec);
3219+ if (pdset->common.init_record)
3220+ return pdset->common.init_record(pcommon);
3221
3222 return 0;
3223 }
3224@@ -134,7 +125,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
3225 static long process(struct dbCommon *pcommon)
3226 {
3227 struct subArrayRecord *prec = (struct subArrayRecord *)pcommon;
3228- struct sadset *pdset = (struct sadset *)(prec->dset);
3229+ sadset *pdset = (sadset *)(prec->dset);
3230 long status;
3231 unsigned char pact=prec->pact;
3232
3233@@ -309,7 +300,7 @@ static void monitor(subArrayRecord *prec)
3234 static long readValue(subArrayRecord *prec)
3235 {
3236 long status;
3237- struct sadset *pdset = (struct sadset *) (prec->dset);
3238+ sadset *pdset = (sadset *) (prec->dset);
3239
3240 if (prec->nelm > prec->malm)
3241 prec->nelm = prec->malm;
3242diff --git a/modules/database/src/std/rec/subArrayRecord.dbd.pod b/modules/database/src/std/rec/subArrayRecord.dbd.pod
3243index c47f2d0..fa4a410 100644
3244--- a/modules/database/src/std/rec/subArrayRecord.dbd.pod
3245+++ b/modules/database/src/std/rec/subArrayRecord.dbd.pod
3246@@ -315,6 +315,15 @@ INP is expected to point to a waveform record.
3247 =cut
3248
3249 include "dbCommon.dbd"
3250+ %
3251+ %/* Declare Device Support Entry Table */
3252+ %struct subArrayRecord;
3253+ %typedef struct sadset {
3254+ % dset common; /*init_record returns: (-1,0)=>(failure,success)*/
3255+ % long (*read_sa)(struct subArrayRecord *prec); /*returns: (-1,0)=>(failure,success)*/
3256+ %} sadset;
3257+ %#define HAS_sadset
3258+ %
3259 field(VAL,DBF_NOACCESS) {
3260 prompt("Value")
3261 asl(ASL0)
3262diff --git a/modules/database/src/std/rec/waveformRecord.c b/modules/database/src/std/rec/waveformRecord.c
3263index 8d21018..69a36f4 100644
3264--- a/modules/database/src/std/rec/waveformRecord.c
3265+++ b/modules/database/src/std/rec/waveformRecord.c
3266@@ -80,14 +80,6 @@ rset waveformRSET={
3267 get_alarm_double
3268 };
3269 epicsExportAddress(rset,waveformRSET);
3270-struct wfdset { /* waveform dset */
3271- long number;
3272- DEVSUPFUN dev_report;
3273- DEVSUPFUN init;
3274- DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
3275- DEVSUPFUN get_ioint_info;
3276- DEVSUPFUN read_wf; /*returns: (-1,0)=>(failure,success)*/
3277-};
3278
3279 static void monitor(waveformRecord *);
3280 static long readValue(waveformRecord *);
3281@@ -95,7 +87,7 @@ static long readValue(waveformRecord *);
3282 static long init_record(struct dbCommon *pcommon, int pass)
3283 {
3284 struct waveformRecord *prec = (struct waveformRecord *)pcommon;
3285- struct wfdset *pdset;
3286+ wfdset *pdset;
3287
3288 if (pass == 0) {
3289 if (prec->nelm <= 0)
3290@@ -111,25 +103,25 @@ static long init_record(struct dbCommon *pcommon, int pass)
3291 recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
3292
3293 /* must have dset defined */
3294- if (!(pdset = (struct wfdset *)(prec->dset))) {
3295+ if (!(pdset = (wfdset *)(prec->dset))) {
3296 recGblRecordError(S_dev_noDSET,(void *)prec,"wf: init_record");
3297 return S_dev_noDSET;
3298 }
3299 /* must have read_wf function defined */
3300- if ((pdset->number < 5) || (pdset->read_wf == NULL)) {
3301+ if ((pdset->common.number < 5) || (pdset->read_wf == NULL)) {
3302 recGblRecordError(S_dev_missingSup,(void *)prec,"wf: init_record");
3303 return S_dev_missingSup;
3304 }
3305- if (!pdset->init_record)
3306+ if (!pdset->common.init_record)
3307 return 0;
3308
3309- return pdset->init_record(prec);
3310+ return pdset->common.init_record(pcommon);
3311 }
3312
3313 static long process(struct dbCommon *pcommon)
3314 {
3315 struct waveformRecord *prec = (struct waveformRecord *)pcommon;
3316- struct wfdset *pdset = (struct wfdset *)(prec->dset);
3317+ wfdset *pdset = (wfdset *)(prec->dset);
3318 unsigned char pact=prec->pact;
3319 long status;
3320
3321@@ -328,7 +320,7 @@ static void monitor(waveformRecord *prec)
3322
3323 static long readValue(waveformRecord *prec)
3324 {
3325- struct wfdset *pdset = (struct wfdset *) prec->dset;
3326+ wfdset *pdset = (wfdset *) prec->dset;
3327 long status = 0;
3328
3329 if (!prec->pact) {
3330diff --git a/modules/database/src/std/rec/waveformRecord.dbd.pod b/modules/database/src/std/rec/waveformRecord.dbd.pod
3331index ce488ef..06f38b6 100644
3332--- a/modules/database/src/std/rec/waveformRecord.dbd.pod
3333+++ b/modules/database/src/std/rec/waveformRecord.dbd.pod
3334@@ -397,6 +397,15 @@ NORD is set to the number of values returned and read_wf returns.
3335 =cut
3336
3337 include "dbCommon.dbd"
3338+ %
3339+ %/* Declare Device Support Entry Table */
3340+ %struct waveformRecord;
3341+ %typedef struct wfdset {
3342+ % dset common; /*init_record returns: (-1,0)=>(failure,success)*/
3343+ % long (*read_wf)(struct waveformRecord *prec); /*returns: (-1,0)=>(failure,success)*/
3344+ %} wfdset;
3345+ %#define HAS_wfdset
3346+ %
3347 field(VAL,DBF_NOACCESS) {
3348 prompt("Value")
3349 asl(ASL0)

Subscribers

People subscribed via source and target branches