diff --git a/modules/database/src/std/dev/Makefile b/modules/database/src/std/dev/Makefile index a42879883..a72bfa342 100644 --- a/modules/database/src/std/dev/Makefile +++ b/modules/database/src/std/dev/Makefile @@ -32,6 +32,7 @@ dbRecStd_SRCS += devI64inSoft.c dbRecStd_SRCS += devI64outSoft.c dbRecStd_SRCS += devLiSoft.c dbRecStd_SRCS += devLoSoft.c +devLsiSoft_CFLAGS += -DUSE_TYPED_DSET dbRecStd_SRCS += devLsiSoft.c dbRecStd_SRCS += devLsoSoft.c dbRecStd_SRCS += devMbbiDirectSoft.c @@ -73,6 +74,7 @@ dbRecStd_SRCS += devSoSoftCallback.c dbRecStd_SRCS += devTimestamp.c devStdio_CFLAGS += -DUSE_TYPED_DSET dbRecStd_SRCS += devStdio.c +devEnviron_CFLAGS += -DUSE_TYPED_DSET dbRecStd_SRCS += devEnviron.c dbRecStd_SRCS += asSubRecordFunctions.c diff --git a/modules/database/src/std/dev/devEnviron.c b/modules/database/src/std/dev/devEnviron.c index 9672d6ce5..69c9a3d92 100644 --- a/modules/database/src/std/dev/devEnviron.c +++ b/modules/database/src/std/dev/devEnviron.c @@ -69,7 +69,7 @@ static long read_lsi(lsiRecord *prec) } lsidset devLsiEnviron = { - 5, NULL, init_lsi, NULL, NULL, read_lsi + {5, NULL, init_lsi, NULL, NULL }, read_lsi }; epicsExportAddress(dset, devLsiEnviron); diff --git a/modules/database/src/std/dev/devLsiSoft.c b/modules/database/src/std/dev/devLsiSoft.c index 3076c9900..d7c5021e7 100644 --- a/modules/database/src/std/dev/devLsiSoft.c +++ b/modules/database/src/std/dev/devLsiSoft.c @@ -17,8 +17,9 @@ #include "lsiRecord.h" #include "epicsExport.h" -static long init_record(lsiRecord *prec) +static long init_record(dbCommon *common) { + lsiRecord *prec = (lsiRecord *)common; dbLoadLinkLS(&prec->inp, prec->val, prec->sizv, &prec->len); return 0; @@ -49,6 +50,6 @@ static long read_string(lsiRecord *prec) } lsidset devLsiSoft = { - 5, NULL, NULL, init_record, NULL, read_string + { 5, NULL, NULL, init_record, NULL }, read_string }; epicsExportAddress(dset, devLsiSoft); diff --git a/modules/database/src/std/rec/Makefile b/modules/database/src/std/rec/Makefile index d950eda35..4d3687794 100644 --- a/modules/database/src/std/rec/Makefile +++ b/modules/database/src/std/rec/Makefile @@ -29,6 +29,7 @@ stdRecords += int64inRecord stdRecords += int64outRecord stdRecords += longinRecord stdRecords += longoutRecord +lsiRecord_CFLAGS += -DUSE_TYPED_DSET stdRecords += lsiRecord stdRecords += lsoRecord stdRecords += mbbiRecord diff --git a/modules/database/src/std/rec/lsiRecord.c b/modules/database/src/std/rec/lsiRecord.c index 7396946d4..96e870b0e 100644 --- a/modules/database/src/std/rec/lsiRecord.c +++ b/modules/database/src/std/rec/lsiRecord.c @@ -66,13 +66,13 @@ static long init_record(struct dbCommon *pcommon, int pass) } /* must have a read_string function */ - if (pdset->number < 5 || !pdset->read_string) { + if (pdset->common.number < 5 || !pdset->read_string) { recGblRecordError(S_dev_missingSup, prec, "lsi: init_record"); return S_dev_missingSup; } - if (pdset->init_record) { - long status = pdset->init_record(prec); + if (pdset->common.init_record) { + long status = pdset->common.init_record(pcommon); if (status) return status; diff --git a/modules/database/src/std/rec/lsiRecord.dbd b/modules/database/src/std/rec/lsiRecord.dbd index 21f2ba43d..7d885987b 100644 --- a/modules/database/src/std/rec/lsiRecord.dbd +++ b/modules/database/src/std/rec/lsiRecord.dbd @@ -10,13 +10,10 @@ recordtype(lsi) { %#include "devSup.h" % %/* Declare Device Support Entry Table */ + %struct lsiRecord; %typedef struct lsidset { - % long number; - % DEVSUPFUN report; - % DEVSUPFUN init; - % DEVSUPFUN init_record; - % DEVSUPFUN get_ioint_info; - % DEVSUPFUN read_string; + % dset common; + % long (*read_string)(struct lsiRecord *prec); %} lsidset; % field(VAL,DBF_NOACCESS) {