From b1b51cc70e737f3e56303088525e066348a4ac80 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Sat, 16 Nov 2019 23:02:34 -0600 Subject: [PATCH] Export and use int64outdset, set USE_TYPED_DSET --- modules/database/src/std/dev/Makefile | 2 ++ modules/database/src/std/dev/devI64outSoft.c | 29 +++++-------------- .../src/std/dev/devI64outSoftCallback.c | 25 ++++------------ modules/database/src/std/rec/Makefile | 1 + modules/database/src/std/rec/int64outRecord.c | 14 ++------- .../src/std/rec/int64outRecord.dbd.pod | 9 ++++++ 6 files changed, 29 insertions(+), 51 deletions(-) diff --git a/modules/database/src/std/dev/Makefile b/modules/database/src/std/dev/Makefile index 4e023abbd..40f68b8f1 100644 --- a/modules/database/src/std/dev/Makefile +++ b/modules/database/src/std/dev/Makefile @@ -30,6 +30,7 @@ dbRecStd_SRCS += devEventSoft.c dbRecStd_SRCS += devHistogramSoft.c devI64inSoft_CFLAGS += -DUSE_TYPED_DSET dbRecStd_SRCS += devI64inSoft.c +devI64outSoft_CFLAGS += -DUSE_TYPED_DSET dbRecStd_SRCS += devI64outSoft.c dbRecStd_SRCS += devLiSoft.c dbRecStd_SRCS += devLoSoft.c @@ -65,6 +66,7 @@ dbRecStd_SRCS += devSiSoftCallback.c dbRecStd_SRCS += devAoSoftCallback.c dbRecStd_SRCS += devBoSoftCallback.c dbRecStd_SRCS += devCalcoutSoftCallback.c +devI64outSoftCallback_CFLAGS += -DUSE_TYPED_DSET dbRecStd_SRCS += devI64outSoftCallback.c dbRecStd_SRCS += devLoSoftCallback.c devLsoSoftCallback_CFLAGS += -DUSE_TYPED_DSET diff --git a/modules/database/src/std/dev/devI64outSoft.c b/modules/database/src/std/dev/devI64outSoft.c index f9ac70a7e..f94b90855 100644 --- a/modules/database/src/std/dev/devI64outSoft.c +++ b/modules/database/src/std/dev/devI64outSoft.c @@ -25,27 +25,7 @@ #include "int64outRecord.h" #include "epicsExport.h" -/* Create the dset for devI64outSoft */ -static long init_record(int64outRecord *prec); -static long write_int64out(int64outRecord *prec); -struct { - long number; - DEVSUPFUN report; - DEVSUPFUN init; - DEVSUPFUN init_record; - DEVSUPFUN get_ioint_info; - DEVSUPFUN write_int64out; -} devI64outSoft = { - 5, - NULL, - NULL, - init_record, - NULL, - write_int64out -}; -epicsExportAddress(dset, devI64outSoft); - -static long init_record(int64outRecord *prec) +static long init_record(dbCommon *common) { return 0; } @@ -55,3 +35,10 @@ static long write_int64out(int64outRecord *prec) dbPutLink(&prec->out, DBR_INT64, &prec->val,1); return 0; } + +/* Create the dset for devI64outSoft */ +int64outdset devI64outSoft = { + { 5, NULL, NULL, init_record, NULL }, write_int64out +}; +epicsExportAddress(dset, devI64outSoft); + diff --git a/modules/database/src/std/dev/devI64outSoftCallback.c b/modules/database/src/std/dev/devI64outSoftCallback.c index e8041a26f..3ad717da3 100644 --- a/modules/database/src/std/dev/devI64outSoftCallback.c +++ b/modules/database/src/std/dev/devI64outSoftCallback.c @@ -25,25 +25,6 @@ #include "int64outRecord.h" #include "epicsExport.h" -/* Create the dset for devI64outSoftCallback */ -static long write_int64out(int64outRecord *prec); -struct { - long number; - DEVSUPFUN report; - DEVSUPFUN init; - DEVSUPFUN init_record; - DEVSUPFUN get_ioint_info; - DEVSUPFUN write_int64out; -} devI64outSoftCallback = { - 5, - NULL, - NULL, - NULL, - NULL, - write_int64out -}; -epicsExportAddress(dset, devI64outSoftCallback); - static long write_int64out(int64outRecord *prec) { struct link *plink = &prec->out; @@ -60,3 +41,9 @@ static long write_int64out(int64outRecord *prec) return status; } + +/* Create the dset for devI64outSoftCallback */ +int64outdset devI64outSoftCallback = { + { 5, NULL, NULL, NULL, NULL }, write_int64out +}; +epicsExportAddress(dset, devI64outSoftCallback); diff --git a/modules/database/src/std/rec/Makefile b/modules/database/src/std/rec/Makefile index ce2625cd3..2d1cfe67b 100644 --- a/modules/database/src/std/rec/Makefile +++ b/modules/database/src/std/rec/Makefile @@ -27,6 +27,7 @@ stdRecords += fanoutRecord stdRecords += histogramRecord int64inRecord_CFLAGS += -DUSE_TYPED_DSET stdRecords += int64inRecord +int64outRecord_CFLAGS += -DUSE_TYPED_DSET stdRecords += int64outRecord stdRecords += longinRecord stdRecords += longoutRecord diff --git a/modules/database/src/std/rec/int64outRecord.c b/modules/database/src/std/rec/int64outRecord.c index e9170f9a9..cbacb2739 100644 --- a/modules/database/src/std/rec/int64outRecord.c +++ b/modules/database/src/std/rec/int64outRecord.c @@ -80,14 +80,6 @@ rset int64outRSET={ epicsExportAddress(rset,int64outRSET); -struct int64outdset { /* int64out input dset */ - long number; - DEVSUPFUN dev_report; - DEVSUPFUN init; - DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/ - DEVSUPFUN get_ioint_info; - DEVSUPFUN write_int64out;/*(-1,0)=>(failure,success*/ -}; static void checkAlarms(int64outRecord *prec); static void monitor(int64outRecord *prec); static long writeValue(int64outRecord *prec); @@ -109,7 +101,7 @@ static long init_record(dbCommon *pcommon, int pass) return(S_dev_noDSET); } /* must have write_int64out functions defined */ - if( (pdset->number < 5) || (pdset->write_int64out == NULL) ) { + if ((pdset->common.number < 5) || (pdset->write_int64out == NULL)) { recGblRecordError(S_dev_missingSup,(void *)prec,"int64out: init_record"); return(S_dev_missingSup); } @@ -117,8 +109,8 @@ static long init_record(dbCommon *pcommon, int pass) if(recGblInitConstantLink(&prec->dol,DBF_INT64,&prec->val)) prec->udf=FALSE; } - if( pdset->init_record ) { - if((status=(*pdset->init_record)(prec))) return(status); + if (pdset->common.init_record) { + if ((status = pdset->common.init_record(pcommon))) return status; } prec->mlst = prec->val; prec->alst = prec->val; diff --git a/modules/database/src/std/rec/int64outRecord.dbd.pod b/modules/database/src/std/rec/int64outRecord.dbd.pod index 1b5003efe..2f0fb346a 100644 --- a/modules/database/src/std/rec/int64outRecord.dbd.pod +++ b/modules/database/src/std/rec/int64outRecord.dbd.pod @@ -137,6 +137,15 @@ monitoring deadband functionality. =cut include "dbCommon.dbd" + %#include "devSup.h" + % + %/* Declare Device Support Entry Table */ + %struct int64outRecord; + %typedef struct int64outdset { + % dset common; + % long (*write_int64out)(struct int64outRecord *prec); + %} int64outdset; + % field(VAL,DBF_INT64) { prompt("Desired Output") promptgroup("50 - Output")