Merge remote-tracking branch 'lp-anj7/typed-dsets' into 7.0
* lp-anj7/typed-dsets: Bump database version to 3.18.0, use in SHRLIB_VERSION Adjust example code in devSup.h Set USE_TYPED_DSET centrally now everything uses it Update the wording of the Release Notes entry - Record updates: . histogramRecord . eventRecord . aaiRecord . aaoRecord - Record updates: . aoRecord . biRecord . boRecord . mbbiRecord . mbbiDirectRecord . mbboRecord . mbboDirectRecord . longinRecord . longoutRecord . stringoutRecord . stringinRecord . waveformRecord . calcoutRecord . subArrayRecord initial typed-dset changes for ao record Add Release Notes entry about dsets Export and use aidset, set USE_TYPED_DSET Remove duplicated include line Add HAS_<record>dset macros to allow detection Export and use int64outdset, set USE_TYPED_DSET Export and use int64indset, set USE_TYPED_DSET Modify lsodset, set USE_TYPED_DSET Modify lsidset, set USE_TYPED_DSET Modify printfdset, set USE_TYPED_DSET
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# Version number for the database APIs and shared library
|
||||
|
||||
EPICS_DATABASE_MAJOR_VERSION = 3
|
||||
EPICS_DATABASE_MINOR_VERSION = 17
|
||||
EPICS_DATABASE_MAINTENANCE_VERSION = 6
|
||||
EPICS_DATABASE_MINOR_VERSION = 18
|
||||
EPICS_DATABASE_MAINTENANCE_VERSION = 0
|
||||
|
||||
# Development flag, set to zero for release versions
|
||||
|
||||
|
||||
@@ -60,6 +60,101 @@ IOCs now emit a warning when a database file containing the `state` record is
|
||||
loaded. This record has been deprecated for a while and will be removed
|
||||
beginning with EPICS 7.1. Consider using the `stringin` record instead.
|
||||
|
||||
### Record types publish dset's
|
||||
|
||||
The record types in Base now define their device support entry table (DSET)
|
||||
structures in the record header file. While still optional, developers of
|
||||
external support modules are encouraged to start converting their code to use
|
||||
the record's new definitions instead of the traditional approach of copying the
|
||||
structure definitions into each source file that needs them. By following the
|
||||
instructions below it is still possible for the converted code to build and
|
||||
work with older Base releases.
|
||||
|
||||
This would also be a good time to modify the device support to use the type-safe
|
||||
device support entry tables that were introduced in Base-3.16.2 -- see
|
||||
[#type-safe-device-and-driver-support-tables](this entry below) for the
|
||||
description of that change, which is also optional for now.
|
||||
|
||||
Look at the aiRecord for example. Near the top of the generated `aiRecord.h`
|
||||
header file is a new section that declares the `aidset`:
|
||||
|
||||
```C
|
||||
/* Declare Device Support Entry Table */
|
||||
struct aiRecord;
|
||||
typedef struct aidset {
|
||||
dset common;
|
||||
long (*read_ai)(struct aiRecord *prec);
|
||||
long (*special_linconv)(struct aiRecord *prec, int after);
|
||||
} aidset;
|
||||
#define HAS_aidset
|
||||
```
|
||||
|
||||
Notice that the common members (`number`, `report()`, `init()`, `init_record()`
|
||||
and `get_ioint_info()` don't appear directly but are included by embedding the
|
||||
`dset common` member instead. This avoids the need to have separate definitions
|
||||
of those members in each record dset, but does require those members to be
|
||||
wrapped inside another set of braces `{}` when initializing the data structure
|
||||
for the individual device supports. It also requires changes to code that
|
||||
references those common members, but that code usually only appears inside the
|
||||
record type implementation and very rarely in device supports.
|
||||
|
||||
An aiRecord device support that will only be built against this or later
|
||||
versions of EPICS can now declare its dset like this:
|
||||
|
||||
```C
|
||||
aidset devAiSoft = {
|
||||
{ 6, NULL, NULL, init_record, NULL },
|
||||
read_ai, NULL
|
||||
};
|
||||
epicsExportAddress(dset, devAiSoft);
|
||||
```
|
||||
|
||||
However most device support that is not built into EPICS itself will need to
|
||||
remain compatible with older EPICS versions, which is why the ai record's header
|
||||
file also declares the preprocessor macro `HAS_aidset`. This makes it easy to
|
||||
define the `aidset` in the device support code when it's needed, and not when
|
||||
it's provided in the header:
|
||||
|
||||
```C
|
||||
#ifndef HAS_aidset
|
||||
typedef struct aidset {
|
||||
dset common;
|
||||
long (*read_ai)(aiRecord *prec);
|
||||
long (*special_linconv)(aiRecord *prec, int after);
|
||||
} aidset;
|
||||
#endif
|
||||
aidset devAiSoft = {
|
||||
{ 6, NULL, NULL, init_record, NULL },
|
||||
read_ai, NULL
|
||||
};
|
||||
epicsExportAddress(dset, devAiSoft);
|
||||
```
|
||||
|
||||
The above `typedef struct` declaration was copied directly from the new
|
||||
aiRecord.h file and wrapped in the `#ifndef HAS_aidset` conditional.
|
||||
|
||||
This same pattern should be followed for all record types except for the lsi,
|
||||
lso and printf record types, which have published their device support entry
|
||||
table structures since they were first added to Base but didn't previously embed
|
||||
the `dset common` member. Device support for these record types therefore can't
|
||||
use the dset name since the new definitions are different from the originals and
|
||||
will cause a compile error, so this pattern should be used instead:
|
||||
|
||||
```C
|
||||
#ifndef HAS_lsidset
|
||||
struct {
|
||||
dset common;
|
||||
long (*read_string)(lsiRecord *prec);
|
||||
}
|
||||
#else
|
||||
lsidset
|
||||
#endif
|
||||
devLsiEtherIP = {
|
||||
{5, NULL, lsi_init, lsi_init_record, get_ioint_info},
|
||||
lsi_read
|
||||
};
|
||||
```
|
||||
|
||||
## EPICS Release 7.0.3.1
|
||||
|
||||
**IMPORTANT NOTE:** *Some record types in this release will not be compatible
|
||||
|
||||
@@ -11,9 +11,10 @@ TOP = ../../../..
|
||||
|
||||
include $(TOP)/configure/CONFIG
|
||||
|
||||
USR_CPPFLAGS += -DUSE_TYPED_RSET
|
||||
USR_CPPFLAGS += -DUSE_TYPED_RSET -DUSE_TYPED_DSET
|
||||
|
||||
SHRLIB_VERSION = 3.17.0
|
||||
# Shared library ABI version.
|
||||
SHRLIB_VERSION = $(EPICS_DATABASE_MAJOR_VERSION).$(EPICS_DATABASE_MINOR_VERSION).$(EPICS_DATABASE_MAINTENANCE_VERSION)
|
||||
|
||||
LIBRARY_IOC += dbCore
|
||||
dbCore_LIBS += ca Com
|
||||
|
||||
@@ -34,7 +34,7 @@ struct link; /* aka DBLINK */
|
||||
*
|
||||
* In Makefile:
|
||||
@code
|
||||
USR_CFLAGS += -DUSE_TYPED_RSET -DUSE_TYPED_DSET
|
||||
USR_CPPFLAGS += -DUSE_TYPED_RSET -DUSE_TYPED_DSET
|
||||
@endcode
|
||||
*
|
||||
* In C source file:
|
||||
@@ -48,10 +48,7 @@ struct link; /* aka DBLINK */
|
||||
static long get_iointr_info(int detach, dbCommon *prec, IOCSCANPVT* pscan);
|
||||
static long longin_read(longinRecord *prec);
|
||||
|
||||
const struct {
|
||||
dset common;
|
||||
long (*read)(longinRecord *prec);
|
||||
} devLiDevName = {
|
||||
longindset devLiDevName = {
|
||||
{
|
||||
5, // 4 from dset + 1 from longinRecord
|
||||
NULL,
|
||||
|
||||
@@ -11,9 +11,10 @@ TOP = ../../../..
|
||||
|
||||
include $(TOP)/configure/CONFIG
|
||||
|
||||
USR_CPPFLAGS += -DUSE_TYPED_RSET
|
||||
USR_CPPFLAGS += -DUSE_TYPED_RSET -DUSE_TYPED_DSET
|
||||
|
||||
SHRLIB_VERSION = 3.17.0
|
||||
# Shared library ABI version.
|
||||
SHRLIB_VERSION = $(EPICS_DATABASE_MAJOR_VERSION).$(EPICS_DATABASE_MINOR_VERSION).$(EPICS_DATABASE_MAINTENANCE_VERSION)
|
||||
|
||||
LIBRARY_IOC += dbRecStd
|
||||
dbRecStd_LIBS = dbCore ca Com
|
||||
|
||||
@@ -47,7 +47,6 @@ dbRecStd_SRCS += devSASoft.c
|
||||
dbRecStd_SRCS += devSiSoft.c
|
||||
dbRecStd_SRCS += devSoSoft.c
|
||||
dbRecStd_SRCS += devWfSoft.c
|
||||
dbRecStd_SRCS += devGeneralTime.c
|
||||
|
||||
dbRecStd_SRCS += devAiSoftCallback.c
|
||||
dbRecStd_SRCS += devBiSoftCallback.c
|
||||
@@ -68,6 +67,7 @@ dbRecStd_SRCS += devMbboDirectSoftCallback.c
|
||||
dbRecStd_SRCS += devPrintfSoftCallback.c
|
||||
dbRecStd_SRCS += devSoSoftCallback.c
|
||||
|
||||
dbRecStd_SRCS += devGeneralTime.c
|
||||
dbRecStd_SRCS += devTimestamp.c
|
||||
dbRecStd_SRCS += devStdio.c
|
||||
dbRecStd_SRCS += devEnviron.c
|
||||
|
||||
@@ -32,28 +32,18 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devAaiSoft */
|
||||
static long init_record();
|
||||
static long read_aai();
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_aai(aaiRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_aai;
|
||||
} devAaiSoft = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
aaidset devAaiSoft = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
read_aai
|
||||
};
|
||||
epicsExportAddress(dset,devAaiSoft);
|
||||
epicsExportAddress(dset, devAaiSoft);
|
||||
|
||||
static long init_record(aaiRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
aaiRecord *prec = (aaiRecord *)pcommon;
|
||||
DBLINK *plink = &prec->inp;
|
||||
|
||||
/* This is pass 0, link hasn't been initialized yet */
|
||||
|
||||
@@ -30,28 +30,19 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devAaoSoft */
|
||||
static long init_record();
|
||||
static long write_aao();
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long write_aao(aaoRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_aao;
|
||||
} devAaoSoft = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
aaodset devAaoSoft = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
write_aao
|
||||
};
|
||||
epicsExportAddress(dset,devAaoSoft);
|
||||
epicsExportAddress(dset, devAaoSoft);
|
||||
|
||||
static long init_record(aaoRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
aaoRecord *prec = (aaoRecord *)pcommon;
|
||||
|
||||
if (dbLinkIsConstant(&prec->out)) {
|
||||
prec->nord = 0;
|
||||
}
|
||||
|
||||
@@ -26,30 +26,19 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devAiSoft */
|
||||
static long init_record(aiRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_ai(aiRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_ai;
|
||||
DEVSUPFUN special_linconv;
|
||||
} devAiSoft = {
|
||||
6,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
read_ai,
|
||||
NULL
|
||||
aidset devAiSoft = {
|
||||
{6, NULL, NULL, init_record, NULL},
|
||||
read_ai, NULL
|
||||
};
|
||||
epicsExportAddress(dset, devAiSoft);
|
||||
|
||||
static long init_record(aiRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
aiRecord *prec = (aiRecord *)pcommon;
|
||||
|
||||
if (recGblInitConstantLink(&prec->inp, DBF_DOUBLE, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
|
||||
@@ -153,8 +153,10 @@ static long init(int pass)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static long init_record(aiRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
aiRecord *prec = (aiRecord *)pcommon;
|
||||
|
||||
if (recGblInitConstantLink(&prec->inp, DBF_DOUBLE, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
@@ -213,14 +215,8 @@ static long read_ai(aiRecord *prec)
|
||||
return 2;
|
||||
}
|
||||
|
||||
/* Create the dset for devAiSoftCallback */
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN read_ai;
|
||||
DEVSUPFUN special_linconv;
|
||||
} devAiSoftCallback = {
|
||||
aidset devAiSoftCallback = {
|
||||
{6, NULL, init, init_record, NULL},
|
||||
read_ai,
|
||||
NULL
|
||||
read_ai, NULL
|
||||
};
|
||||
epicsExportAddress(dset, devAiSoftCallback);
|
||||
|
||||
@@ -25,30 +25,19 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devAiSoftRaw */
|
||||
static long init_record(aiRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_ai(aiRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_ai;
|
||||
DEVSUPFUN special_linconv;
|
||||
} devAiSoftRaw = {
|
||||
6,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
read_ai,
|
||||
NULL
|
||||
aidset devAiSoftRaw = {
|
||||
{6, NULL, NULL, init_record, NULL},
|
||||
read_ai, NULL
|
||||
};
|
||||
epicsExportAddress(dset, devAiSoftRaw);
|
||||
|
||||
static long init_record(aiRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
aiRecord *prec = (aiRecord *)pcommon;
|
||||
|
||||
recGblInitConstantLink(&prec->inp, DBF_LONG, &prec->rval);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -31,31 +31,17 @@
|
||||
#include "aoRecord.h"
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* added for Channel Access Links */
|
||||
static long init_record(aoRecord *prec);
|
||||
|
||||
/* Create the dset for devAoSoft */
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long write_ao(aoRecord *prec);
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_ao;
|
||||
DEVSUPFUN special_linconv;
|
||||
}devAoSoft={
|
||||
6,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
write_ao,
|
||||
NULL};
|
||||
epicsExportAddress(dset,devAoSoft);
|
||||
|
||||
|
||||
static long init_record(aoRecord *prec)
|
||||
aodset devAoSoft = {
|
||||
{6, NULL, NULL, init_record, NULL},
|
||||
write_ao, NULL
|
||||
};
|
||||
epicsExportAddress(dset, devAoSoft);
|
||||
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
|
||||
long status=0;
|
||||
|
||||
@@ -31,23 +31,12 @@
|
||||
|
||||
/* Create the dset for devAoSoftCallback */
|
||||
static long write_ao(aoRecord *prec);
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_ao;
|
||||
DEVSUPFUN special_linconv;
|
||||
}devAoSoftCallback={
|
||||
6,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
write_ao,
|
||||
NULL};
|
||||
epicsExportAddress(dset,devAoSoftCallback);
|
||||
|
||||
aodset devAoSoftCallback = {
|
||||
{6, NULL, NULL, NULL, NULL},
|
||||
write_ao, NULL
|
||||
};
|
||||
epicsExportAddress(dset, devAoSoftCallback);
|
||||
|
||||
static long write_ao(aoRecord *prec)
|
||||
{
|
||||
|
||||
@@ -33,25 +33,13 @@
|
||||
|
||||
/* Create the dset for devAoSoftRaw */
|
||||
static long write_ao(aoRecord *prec);
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_ao;
|
||||
DEVSUPFUN special_linconv;
|
||||
}devAoSoftRaw={
|
||||
6,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
write_ao,
|
||||
NULL
|
||||
|
||||
aodset devAoSoftRaw = {
|
||||
{6, NULL, NULL, NULL, NULL},
|
||||
write_ao, NULL
|
||||
};
|
||||
epicsExportAddress(dset,devAoSoftRaw);
|
||||
|
||||
epicsExportAddress(dset, devAoSoftRaw);
|
||||
|
||||
static long write_ao(aoRecord *prec)
|
||||
{
|
||||
long status;
|
||||
|
||||
@@ -69,20 +69,9 @@ static long read_bi(biRecord *prec)
|
||||
return 2;
|
||||
}
|
||||
|
||||
static struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_bi;
|
||||
} devBiDbState = {
|
||||
5,
|
||||
NULL,
|
||||
init,
|
||||
NULL,
|
||||
NULL,
|
||||
read_bi
|
||||
/* Create the dset for devBiDbState */
|
||||
bidset devBiDbState = {
|
||||
{5, NULL, init, NULL, NULL},
|
||||
read_bi
|
||||
};
|
||||
|
||||
epicsExportAddress(dset, devBiDbState);
|
||||
|
||||
@@ -25,28 +25,19 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devBiSoft */
|
||||
static long init_record(biRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_bi(biRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_bi;
|
||||
} devBiSoft = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
bidset devBiSoft = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
read_bi
|
||||
};
|
||||
epicsExportAddress(dset, devBiSoft);
|
||||
|
||||
static long init_record(biRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
biRecord *prec = (biRecord *)pcommon;
|
||||
|
||||
if (recGblInitConstantLink(&prec->inp, DBF_ENUM, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
return 0;
|
||||
|
||||
@@ -151,8 +151,10 @@ static long init(int pass)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static long init_record(biRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
biRecord *prec = (biRecord *)pcommon;
|
||||
|
||||
if (recGblInitConstantLink(&prec->inp, DBR_ENUM, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
@@ -204,10 +206,7 @@ static long read_bi(biRecord *prec)
|
||||
}
|
||||
|
||||
/* Create the dset for devBiSoftCallback */
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN read_bi;
|
||||
} devBiSoftCallback = {
|
||||
bidset devBiSoftCallback = {
|
||||
{5, NULL, init, init_record, NULL},
|
||||
read_bi
|
||||
};
|
||||
|
||||
@@ -25,28 +25,19 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devBiSoftRaw */
|
||||
static long init_record(biRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_bi(biRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_bi;
|
||||
} devBiSoftRaw = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
bidset devBiSoftRaw = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
read_bi
|
||||
};
|
||||
epicsExportAddress(dset, devBiSoftRaw);
|
||||
|
||||
static long init_record(biRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
biRecord *prec = (biRecord *)pcommon;
|
||||
|
||||
recGblInitConstantLink(&prec->inp, DBF_ULONG, &prec->rval);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -67,20 +67,9 @@ static long write_bo(boRecord *prec)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_bo;
|
||||
} devBoDbState = {
|
||||
5,
|
||||
NULL,
|
||||
init,
|
||||
NULL,
|
||||
NULL,
|
||||
write_bo
|
||||
/* Create the dset for devBoDbState */
|
||||
bodset devBoDbState = {
|
||||
{5, NULL, init, NULL, NULL},
|
||||
write_bo
|
||||
};
|
||||
|
||||
epicsExportAddress(dset, devBoDbState);
|
||||
|
||||
@@ -29,31 +29,18 @@
|
||||
#include "boRecord.h"
|
||||
#include "epicsExport.h"
|
||||
|
||||
static long init_record(boRecord *prec);
|
||||
|
||||
/* Create the dset for devBoSoft */
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long write_bo(boRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_bo;
|
||||
}devBoSoft={
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
write_bo
|
||||
bodset devBoSoft = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
write_bo
|
||||
};
|
||||
epicsExportAddress(dset,devBoSoft);
|
||||
|
||||
static long init_record(boRecord *prec)
|
||||
epicsExportAddress(dset, devBoSoft);
|
||||
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
|
||||
long status=0;
|
||||
|
||||
/* dont convert */
|
||||
|
||||
@@ -31,22 +31,11 @@
|
||||
/* Create the dset for devBoCallbackSoft */
|
||||
static long write_bo(boRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_bo;
|
||||
}devBoSoftCallback={
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
write_bo
|
||||
bodset devBoSoftCallback = {
|
||||
{5, NULL, NULL, NULL, NULL},
|
||||
write_bo
|
||||
};
|
||||
epicsExportAddress(dset,devBoSoftCallback);
|
||||
epicsExportAddress(dset, devBoSoftCallback);
|
||||
|
||||
static long write_bo(boRecord *prec)
|
||||
{
|
||||
@@ -64,4 +53,3 @@ static long write_bo(boRecord *prec)
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,30 +28,17 @@
|
||||
#include "boRecord.h"
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* added for Channel Access Links */
|
||||
static long init_record(boRecord *prec);
|
||||
|
||||
/* Create the dset for devBoSoftRaw */
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long write_bo(boRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_bo;
|
||||
}devBoSoftRaw={
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
write_bo
|
||||
bodset devBoSoftRaw = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
write_bo
|
||||
};
|
||||
epicsExportAddress(dset,devBoSoftRaw);
|
||||
|
||||
static long init_record(boRecord *prec)
|
||||
epicsExportAddress(dset, devBoSoftRaw);
|
||||
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
long status;
|
||||
|
||||
|
||||
@@ -31,15 +31,9 @@
|
||||
|
||||
static long write_calcout(calcoutRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write;
|
||||
} devCalcoutSoft = {
|
||||
5, NULL, NULL, NULL, NULL, write_calcout
|
||||
calcoutdset devCalcoutSoft = {
|
||||
{5, NULL, NULL, NULL, NULL},
|
||||
write_calcout
|
||||
};
|
||||
epicsExportAddress(dset, devCalcoutSoft);
|
||||
|
||||
|
||||
@@ -31,15 +31,9 @@
|
||||
|
||||
static long write_calcout(calcoutRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write;
|
||||
} devCalcoutSoftCallback = {
|
||||
5, NULL, NULL, NULL, NULL, write_calcout
|
||||
calcoutdset devCalcoutSoftCallback = {
|
||||
{5, NULL, NULL, NULL, NULL},
|
||||
write_calcout
|
||||
};
|
||||
epicsExportAddress(dset, devCalcoutSoftCallback);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -119,10 +119,8 @@ static long read_stringin(stringinRecord *prec)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct {
|
||||
dset common;
|
||||
DEVSUPFUN read;
|
||||
} devSiEnviron = {
|
||||
{5, NULL, init_stringin, NULL, NULL}, read_stringin
|
||||
stringindset devSiEnviron = {
|
||||
{5, NULL, init_stringin, NULL, NULL},
|
||||
read_stringin
|
||||
};
|
||||
epicsExportAddress(dset, devSiEnviron);
|
||||
|
||||
@@ -25,28 +25,19 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devEventSoft */
|
||||
static long init_record(eventRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_event(eventRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_event;
|
||||
} devEventSoft = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
eventdset devEventSoft = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
read_event
|
||||
};
|
||||
epicsExportAddress(dset, devEventSoft);
|
||||
|
||||
static long init_record(eventRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
eventRecord *prec = (eventRecord *)pcommon;
|
||||
|
||||
if (recGblInitConstantLink(&prec->inp, DBF_STRING, prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
|
||||
@@ -50,8 +50,9 @@ static struct ai_channel {
|
||||
{"TIME", getCurrentTime},
|
||||
};
|
||||
|
||||
static long init_ai(aiRecord *prec)
|
||||
static long init_ai(dbCommon *pcommon)
|
||||
{
|
||||
aiRecord *prec = (aiRecord *)pcommon;
|
||||
int i;
|
||||
|
||||
if (prec->inp.type != INST_IO) {
|
||||
@@ -91,12 +92,9 @@ static long read_ai(aiRecord *prec)
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN read_write;
|
||||
DEVSUPFUN special_linconv;
|
||||
} devAiGeneralTime = {
|
||||
{6, NULL, NULL, init_ai, NULL}, read_ai, NULL
|
||||
aidset devAiGeneralTime = {
|
||||
{6, NULL, NULL, init_ai, NULL},
|
||||
read_ai, NULL
|
||||
};
|
||||
epicsExportAddress(dset, devAiGeneralTime);
|
||||
|
||||
@@ -114,8 +112,9 @@ static struct bo_channel {
|
||||
{"RSTERRCNT", resetErrors},
|
||||
};
|
||||
|
||||
static long init_bo(boRecord *prec)
|
||||
static long init_bo(dbCommon *pcommon)
|
||||
{
|
||||
boRecord *prec = (boRecord *)pcommon;
|
||||
int i;
|
||||
|
||||
if (prec->out.type != INST_IO) {
|
||||
@@ -151,15 +150,14 @@ static long write_bo(boRecord *prec)
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN read_write;
|
||||
} devBoGeneralTime = {
|
||||
{5, NULL, NULL, init_bo, NULL}, write_bo
|
||||
bodset devBoGeneralTime = {
|
||||
{5, NULL, NULL, init_bo, NULL},
|
||||
write_bo
|
||||
};
|
||||
epicsExportAddress(dset, devBoGeneralTime);
|
||||
|
||||
|
||||
|
||||
/******* longin record *************/
|
||||
static int errorCount(void)
|
||||
{
|
||||
@@ -173,8 +171,9 @@ static struct li_channel {
|
||||
{"GETERRCNT", errorCount},
|
||||
};
|
||||
|
||||
static long init_li(longinRecord *prec)
|
||||
static long init_li(dbCommon *pcommon)
|
||||
{
|
||||
longinRecord *prec = (longinRecord *)pcommon;
|
||||
int i;
|
||||
|
||||
if (prec->inp.type != INST_IO) {
|
||||
@@ -209,11 +208,9 @@ static long read_li(longinRecord *prec)
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN read_write;
|
||||
} devLiGeneralTime = {
|
||||
{5, NULL, NULL, init_li, NULL}, read_li
|
||||
longindset devLiGeneralTime = {
|
||||
{5, NULL, NULL, init_li, NULL},
|
||||
read_li
|
||||
};
|
||||
epicsExportAddress(dset, devLiGeneralTime);
|
||||
|
||||
@@ -243,8 +240,9 @@ static struct si_channel {
|
||||
{"BESTTEP", eventProvider},
|
||||
};
|
||||
|
||||
static long init_si(stringinRecord *prec)
|
||||
static long init_si(dbCommon *pcommon)
|
||||
{
|
||||
stringinRecord *prec = (stringinRecord *)pcommon;
|
||||
int i;
|
||||
|
||||
if (prec->inp.type != INST_IO) {
|
||||
@@ -288,10 +286,8 @@ static long read_si(stringinRecord *prec)
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN read_write;
|
||||
} devSiGeneralTime = {
|
||||
{5, NULL, NULL, init_si, NULL}, read_si
|
||||
stringindset devSiGeneralTime = {
|
||||
{5, NULL, NULL, init_si, NULL},
|
||||
read_si
|
||||
};
|
||||
epicsExportAddress(dset, devSiGeneralTime);
|
||||
|
||||
@@ -28,29 +28,19 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devHistogramSoft */
|
||||
static long init_record(histogramRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_histogram(histogramRecord *prec);
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_histogram;
|
||||
DEVSUPFUN special_linconv;
|
||||
}devHistogramSoft={
|
||||
6,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
read_histogram,
|
||||
NULL
|
||||
|
||||
histogramdset devHistogramSoft = {
|
||||
{6, NULL, NULL, init_record, NULL},
|
||||
read_histogram, NULL
|
||||
};
|
||||
epicsExportAddress(dset,devHistogramSoft);
|
||||
|
||||
static long init_record(histogramRecord *prec)
|
||||
epicsExportAddress(dset, devHistogramSoft);
|
||||
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
histogramRecord *prec = (histogramRecord *)pcommon;
|
||||
|
||||
if (recGblInitConstantLink(&prec->svl,DBF_DOUBLE,&prec->sgnl))
|
||||
prec->udf = FALSE;
|
||||
|
||||
|
||||
@@ -24,29 +24,9 @@
|
||||
#include "int64inRecord.h"
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devI64inSoft */
|
||||
static long init_record(int64inRecord *prec);
|
||||
static long read_int64in(int64inRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_int64in;
|
||||
} devI64inSoft = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
read_int64in
|
||||
};
|
||||
epicsExportAddress(dset, devI64inSoft);
|
||||
|
||||
static long init_record(int64inRecord *prec)
|
||||
static long init_record(dbCommon *common)
|
||||
{
|
||||
int64inRecord *prec = (int64inRecord *)common;
|
||||
if (recGblInitConstantLink(&prec->inp, DBF_INT64, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
@@ -76,3 +56,11 @@ static long read_int64in(int64inRecord *prec)
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/* Create the dset for devI64inSoft */
|
||||
|
||||
int64indset devI64inSoft = {
|
||||
{ 5, NULL, NULL, init_record, NULL }, read_int64in
|
||||
};
|
||||
epicsExportAddress(dset, devI64inSoft);
|
||||
|
||||
|
||||
@@ -151,8 +151,9 @@ static long init(int pass)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static long init_record(int64inRecord *prec)
|
||||
static long init_record(dbCommon *common)
|
||||
{
|
||||
int64inRecord *prec = (int64inRecord *)common;
|
||||
if (recGblInitConstantLink(&prec->inp, DBR_INT64, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
@@ -204,11 +205,7 @@ static long read_int64in(int64inRecord *prec)
|
||||
}
|
||||
|
||||
/* Create the dset for devI64inSoftCallback */
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN read_int64in;
|
||||
} devI64inSoftCallback = {
|
||||
{5, NULL, init, init_record, NULL},
|
||||
read_int64in
|
||||
int64indset devI64inSoftCallback = {
|
||||
{ 5, NULL, init, init_record, NULL }, read_int64in
|
||||
};
|
||||
epicsExportAddress(dset, devI64inSoftCallback);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -25,28 +25,19 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devLiSoft */
|
||||
static long init_record(longinRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_longin(longinRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_longin;
|
||||
} devLiSoft = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
longindset devLiSoft = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
read_longin
|
||||
};
|
||||
epicsExportAddress(dset, devLiSoft);
|
||||
|
||||
static long init_record(longinRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
longinRecord *prec = (longinRecord *)pcommon;
|
||||
|
||||
if (recGblInitConstantLink(&prec->inp, DBF_LONG, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
|
||||
@@ -151,8 +151,10 @@ static long init(int pass)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static long init_record(longinRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
longinRecord *prec = (longinRecord *)pcommon;
|
||||
|
||||
if (recGblInitConstantLink(&prec->inp, DBR_LONG, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
@@ -204,10 +206,7 @@ static long read_li(longinRecord *prec)
|
||||
}
|
||||
|
||||
/* Create the dset for devLiSoftCallback */
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN read_li;
|
||||
} devLiSoftCallback = {
|
||||
longindset devLiSoftCallback = {
|
||||
{5, NULL, init, init_record, NULL},
|
||||
read_li
|
||||
};
|
||||
|
||||
@@ -26,26 +26,16 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devLoSoft */
|
||||
static long init_record(longoutRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long write_longout(longoutRecord *prec);
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_longout;
|
||||
}devLoSoft={
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
write_longout
|
||||
|
||||
longoutdset devLoSoft = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
write_longout
|
||||
};
|
||||
epicsExportAddress(dset,devLoSoft);
|
||||
|
||||
static long init_record(longoutRecord *prec)
|
||||
epicsExportAddress(dset, devLoSoft);
|
||||
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
return 0;
|
||||
} /* end init_record() */
|
||||
|
||||
@@ -29,22 +29,12 @@
|
||||
|
||||
/* Create the dset for devLoSoftCallback */
|
||||
static long write_longout(longoutRecord *prec);
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_longout;
|
||||
}devLoSoftCallback={
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
write_longout
|
||||
|
||||
longoutdset devLoSoftCallback = {
|
||||
{5, NULL, NULL, NULL, NULL},
|
||||
write_longout
|
||||
};
|
||||
epicsExportAddress(dset,devLoSoftCallback);
|
||||
epicsExportAddress(dset, devLoSoftCallback);
|
||||
|
||||
static long write_longout(longoutRecord *prec)
|
||||
{
|
||||
@@ -62,4 +52,3 @@ static long write_longout(longoutRecord *prec)
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -21,6 +21,6 @@ static long write_string(lsoRecord *prec)
|
||||
}
|
||||
|
||||
lsodset devLsoSoft = {
|
||||
5, NULL, NULL, NULL, NULL, write_string
|
||||
{ 5, NULL, NULL, NULL, NULL }, write_string
|
||||
};
|
||||
epicsExportAddress(dset, devLsoSoft);
|
||||
|
||||
@@ -40,7 +40,7 @@ static long write_string(lsoRecord *prec)
|
||||
}
|
||||
|
||||
lsodset devLsoSoftCallback = {
|
||||
5, NULL, NULL, NULL, NULL, write_string
|
||||
{ 5, NULL, NULL, NULL, NULL }, write_string
|
||||
};
|
||||
epicsExportAddress(dset, devLsoSoftCallback);
|
||||
|
||||
|
||||
@@ -25,28 +25,19 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devMbbiDirectSoft */
|
||||
static long init_record(mbbiDirectRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_mbbi(mbbiDirectRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_mbbi;
|
||||
} devMbbiDirectSoft = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
mbbidirectdset devMbbiDirectSoft = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
read_mbbi
|
||||
};
|
||||
epicsExportAddress(dset, devMbbiDirectSoft);
|
||||
|
||||
static long init_record(mbbiDirectRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
mbbiDirectRecord *prec = (mbbiDirectRecord *)pcommon;
|
||||
|
||||
if (recGblInitConstantLink(&prec->inp, DBR_ULONG, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
|
||||
@@ -151,8 +151,10 @@ static long init(int pass)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static long init_record(mbbiDirectRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
mbbiDirectRecord *prec = (mbbiDirectRecord *)pcommon;
|
||||
|
||||
if (recGblInitConstantLink(&prec->inp, DBR_ULONG, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
@@ -204,10 +206,7 @@ static long read_mbbiDirect(mbbiDirectRecord *prec)
|
||||
}
|
||||
|
||||
/* Create the dset for devMbbiDirectSoftCallback */
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN read_mbbiDirect;
|
||||
} devMbbiDirectSoftCallback = {
|
||||
mbbidirectdset devMbbiDirectSoftCallback = {
|
||||
{5, NULL, init, init_record, NULL},
|
||||
read_mbbiDirect
|
||||
};
|
||||
|
||||
@@ -25,28 +25,19 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devMbbiDirectSoftRaw */
|
||||
static long init_record(mbbiDirectRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_mbbi(mbbiDirectRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_mbbi;
|
||||
} devMbbiDirectSoftRaw = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
mbbidirectdset devMbbiDirectSoftRaw = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
read_mbbi
|
||||
};
|
||||
epicsExportAddress(dset, devMbbiDirectSoftRaw);
|
||||
|
||||
static long init_record(mbbiDirectRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
mbbiDirectRecord *prec = (mbbiDirectRecord *)pcommon;
|
||||
|
||||
recGblInitConstantLink(&prec->inp, DBF_ULONG, &prec->rval);
|
||||
|
||||
/* Preserve old functionality */
|
||||
|
||||
@@ -25,28 +25,19 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devMbbiSoft */
|
||||
static long init_record(mbbiRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_mbbi(mbbiRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_mbbi;
|
||||
} devMbbiSoft = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
mbbidset devMbbiSoft = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
read_mbbi
|
||||
};
|
||||
epicsExportAddress(dset, devMbbiSoft);
|
||||
|
||||
static long init_record(mbbiRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
mbbiRecord *prec = (mbbiRecord *)pcommon;
|
||||
|
||||
if (recGblInitConstantLink(&prec->inp, DBF_ENUM, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
|
||||
@@ -151,8 +151,10 @@ static long init(int pass)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static long init_record(mbbiRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
mbbiRecord *prec = (mbbiRecord *)pcommon;
|
||||
|
||||
if (recGblInitConstantLink(&prec->inp, DBR_ENUM, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
@@ -204,11 +206,8 @@ static long read_mbbi(mbbiRecord *prec)
|
||||
}
|
||||
|
||||
/* Create the dset for devMbbiSoftCallback */
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN read_mbbi;
|
||||
} devMbbiSoftCallback = {
|
||||
mbbidset devMbbiSoftCallback = {
|
||||
{5, NULL, init, init_record, NULL},
|
||||
read_mbbi
|
||||
};
|
||||
epicsExportAddress(dset,devMbbiSoftCallback);
|
||||
epicsExportAddress(dset, devMbbiSoftCallback);
|
||||
|
||||
@@ -25,28 +25,19 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devMbbiSoftRaw */
|
||||
static long init_record(mbbiRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_mbbi(mbbiRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_mbbi;
|
||||
} devMbbiSoftRaw = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
mbbidset devMbbiSoftRaw = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
read_mbbi
|
||||
};
|
||||
epicsExportAddress(dset, devMbbiSoftRaw);
|
||||
|
||||
static long init_record(mbbiRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
mbbiRecord *prec = (mbbiRecord *)pcommon;
|
||||
|
||||
recGblInitConstantLink(&prec->inp, DBF_ULONG, &prec->rval);
|
||||
|
||||
/* Preserve old functionality*/
|
||||
|
||||
@@ -26,10 +26,7 @@ static long write_mbbo(mbboDirectRecord *prec)
|
||||
}
|
||||
|
||||
/* Create the dset for devMbboDirectSoft */
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN write;
|
||||
} devMbboDirectSoft = {
|
||||
mbbodirectdset devMbboDirectSoft = {
|
||||
{5, NULL, NULL, NULL, NULL},
|
||||
write_mbbo
|
||||
};
|
||||
|
||||
@@ -38,11 +38,8 @@ static long write_mbbo(mbboDirectRecord *prec)
|
||||
return status;
|
||||
}
|
||||
|
||||
/* Create the dset for devMbboSoft */
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN write;
|
||||
} devMbboDirectSoftCallback = {
|
||||
/* Create the dset for devMbboDirectSoftCallback */
|
||||
mbbodirectdset devMbboDirectSoftCallback = {
|
||||
{5, NULL, NULL, NULL, NULL},
|
||||
write_mbbo
|
||||
};
|
||||
|
||||
@@ -20,8 +20,10 @@
|
||||
#include "mbboDirectRecord.h"
|
||||
#include "epicsExport.h"
|
||||
|
||||
static long init_record(mbboDirectRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
mbboDirectRecord *prec = (mbboDirectRecord *)pcommon;
|
||||
|
||||
if (prec->nobt == 0)
|
||||
prec->mask = 0xffffffff;
|
||||
|
||||
@@ -40,10 +42,7 @@ static long write_mbbo(mbboDirectRecord *prec)
|
||||
}
|
||||
|
||||
/* Create the dset for devMbboDirectSoftRaw */
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN write;
|
||||
} devMbboDirectSoftRaw = {
|
||||
mbbodirectdset devMbboDirectSoftRaw = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
write_mbbo
|
||||
};
|
||||
|
||||
@@ -27,26 +27,16 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devMbboSoft */
|
||||
static long init_record(mbboRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long write_mbbo(mbboRecord *prec);
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_mbbo;
|
||||
}devMbboSoft={
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
write_mbbo
|
||||
|
||||
mbbodset devMbboSoft = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
write_mbbo
|
||||
};
|
||||
epicsExportAddress(dset,devMbboSoft);
|
||||
|
||||
static long init_record(mbboRecord *prec)
|
||||
epicsExportAddress(dset, devMbboSoft);
|
||||
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
/*dont convert*/
|
||||
return 2;
|
||||
|
||||
@@ -28,22 +28,12 @@
|
||||
|
||||
/* Create the dset for devMbboSoftCallback */
|
||||
static long write_mbbo(mbboRecord *prec);
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_mbbo;
|
||||
}devMbboSoftCallback={
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
write_mbbo
|
||||
|
||||
mbbodset devMbboSoftCallback = {
|
||||
{5, NULL, NULL, NULL, NULL},
|
||||
write_mbbo
|
||||
};
|
||||
epicsExportAddress(dset,devMbboSoftCallback);
|
||||
epicsExportAddress(dset, devMbboSoftCallback);
|
||||
|
||||
static long write_mbbo(mbboRecord *prec)
|
||||
{
|
||||
|
||||
@@ -20,8 +20,10 @@
|
||||
#include "mbboRecord.h"
|
||||
#include "epicsExport.h"
|
||||
|
||||
static long init_record(mbboRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
mbboRecord *prec = (mbboRecord *)pcommon;
|
||||
|
||||
if (prec->nobt == 0)
|
||||
prec->mask = 0xffffffff;
|
||||
|
||||
@@ -40,10 +42,7 @@ static long write_mbbo(mbboRecord *prec)
|
||||
}
|
||||
|
||||
/* Create the dset for devMbboSoftRaw */
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN write;
|
||||
} devMbboSoftRaw = {
|
||||
mbbodset devMbboSoftRaw = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
write_mbbo
|
||||
};
|
||||
|
||||
@@ -19,7 +19,7 @@ static long write_string(printfRecord *prec)
|
||||
}
|
||||
|
||||
printfdset devPrintfSoft = {
|
||||
5, NULL, NULL, NULL, NULL, write_string
|
||||
{ 5, NULL, NULL, NULL, NULL }, write_string
|
||||
};
|
||||
epicsExportAddress(dset, devPrintfSoft);
|
||||
|
||||
|
||||
@@ -40,6 +40,6 @@ static long write_string(printfRecord *prec)
|
||||
}
|
||||
|
||||
printfdset devPrintfSoftCallback = {
|
||||
5, NULL, NULL, NULL, NULL, write_string
|
||||
{ 5, NULL, NULL, NULL, NULL }, write_string
|
||||
};
|
||||
epicsExportAddress(dset, devPrintfSoftCallback);
|
||||
|
||||
@@ -26,22 +26,11 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devSASoft */
|
||||
static long init_record(subArrayRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_sa(subArrayRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_sa;
|
||||
} devSASoft = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
sadset devSASoft = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
read_sa
|
||||
};
|
||||
epicsExportAddress(dset, devSASoft);
|
||||
@@ -65,8 +54,9 @@ static void subset(subArrayRecord *prec, long nRequest)
|
||||
prec->udf = FALSE;
|
||||
}
|
||||
|
||||
static long init_record(subArrayRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
subArrayRecord *prec = (subArrayRecord *)pcommon;
|
||||
long nRequest = prec->indx + prec->nelm;
|
||||
long status;
|
||||
|
||||
|
||||
@@ -27,28 +27,19 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devSiSoft */
|
||||
static long init_record(stringinRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_stringin(stringinRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_stringin;
|
||||
} devSiSoft = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
stringindset devSiSoft = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
read_stringin
|
||||
};
|
||||
epicsExportAddress(dset, devSiSoft);
|
||||
|
||||
static long init_record(stringinRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
stringinRecord *prec = (stringinRecord *)pcommon;
|
||||
|
||||
if (recGblInitConstantLink(&prec->inp, DBF_STRING, prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
|
||||
@@ -153,8 +153,10 @@ static long init(int pass)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static long init_record(stringinRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
stringinRecord *prec = (stringinRecord *)pcommon;
|
||||
|
||||
if (recGblInitConstantLink(&prec->inp, DBR_STRING, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
@@ -207,11 +209,8 @@ static long read_si(stringinRecord *prec)
|
||||
}
|
||||
|
||||
/* Create the dset for devSiSoftCallback */
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN read_li;
|
||||
} devSiSoftCallback = {
|
||||
stringindset devSiSoftCallback = {
|
||||
{5, NULL, init, init_record, NULL},
|
||||
read_si
|
||||
};
|
||||
epicsExportAddress(dset,devSiSoftCallback);
|
||||
epicsExportAddress(dset, devSiSoftCallback);
|
||||
|
||||
@@ -27,19 +27,9 @@
|
||||
|
||||
/* Create the dset for devSoSoft */
|
||||
static long write_stringout(stringoutRecord *prec);
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_stringout;
|
||||
} devSoSoft = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
stringoutdset devSoSoft = {
|
||||
{5, NULL, NULL, NULL, NULL},
|
||||
write_stringout
|
||||
};
|
||||
epicsExportAddress(dset, devSoSoft);
|
||||
|
||||
@@ -27,19 +27,9 @@
|
||||
|
||||
/* Create the dset for devSoSoftCallback */
|
||||
static long write_stringout(stringoutRecord *prec);
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_stringout;
|
||||
} devSoSoftCallback = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
stringoutdset devSoSoftCallback = {
|
||||
{5, NULL, NULL, NULL, NULL},
|
||||
write_stringout
|
||||
};
|
||||
epicsExportAddress(dset, devSoSoftCallback);
|
||||
@@ -60,4 +50,3 @@ static long write_stringout(stringoutRecord *prec)
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ static long write_lso(lsoRecord *prec)
|
||||
}
|
||||
|
||||
lsodset devLsoStdio = {
|
||||
5, NULL, init_lso, NULL, NULL, write_lso
|
||||
{ 5, NULL, init_lso, NULL, NULL }, write_lso
|
||||
};
|
||||
epicsExportAddress(dset, devLsoStdio);
|
||||
|
||||
@@ -153,7 +153,7 @@ static long write_printf(printfRecord *prec)
|
||||
}
|
||||
|
||||
printfdset devPrintfStdio = {
|
||||
5, NULL, init_printf, NULL, NULL, write_printf
|
||||
{5, NULL, init_printf, NULL, NULL }, write_printf
|
||||
};
|
||||
epicsExportAddress(dset, devPrintfStdio);
|
||||
|
||||
@@ -202,10 +202,8 @@ static long write_stringout(stringoutRecord *prec)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct {
|
||||
dset common;
|
||||
DEVSUPFUN write;
|
||||
} devSoStdio = {
|
||||
{5, NULL, init_stringout, NULL, NULL}, write_stringout
|
||||
stringoutdset devSoStdio = {
|
||||
{5, NULL, init_stringout, NULL, NULL},
|
||||
write_stringout
|
||||
};
|
||||
epicsExportAddress(dset, devSoStdio);
|
||||
|
||||
@@ -40,12 +40,9 @@ static long read_ai(aiRecord *prec)
|
||||
return 2;
|
||||
}
|
||||
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN read_write;
|
||||
DEVSUPFUN special_linconv;
|
||||
} devTimestampAI = {
|
||||
{6, NULL, initAllow, NULL, NULL}, read_ai, NULL
|
||||
aidset devTimestampAI = {
|
||||
{6, NULL, initAllow, NULL, NULL},
|
||||
read_ai, NULL
|
||||
};
|
||||
epicsExportAddress(dset, devTimestampAI);
|
||||
|
||||
@@ -68,10 +65,8 @@ static long read_stringin (stringinRecord *prec)
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct {
|
||||
dset common;
|
||||
DEVSUPFUN read_stringin;
|
||||
} devTimestampSI = {
|
||||
{5, NULL, initAllow, NULL, NULL}, read_stringin
|
||||
stringindset devTimestampSI = {
|
||||
{5, NULL, initAllow, NULL, NULL},
|
||||
read_stringin
|
||||
};
|
||||
epicsExportAddress(dset, devTimestampSI);
|
||||
|
||||
@@ -26,28 +26,18 @@
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* Create the dset for devWfSoft */
|
||||
static long init_record(waveformRecord *prec);
|
||||
static long init_record(dbCommon *pcommon);
|
||||
static long read_wf(waveformRecord *prec);
|
||||
|
||||
struct {
|
||||
long number;
|
||||
DEVSUPFUN report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_wf;
|
||||
} devWfSoft = {
|
||||
5,
|
||||
NULL,
|
||||
NULL,
|
||||
init_record,
|
||||
NULL,
|
||||
wfdset devWfSoft = {
|
||||
{5, NULL, NULL, init_record, NULL},
|
||||
read_wf
|
||||
};
|
||||
epicsExportAddress(dset, devWfSoft);
|
||||
|
||||
static long init_record(waveformRecord *prec)
|
||||
static long init_record(dbCommon *pcommon)
|
||||
{
|
||||
waveformRecord *prec = (waveformRecord *)pcommon;
|
||||
long nelm = prec->nelm;
|
||||
long status = dbLoadLinkArray(&prec->inp, prec->ftvl, prec->bptr, &nelm);
|
||||
|
||||
|
||||
@@ -90,22 +90,13 @@ rset aaiRSET={
|
||||
};
|
||||
epicsExportAddress(rset,aaiRSET);
|
||||
|
||||
struct aaidset { /* aai dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_aai; /*returns: (-1,0)=>(failure,success)*/
|
||||
};
|
||||
|
||||
static void monitor(aaiRecord *);
|
||||
static long readValue(aaiRecord *);
|
||||
|
||||
static long init_record(struct dbCommon *pcommon, int pass)
|
||||
{
|
||||
struct aaiRecord *prec = (struct aaiRecord *)pcommon;
|
||||
struct aaidset *pdset = (struct aaidset *)(prec->dset);
|
||||
aaidset *pdset = (aaidset *)(prec->dset);
|
||||
|
||||
/* must have dset defined */
|
||||
if (!pdset) {
|
||||
@@ -125,8 +116,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
not change after links are established before pass 1
|
||||
*/
|
||||
|
||||
if (pdset->init_record) {
|
||||
long status = pdset->init_record(prec);
|
||||
if (pdset->common.init_record) {
|
||||
long status = pdset->common.init_record(pcommon);
|
||||
|
||||
/* init_record may set the bptr to point to the data */
|
||||
if (status)
|
||||
@@ -143,7 +134,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
|
||||
|
||||
/* must have read_aai function defined */
|
||||
if (pdset->number < 5 || pdset->read_aai == NULL) {
|
||||
if (pdset->common.number < 5 || pdset->read_aai == NULL) {
|
||||
recGblRecordError(S_dev_missingSup, prec, "aai: init_record");
|
||||
return S_dev_missingSup;
|
||||
}
|
||||
@@ -153,7 +144,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
static long process(struct dbCommon *pcommon)
|
||||
{
|
||||
struct aaiRecord *prec = (struct aaiRecord *)pcommon;
|
||||
struct aaidset *pdset = (struct aaidset *)(prec->dset);
|
||||
aaidset *pdset = (aaidset *)(prec->dset);
|
||||
long status;
|
||||
unsigned char pact = prec->pact;
|
||||
|
||||
@@ -339,7 +330,7 @@ static void monitor(aaiRecord *prec)
|
||||
|
||||
static long readValue(aaiRecord *prec)
|
||||
{
|
||||
struct aaidset *pdset = (struct aaidset *) prec->dset;
|
||||
aaidset *pdset = (aaidset *) prec->dset;
|
||||
long status;
|
||||
|
||||
/* NB: Device support must post updates to NORD */
|
||||
|
||||
@@ -288,6 +288,15 @@ Scan forward link if necessary, set PACT FALSE, and return.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct aaiRecord;
|
||||
%typedef struct aaidset {
|
||||
% dset common; /*init_record returns: (-1,0)=>(failure,success)*/
|
||||
% long (*read_aai)(struct aaiRecord *prec); /*returns: (-1,0)=>(failure,success)*/
|
||||
%} aaidset;
|
||||
%#define HAS_aaidset
|
||||
%
|
||||
field(VAL,DBF_NOACCESS) {
|
||||
prompt("Value")
|
||||
asl(ASL0)
|
||||
|
||||
@@ -90,22 +90,13 @@ rset aaoRSET={
|
||||
};
|
||||
epicsExportAddress(rset,aaoRSET);
|
||||
|
||||
struct aaodset { /* aao dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_aao; /*returns: (-1,0)=>(failure,success)*/
|
||||
};
|
||||
|
||||
static void monitor(aaoRecord *);
|
||||
static long writeValue(aaoRecord *);
|
||||
|
||||
static long init_record(struct dbCommon *pcommon, int pass)
|
||||
{
|
||||
struct aaoRecord *prec = (struct aaoRecord *)pcommon;
|
||||
struct aaodset *pdset = (struct aaodset *)(prec->dset);
|
||||
aaodset *pdset = (aaodset *)(prec->dset);
|
||||
long status;
|
||||
|
||||
/* must have dset defined */
|
||||
@@ -130,9 +121,9 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
not change after links are established before pass 1
|
||||
*/
|
||||
|
||||
if (pdset->init_record) {
|
||||
if (pdset->common.init_record) {
|
||||
/* init_record may set the bptr to point to the data */
|
||||
if ((status = pdset->init_record(prec)))
|
||||
if ((status = pdset->common.init_record(pcommon)))
|
||||
return status;
|
||||
}
|
||||
if (!prec->bptr) {
|
||||
@@ -146,7 +137,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
|
||||
|
||||
/* must have write_aao function defined */
|
||||
if (pdset->number < 5 || pdset->write_aao == NULL) {
|
||||
if (pdset->common.number < 5 || pdset->write_aao == NULL) {
|
||||
recGblRecordError(S_dev_missingSup, prec, "aao: init_record");
|
||||
return S_dev_missingSup;
|
||||
}
|
||||
@@ -156,7 +147,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
static long process(struct dbCommon *pcommon)
|
||||
{
|
||||
struct aaoRecord *prec = (struct aaoRecord *)pcommon;
|
||||
struct aaodset *pdset = (struct aaodset *)(prec->dset);
|
||||
aaodset *pdset = (aaodset *)(prec->dset);
|
||||
long status;
|
||||
unsigned char pact = prec->pact;
|
||||
|
||||
@@ -339,7 +330,7 @@ static void monitor(aaoRecord *prec)
|
||||
|
||||
static long writeValue(aaoRecord *prec)
|
||||
{
|
||||
struct aaodset *pdset = (struct aaodset *) prec->dset;
|
||||
aaodset *pdset = (aaodset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -288,6 +288,15 @@ Scan forward link if necessary, set PACT FALSE, and return.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct aaoRecord;
|
||||
%typedef struct aaodset {
|
||||
% dset common; /*init_record returns: (-1,0)=>(failure,success)*/
|
||||
% long (*write_aao)(struct aaoRecord *prec); /*returns: (-1,0)=>(failure,success)*/
|
||||
%} aaodset;
|
||||
%#define HAS_aaodset
|
||||
%
|
||||
field(VAL,DBF_NOACCESS) {
|
||||
prompt("Value")
|
||||
asl(ASL0)
|
||||
|
||||
@@ -86,17 +86,6 @@ rset aiRSET={
|
||||
};
|
||||
epicsExportAddress(rset,aiRSET);
|
||||
|
||||
typedef struct aidset { /* analog input dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_ai;/*(0,2)=> success and convert,don't convert)*/
|
||||
/* if convert then raw value stored in rval */
|
||||
DEVSUPFUN special_linconv;
|
||||
}aidset;
|
||||
|
||||
static void checkAlarms(aiRecord *prec, epicsTimeStamp *lastTime);
|
||||
static void convert(aiRecord *prec);
|
||||
static void monitor(aiRecord *prec);
|
||||
@@ -118,7 +107,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
return(S_dev_noDSET);
|
||||
}
|
||||
/* must have read_ai function defined */
|
||||
if( (pdset->number < 6) || (pdset->read_ai == NULL) ) {
|
||||
if ((pdset->common.number < 6) || (pdset->read_ai == NULL)) {
|
||||
recGblRecordError(S_dev_missingSup,(void *)prec,"ai: init_record");
|
||||
return(S_dev_missingSup);
|
||||
}
|
||||
@@ -128,8 +117,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
prec->eoff = prec->egul;
|
||||
}
|
||||
|
||||
if( pdset->init_record ) {
|
||||
long status=(*pdset->init_record)(prec);
|
||||
if (pdset->common.init_record) {
|
||||
long status = pdset->common.init_record(pcommon);
|
||||
if (prec->linr == menuConvertSLOPE) {
|
||||
prec->eoff = eoff;
|
||||
prec->eslo = eslo;
|
||||
@@ -190,7 +179,7 @@ static long special(DBADDR *paddr,int after)
|
||||
|
||||
switch(special_type) {
|
||||
case(SPC_LINCONV):
|
||||
if(pdset->number<6) {
|
||||
if (pdset->common.number < 6) {
|
||||
recGblDbaddrError(S_db_noMod,paddr,"ai: special");
|
||||
return(S_db_noMod);
|
||||
}
|
||||
|
||||
@@ -221,6 +221,16 @@ monitoring functionality.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct aiRecord;
|
||||
%typedef struct aidset {
|
||||
% dset common;
|
||||
% long (*read_ai)(struct aiRecord *prec);
|
||||
% long (*special_linconv)(struct aiRecord *prec, int after);
|
||||
%} aidset;
|
||||
%#define HAS_aidset
|
||||
%
|
||||
field(VAL,DBF_DOUBLE) {
|
||||
prompt("Current EGU Value")
|
||||
promptgroup("40 - Input")
|
||||
|
||||
@@ -81,20 +81,10 @@ rset aoRSET={
|
||||
put_enum_str,
|
||||
get_graphic_double,
|
||||
get_control_double,
|
||||
get_alarm_double };
|
||||
|
||||
struct aodset { /* analog input dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /*returns: (0,2)=>(success,success no convert)*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_ao;/*(0)=>(success ) */
|
||||
DEVSUPFUN special_linconv;
|
||||
get_alarm_double
|
||||
};
|
||||
epicsExportAddress(rset,aoRSET);
|
||||
|
||||
|
||||
static void checkAlarms(aoRecord *);
|
||||
static long fetch_value(aoRecord *, double *);
|
||||
static void convert(aoRecord *, double);
|
||||
@@ -104,7 +94,7 @@ static long writeValue(aoRecord *);
|
||||
static long init_record(struct dbCommon *pcommon, int pass)
|
||||
{
|
||||
struct aoRecord *prec = (struct aoRecord *)pcommon;
|
||||
struct aodset *pdset;
|
||||
aodset *pdset;
|
||||
double eoff = prec->eoff, eslo = prec->eslo;
|
||||
double value;
|
||||
long status = 0;
|
||||
@@ -113,7 +103,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
|
||||
recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
|
||||
|
||||
if(!(pdset = (struct aodset *)(prec->dset))) {
|
||||
if(!(pdset = (aodset *)(prec->dset))) {
|
||||
recGblRecordError(S_dev_noDSET,(void *)prec,"ao: init_record");
|
||||
return(S_dev_noDSET);
|
||||
}
|
||||
@@ -122,7 +112,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
prec->udf = isnan(prec->val);
|
||||
|
||||
/* must have write_ao function defined */
|
||||
if ((pdset->number < 6) || (pdset->write_ao ==NULL)) {
|
||||
if ((pdset->common.number < 6) || (pdset->write_ao ==NULL)) {
|
||||
recGblRecordError(S_dev_missingSup,(void *)prec,"ao: init_record");
|
||||
return(S_dev_missingSup);
|
||||
}
|
||||
@@ -132,8 +122,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
prec->eoff = prec->egul;
|
||||
}
|
||||
|
||||
if (pdset->init_record) {
|
||||
status = (*pdset->init_record)(prec);
|
||||
if (pdset->common.init_record) {
|
||||
status = pdset->common.init_record(pcommon);
|
||||
if (prec->linr == menuConvertSLOPE) {
|
||||
prec->eoff = eoff;
|
||||
prec->eslo = eslo;
|
||||
@@ -174,7 +164,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
static long process(struct dbCommon *pcommon)
|
||||
{
|
||||
struct aoRecord *prec = (struct aoRecord *)pcommon;
|
||||
struct aodset *pdset = (struct aodset *)(prec->dset);
|
||||
aodset *pdset = (aodset *)(prec->dset);
|
||||
long status=0;
|
||||
unsigned char pact=prec->pact;
|
||||
double value;
|
||||
@@ -245,12 +235,12 @@ static long process(struct dbCommon *pcommon)
|
||||
static long special(DBADDR *paddr, int after)
|
||||
{
|
||||
aoRecord *prec = (aoRecord *)(paddr->precord);
|
||||
struct aodset *pdset = (struct aodset *) (prec->dset);
|
||||
aodset *pdset = (aodset *) (prec->dset);
|
||||
int special_type = paddr->special;
|
||||
|
||||
switch(special_type) {
|
||||
case(SPC_LINCONV):
|
||||
if(pdset->number<6 ) {
|
||||
if(pdset->common.number<6 ) {
|
||||
recGblDbaddrError(S_db_noMod,paddr,"ao: special");
|
||||
return(S_db_noMod);
|
||||
}
|
||||
@@ -555,7 +545,7 @@ static void monitor(aoRecord *prec)
|
||||
|
||||
static long writeValue(aoRecord *prec)
|
||||
{
|
||||
struct aodset *pdset = (struct aodset *) prec->dset;
|
||||
aodset *pdset = (aodset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -268,6 +268,16 @@ more information on these fields.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct aoRecord;
|
||||
%typedef struct aodset {
|
||||
% dset common; /*init_record returns: (0,2)=>(success,success no convert)*/
|
||||
% long (*write_ao)(struct aoRecord *prec); /*(0)=>(success ) */
|
||||
% long (*special_linconv)(struct aoRecord *prec, int after);
|
||||
%} aodset;
|
||||
%#define HAS_aodset
|
||||
%
|
||||
field(VAL,DBF_DOUBLE) {
|
||||
prompt("Desired Output")
|
||||
promptgroup("50 - Output")
|
||||
|
||||
@@ -75,17 +75,10 @@ rset biRSET={
|
||||
put_enum_str,
|
||||
get_graphic_double,
|
||||
get_control_double,
|
||||
get_alarm_double };
|
||||
struct bidset { /* binary input dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_bi;/*(0,2)=> success and convert, don't convert)*/
|
||||
/* if convert then raw value stored in rval */
|
||||
get_alarm_double
|
||||
};
|
||||
epicsExportAddress(rset,biRSET);
|
||||
|
||||
static void checkAlarms(biRecord *);
|
||||
static void monitor(biRecord *);
|
||||
static long readValue(biRecord *);
|
||||
@@ -93,7 +86,7 @@ static long readValue(biRecord *);
|
||||
static long init_record(struct dbCommon *pcommon, int pass)
|
||||
{
|
||||
struct biRecord *prec = (struct biRecord *)pcommon;
|
||||
struct bidset *pdset;
|
||||
bidset *pdset;
|
||||
long status;
|
||||
|
||||
if (pass == 0) return 0;
|
||||
@@ -101,17 +94,17 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
|
||||
recGblInitConstantLink(&prec->siol, DBF_USHORT, &prec->sval);
|
||||
|
||||
if(!(pdset = (struct bidset *)(prec->dset))) {
|
||||
if(!(pdset = (bidset *)(prec->dset))) {
|
||||
recGblRecordError(S_dev_noDSET,(void *)prec,"bi: init_record");
|
||||
return(S_dev_noDSET);
|
||||
}
|
||||
/* must have read_bi function defined */
|
||||
if( (pdset->number < 5) || (pdset->read_bi == NULL) ) {
|
||||
if( (pdset->common.number < 5) || (pdset->read_bi == NULL) ) {
|
||||
recGblRecordError(S_dev_missingSup,(void *)prec,"bi: init_record");
|
||||
return(S_dev_missingSup);
|
||||
}
|
||||
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->lalm = prec->val;
|
||||
@@ -122,7 +115,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
static long process(struct dbCommon *pcommon)
|
||||
{
|
||||
struct biRecord *prec = (struct biRecord *)pcommon;
|
||||
struct bidset *pdset = (struct bidset *)(prec->dset);
|
||||
bidset *pdset = (bidset *)(prec->dset);
|
||||
long status;
|
||||
unsigned char pact=prec->pact;
|
||||
|
||||
@@ -275,7 +268,7 @@ static void monitor(biRecord *prec)
|
||||
|
||||
static long readValue(biRecord *prec)
|
||||
{
|
||||
struct bidset *pdset = (struct bidset *)prec->dset;
|
||||
bidset *pdset = (bidset *)prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -163,6 +163,15 @@ these fields.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct biRecord;
|
||||
%typedef struct bidset {
|
||||
% dset common; /*init_record returns: (-1,0)=>(failure,success)*/
|
||||
% long (*read_bi)(struct biRecord *prec);/*(0,2)=> success and convert, don't convert); if convert then raw value stored in rval */
|
||||
%} bidset;
|
||||
%#define HAS_bidset
|
||||
%
|
||||
field(INP,DBF_INLINK) {
|
||||
prompt("Input Specification")
|
||||
promptgroup("40 - Input")
|
||||
|
||||
@@ -86,16 +86,6 @@ epicsExportAddress(int, boHIGHprecision);
|
||||
double boHIGHlimit = 100000;
|
||||
epicsExportAddress(double, boHIGHlimit);
|
||||
|
||||
struct bodset { /* binary output dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /*returns:(0,2)=>(success,success no convert*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_bo;/*returns: (-1,0)=>(failure,success)*/
|
||||
};
|
||||
|
||||
|
||||
/* control block for callback*/
|
||||
typedef struct myCallback {
|
||||
epicsCallback callback;
|
||||
@@ -131,7 +121,7 @@ static void myCallbackFunc(epicsCallback *arg)
|
||||
static long init_record(struct dbCommon *pcommon,int pass)
|
||||
{
|
||||
struct boRecord *prec = (struct boRecord *)pcommon;
|
||||
struct bodset *pdset = (struct bodset *) prec->dset;
|
||||
bodset *pdset = (bodset *) prec->dset;
|
||||
unsigned short ival = 0;
|
||||
long status = 0;
|
||||
myCallback *pcallback;
|
||||
@@ -146,7 +136,7 @@ static long init_record(struct dbCommon *pcommon,int pass)
|
||||
}
|
||||
|
||||
/* must have write_bo functions defined */
|
||||
if ((pdset->number < 5) || (pdset->write_bo == NULL)) {
|
||||
if ((pdset->common.number < 5) || (pdset->write_bo == NULL)) {
|
||||
recGblRecordError(S_dev_missingSup, prec, "bo: init_record");
|
||||
return S_dev_missingSup;
|
||||
}
|
||||
@@ -163,8 +153,8 @@ static long init_record(struct dbCommon *pcommon,int pass)
|
||||
callbackSetUser(pcallback, &pcallback->callback);
|
||||
pcallback->precord = (struct dbCommon *) prec;
|
||||
|
||||
if (pdset->init_record) {
|
||||
status=(*pdset->init_record)(prec);
|
||||
if (pdset->common.init_record) {
|
||||
status=(*pdset->common.init_record)(pcommon);
|
||||
if(status==0) {
|
||||
if(prec->rval==0) prec->val = 0;
|
||||
else prec->val = 1;
|
||||
@@ -188,7 +178,7 @@ static long init_record(struct dbCommon *pcommon,int pass)
|
||||
static long process(struct dbCommon *pcommon)
|
||||
{
|
||||
struct boRecord *prec = (struct boRecord *)pcommon;
|
||||
struct bodset *pdset = (struct bodset *)(prec->dset);
|
||||
bodset *pdset = (bodset *)(prec->dset);
|
||||
long status=0;
|
||||
unsigned char pact=prec->pact;
|
||||
|
||||
@@ -420,7 +410,7 @@ static void monitor(boRecord *prec)
|
||||
|
||||
static long writeValue(boRecord *prec)
|
||||
{
|
||||
struct bodset *pdset = (struct bodset *) prec->dset;
|
||||
bodset *pdset = (bodset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -210,6 +210,15 @@ information on these fields.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct boRecord;
|
||||
%typedef struct bodset {
|
||||
% dset common; /*init_record returns:(0,2)=>(success,success no convert*/
|
||||
% long (*write_bo)(struct boRecord *prec); /*returns: (-1,0)=>(failure,success)*/
|
||||
%} bodset;
|
||||
%#define HAS_bodset
|
||||
%
|
||||
field(VAL,DBF_ENUM) {
|
||||
prompt("Current Value")
|
||||
promptgroup("50 - Output")
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
#define report NULL
|
||||
#define initialize NULL
|
||||
static long init_record(struct dbCommon *prec, int pass);
|
||||
static long init_record(struct dbCommon *pcommon, int pass);
|
||||
static long process(struct dbCommon *prec);
|
||||
static long special(DBADDR *paddr, int after);
|
||||
#define get_value NULL
|
||||
|
||||
@@ -90,16 +90,6 @@ epicsExportAddress(int, calcoutODLYprecision);
|
||||
double calcoutODLYlimit = 100000;
|
||||
epicsExportAddress(double, calcoutODLYlimit);
|
||||
|
||||
typedef struct calcoutDSET {
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record;
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write;
|
||||
}calcoutDSET;
|
||||
|
||||
|
||||
/* To provide feedback to the user as to the connection status of the
|
||||
* links (.INxV and .OUTV), the following algorithm has been implemented ...
|
||||
*
|
||||
@@ -142,7 +132,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
double *pvalue;
|
||||
epicsEnum16 *plinkValid;
|
||||
short error_number;
|
||||
calcoutDSET *pcalcoutDSET;
|
||||
calcoutdset *pcalcoutDSET;
|
||||
rpvtStruct *prpvt;
|
||||
|
||||
if (pass == 0) {
|
||||
@@ -150,13 +140,13 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!(pcalcoutDSET = (calcoutDSET *)prec->dset)) {
|
||||
if (!(pcalcoutDSET = (calcoutdset *)prec->dset)) {
|
||||
recGblRecordError(S_dev_noDSET, (void *)prec, "calcout:init_record");
|
||||
return S_dev_noDSET;
|
||||
}
|
||||
|
||||
/* must have write defined */
|
||||
if ((pcalcoutDSET->number < 5) || (pcalcoutDSET->write ==NULL)) {
|
||||
if ((pcalcoutDSET->common.number < 5) || (pcalcoutDSET->write ==NULL)) {
|
||||
recGblRecordError(S_dev_missingSup, (void *)prec, "calcout:init_record");
|
||||
return S_dev_missingSup;
|
||||
}
|
||||
@@ -221,7 +211,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
|
||||
prec->epvt = eventNameToHandle(prec->oevt);
|
||||
|
||||
if (pcalcoutDSET->init_record) pcalcoutDSET->init_record(prec);
|
||||
if (pcalcoutDSET->common.init_record) pcalcoutDSET->common.init_record(pcommon);
|
||||
prec->pval = prec->val;
|
||||
prec->mlst = prec->val;
|
||||
prec->alst = prec->val;
|
||||
@@ -768,7 +758,7 @@ static void checkLinks(calcoutRecord *prec)
|
||||
|
||||
static long writeValue(calcoutRecord *prec)
|
||||
{
|
||||
calcoutDSET *pcalcoutDSET = (calcoutDSET *)prec->dset;
|
||||
calcoutdset *pcalcoutDSET = (calcoutdset *)prec->dset;
|
||||
|
||||
|
||||
if (!pcalcoutDSET || !pcalcoutDSET->write) {
|
||||
|
||||
@@ -662,6 +662,14 @@ manner for the VAL field.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct calcoutRecord;
|
||||
%typedef struct calcoutdset {
|
||||
% dset common;
|
||||
% long (*write)(struct calcoutRecord *prec);
|
||||
%} calcoutdset;
|
||||
%#define HAS_calcoutdset
|
||||
%
|
||||
field(RPVT,DBF_NOACCESS) {
|
||||
prompt("Record Private")
|
||||
special(SPC_NOMOD)
|
||||
|
||||
@@ -80,14 +80,6 @@ rset eventRSET={
|
||||
};
|
||||
epicsExportAddress(rset,eventRSET);
|
||||
|
||||
struct eventdset { /* event input dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_event;/*(0)=> success */
|
||||
};
|
||||
static void monitor(eventRecord *);
|
||||
static long readValue(eventRecord *);
|
||||
|
||||
@@ -95,7 +87,7 @@ static long readValue(eventRecord *);
|
||||
static long init_record(struct dbCommon *pcommon, int pass)
|
||||
{
|
||||
struct eventRecord *prec = (struct eventRecord *)pcommon;
|
||||
struct eventdset *pdset;
|
||||
eventdset *pdset;
|
||||
long status=0;
|
||||
|
||||
if (pass == 0) return 0;
|
||||
@@ -103,8 +95,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
|
||||
recGblInitConstantLink(&prec->siol, DBF_STRING, &prec->sval);
|
||||
|
||||
if( (pdset=(struct eventdset *)(prec->dset)) && (pdset->init_record) )
|
||||
status=(*pdset->init_record)(prec);
|
||||
if( (pdset=(eventdset *)(prec->dset)) && (pdset->common.init_record) )
|
||||
status=(*pdset->common.init_record)(pcommon);
|
||||
|
||||
prec->epvt = eventNameToHandle(prec->val);
|
||||
|
||||
@@ -114,11 +106,11 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
static long process(struct dbCommon *pcommon)
|
||||
{
|
||||
struct eventRecord *prec = (struct eventRecord *)pcommon;
|
||||
struct eventdset *pdset = (struct eventdset *)(prec->dset);
|
||||
eventdset *pdset = (eventdset *)(prec->dset);
|
||||
long status=0;
|
||||
unsigned char pact=prec->pact;
|
||||
|
||||
if((pdset!=NULL) && (pdset->number >= 5) && pdset->read_event )
|
||||
if((pdset!=NULL) && (pdset->common.number >= 5) && pdset->read_event )
|
||||
status=readValue(prec); /* read the new value */
|
||||
/* check if device support set pact */
|
||||
if ( !pact && prec->pact ) return(0);
|
||||
@@ -173,7 +165,7 @@ static void monitor(eventRecord *prec)
|
||||
|
||||
static long readValue(eventRecord *prec)
|
||||
{
|
||||
struct eventdset *pdset = (struct eventdset *) prec->dset;
|
||||
eventdset *pdset = (eventdset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -44,6 +44,16 @@ simulation mode parameters
|
||||
recordtype(event) {
|
||||
include "dbCommon.dbd"
|
||||
|
||||
%
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct eventRecord;
|
||||
%typedef struct eventdset {
|
||||
% dset common; /*init_record returns: (-1,0)=>(failure,success)*/
|
||||
% long (*read_event)(struct eventRecord *prec); /*(0)=> success */
|
||||
%} eventdset;
|
||||
%#define HAS_eventdset
|
||||
%
|
||||
|
||||
=head3 Scan Parameters
|
||||
|
||||
The event record has the standard fields for specifying under what circumstances
|
||||
|
||||
@@ -87,17 +87,6 @@ epicsExportAddress(rset,histogramRSET);
|
||||
int histogramSDELprecision = 2;
|
||||
epicsExportAddress(int, histogramSDELprecision);
|
||||
|
||||
struct histogramdset { /* histogram input dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_histogram;/*(0,2)=> success and add_count, don't add_count)*/
|
||||
/* if add_count then sgnl added to array */
|
||||
DEVSUPFUN special_linconv;
|
||||
};
|
||||
|
||||
/* control block for callback*/
|
||||
typedef struct myCallback {
|
||||
epicsCallback callback;
|
||||
@@ -160,7 +149,7 @@ static void wdogInit(histogramRecord *prec)
|
||||
static long init_record(struct dbCommon *pcommon, int pass)
|
||||
{
|
||||
struct histogramRecord *prec = (struct histogramRecord *)pcommon;
|
||||
struct histogramdset *pdset;
|
||||
histogramdset *pdset;
|
||||
|
||||
if (pass == 0) {
|
||||
/* allocate space for histogram array */
|
||||
@@ -181,21 +170,21 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
recGblInitConstantLink(&prec->siol, DBF_DOUBLE, &prec->sval);
|
||||
|
||||
/* must have device support defined */
|
||||
pdset = (struct histogramdset *) prec->dset;
|
||||
pdset = (histogramdset *) prec->dset;
|
||||
if (!pdset) {
|
||||
recGblRecordError(S_dev_noDSET, prec, "histogram: init_record");
|
||||
return S_dev_noDSET;
|
||||
}
|
||||
|
||||
/* must have read_histogram function defined */
|
||||
if (pdset->number < 6 || !pdset->read_histogram) {
|
||||
if (pdset->common.number < 6 || !pdset->read_histogram) {
|
||||
recGblRecordError(S_dev_missingSup, prec, "histogram: init_record");
|
||||
return S_dev_missingSup;
|
||||
}
|
||||
|
||||
/* call device support init_record */
|
||||
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;
|
||||
@@ -206,7 +195,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
static long process(struct dbCommon *pcommon)
|
||||
{
|
||||
struct histogramRecord *prec = (struct histogramRecord *)pcommon;
|
||||
struct histogramdset *pdset = (struct histogramdset *) prec->dset;
|
||||
histogramdset *pdset = (histogramdset *) prec->dset;
|
||||
int pact = prec->pact;
|
||||
long status;
|
||||
|
||||
@@ -375,7 +364,7 @@ static long clear_histogram(histogramRecord *prec)
|
||||
|
||||
static long readValue(histogramRecord *prec)
|
||||
{
|
||||
struct histogramdset *pdset = (struct histogramdset *) prec->dset;
|
||||
histogramdset *pdset = (histogramdset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -140,6 +140,16 @@ simulation mode fields.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct histogramRecord;
|
||||
%typedef struct histogramdset {
|
||||
% dset common; /*init_record returns: (-1,0)=>(failure,success)*/
|
||||
% long (*read_histogram)(struct histogramRecord *prec); /*(0,2)=> success and add_count, don't add_count); if add_count then sgnl added to array*/
|
||||
% long (*special_linconv)(struct histogramRecord *prec, int after);
|
||||
%} histogramdset;
|
||||
%#define HAS_histogramdset
|
||||
%
|
||||
field(VAL,DBF_NOACCESS) {
|
||||
prompt("Value")
|
||||
asl(ASL0)
|
||||
|
||||
@@ -83,14 +83,6 @@ rset int64inRSET={
|
||||
epicsExportAddress(rset,int64inRSET);
|
||||
|
||||
|
||||
struct int64indset { /* int64in input dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_int64in; /*returns: (-1,0)=>(failure,success)*/
|
||||
};
|
||||
static void checkAlarms(int64inRecord *prec, epicsTimeStamp *timeLast);
|
||||
static void monitor(int64inRecord *prec);
|
||||
static long readValue(int64inRecord *prec);
|
||||
@@ -99,7 +91,7 @@ static long readValue(int64inRecord *prec);
|
||||
static long init_record(dbCommon *pcommon, int pass)
|
||||
{
|
||||
int64inRecord *prec = (int64inRecord*)pcommon;
|
||||
struct int64indset *pdset;
|
||||
int64indset *pdset;
|
||||
long status;
|
||||
|
||||
if (pass == 0) return 0;
|
||||
@@ -108,17 +100,17 @@ static long init_record(dbCommon *pcommon, int pass)
|
||||
recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
|
||||
recGblInitConstantLink(&prec->siol, DBF_INT64, &prec->sval);
|
||||
|
||||
if(!(pdset = (struct int64indset *)(prec->dset))) {
|
||||
if(!(pdset = (int64indset *)(prec->dset))) {
|
||||
recGblRecordError(S_dev_noDSET,(void *)prec,"int64in: init_record");
|
||||
return(S_dev_noDSET);
|
||||
}
|
||||
/* must have read_int64in function defined */
|
||||
if( (pdset->number < 5) || (pdset->read_int64in == NULL) ) {
|
||||
if ((pdset->common.number < 5) || (pdset->read_int64in == NULL)) {
|
||||
recGblRecordError(S_dev_missingSup,(void *)prec,"int64in: init_record");
|
||||
return(S_dev_missingSup);
|
||||
}
|
||||
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;
|
||||
@@ -129,7 +121,7 @@ static long init_record(dbCommon *pcommon, int pass)
|
||||
static long process(dbCommon *pcommon)
|
||||
{
|
||||
int64inRecord *prec = (int64inRecord*)pcommon;
|
||||
struct int64indset *pdset = (struct int64indset *)(prec->dset);
|
||||
int64indset *pdset = (int64indset *)(prec->dset);
|
||||
long status;
|
||||
unsigned char pact=prec->pact;
|
||||
epicsTimeStamp timeLast;
|
||||
@@ -397,7 +389,7 @@ static void monitor(int64inRecord *prec)
|
||||
|
||||
static long readValue(int64inRecord *prec)
|
||||
{
|
||||
struct int64indset *pdset = (struct int64indset *) prec->dset;
|
||||
int64indset *pdset = (int64indset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -111,6 +111,15 @@ monitoring deadband functionality.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct int64inRecord;
|
||||
%typedef struct int64indset {
|
||||
% dset common;
|
||||
% long (*read_int64in)(struct int64inRecord *prec);
|
||||
%} int64indset;
|
||||
%#define HAS_int64indset
|
||||
%
|
||||
field(VAL,DBF_INT64) {
|
||||
prompt("Current value")
|
||||
promptgroup("40 - Input")
|
||||
|
||||
@@ -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);
|
||||
@@ -97,19 +89,19 @@ static void convert(int64outRecord *prec, epicsInt64 value);
|
||||
static long init_record(dbCommon *pcommon, int pass)
|
||||
{
|
||||
int64outRecord *prec = (int64outRecord*)pcommon;
|
||||
struct int64outdset *pdset;
|
||||
int64outdset *pdset;
|
||||
long status=0;
|
||||
|
||||
if (pass == 0) return 0;
|
||||
|
||||
recGblInitSimm(pcommon, &prec->sscn, &prec->oldsimm, &prec->simm, &prec->siml);
|
||||
|
||||
if(!(pdset = (struct int64outdset *)(prec->dset))) {
|
||||
if(!(pdset = (int64outdset *)(prec->dset))) {
|
||||
recGblRecordError(S_dev_noDSET,(void *)prec,"int64out: init_record");
|
||||
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;
|
||||
@@ -129,7 +121,7 @@ static long init_record(dbCommon *pcommon, int pass)
|
||||
static long process(dbCommon *pcommon)
|
||||
{
|
||||
int64outRecord *prec = (int64outRecord*)pcommon;
|
||||
struct int64outdset *pdset = (struct int64outdset *)(prec->dset);
|
||||
int64outdset *pdset = (int64outdset *)(prec->dset);
|
||||
long status=0;
|
||||
epicsInt64 value;
|
||||
unsigned char pact=prec->pact;
|
||||
@@ -377,7 +369,7 @@ static void monitor(int64outRecord *prec)
|
||||
|
||||
static long writeValue(int64outRecord *prec)
|
||||
{
|
||||
struct int64outdset *pdset = (struct int64outdset *) prec->dset;
|
||||
int64outdset *pdset = (int64outdset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -137,6 +137,15 @@ monitoring deadband functionality.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct int64outRecord;
|
||||
%typedef struct int64outdset {
|
||||
% dset common;
|
||||
% long (*write_int64out)(struct int64outRecord *prec);
|
||||
%} int64outdset;
|
||||
%#define HAS_int64outdset
|
||||
%
|
||||
field(VAL,DBF_INT64) {
|
||||
prompt("Desired Output")
|
||||
promptgroup("50 - Output")
|
||||
|
||||
@@ -83,15 +83,6 @@ rset longinRSET={
|
||||
};
|
||||
epicsExportAddress(rset,longinRSET);
|
||||
|
||||
|
||||
struct longindset { /* longin input dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_longin; /*returns: (-1,0)=>(failure,success)*/
|
||||
};
|
||||
static void checkAlarms(longinRecord *prec, epicsTimeStamp *timeLast);
|
||||
static void monitor(longinRecord *prec);
|
||||
static long readValue(longinRecord *prec);
|
||||
@@ -100,7 +91,7 @@ static long readValue(longinRecord *prec);
|
||||
static long init_record(struct dbCommon *pcommon, int pass)
|
||||
{
|
||||
struct longinRecord *prec = (struct longinRecord *)pcommon;
|
||||
struct longindset *pdset = (struct longindset *) prec->dset;
|
||||
longindset *pdset = (longindset *) prec->dset;
|
||||
|
||||
if (pass == 0) return 0;
|
||||
|
||||
@@ -113,13 +104,13 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
}
|
||||
|
||||
/* must have read_longin function defined */
|
||||
if ((pdset->number < 5) || (pdset->read_longin == NULL)) {
|
||||
if ((pdset->common.number < 5) || (pdset->read_longin == NULL)) {
|
||||
recGblRecordError(S_dev_missingSup, prec, "longin: 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;
|
||||
@@ -134,7 +125,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
static long process(struct dbCommon *pcommon)
|
||||
{
|
||||
struct longinRecord *prec = (struct longinRecord *)pcommon;
|
||||
struct longindset *pdset = (struct longindset *)(prec->dset);
|
||||
longindset *pdset = (longindset *)(prec->dset);
|
||||
long status;
|
||||
unsigned char pact=prec->pact;
|
||||
epicsTimeStamp timeLast;
|
||||
@@ -405,7 +396,7 @@ static void monitor(longinRecord *prec)
|
||||
|
||||
static long readValue(longinRecord *prec)
|
||||
{
|
||||
struct longindset *pdset = (struct longindset *) prec->dset;
|
||||
longindset *pdset = (longindset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -305,6 +305,15 @@ sets UDF to FALSE. read_longin returns the status of C<recGblGetLinkValue>.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct longinRecord;
|
||||
%typedef struct longindset {
|
||||
% dset common; /*init_record returns: (-1,0)=>(failure,success)*/
|
||||
% long (*read_longin)(struct longinRecord *prec); /*returns: (-1,0)=>(failure,success)*/
|
||||
%} longindset;
|
||||
%#define HAS_longindset
|
||||
%
|
||||
field(VAL,DBF_LONG) {
|
||||
prompt("Current value")
|
||||
promptgroup("40 - Input")
|
||||
|
||||
@@ -80,15 +80,6 @@ rset longoutRSET={
|
||||
};
|
||||
epicsExportAddress(rset,longoutRSET);
|
||||
|
||||
|
||||
struct longoutdset { /* longout input dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_longout;/*(-1,0)=>(failure,success*/
|
||||
};
|
||||
static void checkAlarms(longoutRecord *prec);
|
||||
static void monitor(longoutRecord *prec);
|
||||
static long writeValue(longoutRecord *prec);
|
||||
@@ -97,7 +88,7 @@ static void convert(longoutRecord *prec, epicsInt32 value);
|
||||
static long init_record(struct dbCommon *pcommon, int pass)
|
||||
{
|
||||
struct longoutRecord *prec = (struct longoutRecord *)pcommon;
|
||||
struct longoutdset *pdset = (struct longoutdset *) prec->dset;
|
||||
longoutdset *pdset = (longoutdset *) prec->dset;
|
||||
|
||||
if (pass == 0) return 0;
|
||||
|
||||
@@ -109,7 +100,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
}
|
||||
|
||||
/* must have write_longout functions defined */
|
||||
if ((pdset->number < 5) || (pdset->write_longout == NULL)) {
|
||||
if ((pdset->common.number < 5) || (pdset->write_longout == NULL)) {
|
||||
recGblRecordError(S_dev_missingSup, prec, "longout: init_record");
|
||||
return S_dev_missingSup;
|
||||
}
|
||||
@@ -117,8 +108,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
if (recGblInitConstantLink(&prec->dol, DBF_LONG, &prec->val))
|
||||
prec->udf=FALSE;
|
||||
|
||||
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;
|
||||
@@ -133,7 +124,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
static long process(struct dbCommon *pcommon)
|
||||
{
|
||||
struct longoutRecord *prec = (struct longoutRecord *)pcommon;
|
||||
struct longoutdset *pdset = (struct longoutdset *)(prec->dset);
|
||||
longoutdset *pdset = (longoutdset *)(prec->dset);
|
||||
long status=0;
|
||||
epicsInt32 value;
|
||||
unsigned char pact=prec->pact;
|
||||
@@ -382,7 +373,7 @@ static void monitor(longoutRecord *prec)
|
||||
|
||||
static long writeValue(longoutRecord *prec)
|
||||
{
|
||||
struct longoutdset *pdset = (struct longoutdset *) prec->dset;
|
||||
longoutdset *pdset = (longoutdset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -96,6 +96,15 @@ and database links.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct longoutRecord;
|
||||
%typedef struct longoutdset {
|
||||
% dset common; /*init_record returns: (-1,0)=>(failure,success)*/
|
||||
% long (*write_longout)(struct longoutRecord *prec); /*(-1,0)=>(failure,success*/
|
||||
%} longoutdset;
|
||||
%#define HAS_longoutdset
|
||||
%
|
||||
field(VAL,DBF_LONG) {
|
||||
prompt("Desired Output")
|
||||
promptgroup("50 - Output")
|
||||
|
||||
@@ -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;
|
||||
@@ -221,7 +221,7 @@ static void monitor(lsiRecord *prec)
|
||||
|
||||
static long readValue(lsiRecord *prec)
|
||||
{
|
||||
struct lsidset *pdset = (struct lsidset *) prec->dset;
|
||||
lsidset *pdset = (lsidset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -44,17 +44,14 @@ See L<Address Specification> for information on specifying links.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%#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;
|
||||
%#define HAS_lsidset
|
||||
%
|
||||
field(VAL,DBF_NOACCESS) {
|
||||
prompt("Current Value")
|
||||
|
||||
@@ -70,15 +70,15 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
}
|
||||
|
||||
/* must have a write_string function defined */
|
||||
if (pdset->number < 5 || !pdset->write_string) {
|
||||
if (pdset->common.number < 5 || !pdset->write_string) {
|
||||
recGblRecordError(S_dev_missingSup, prec, "lso: init_record");
|
||||
return S_dev_missingSup;
|
||||
}
|
||||
|
||||
dbLoadLinkLS(&prec->dol, prec->val, prec->sizv, &prec->len);
|
||||
|
||||
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;
|
||||
|
||||
@@ -109,17 +109,14 @@ lists other fields related to a alarms that are common to all record types.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%#include "devSup.h"
|
||||
%
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct lsoRecord;
|
||||
%typedef struct lsodset {
|
||||
% long number;
|
||||
% DEVSUPFUN report;
|
||||
% DEVSUPFUN init;
|
||||
% DEVSUPFUN init_record;
|
||||
% DEVSUPFUN get_ioint_info;
|
||||
% DEVSUPFUN write_string;
|
||||
% dset common;
|
||||
% long (*write_string)(struct lsoRecord *prec);
|
||||
%} lsodset;
|
||||
%#define HAS_lsodset
|
||||
%
|
||||
field(VAL,DBF_NOACCESS) {
|
||||
prompt("Current Value")
|
||||
|
||||
@@ -81,15 +81,6 @@ rset mbbiDirectRSET={
|
||||
};
|
||||
epicsExportAddress(rset,mbbiDirectRSET);
|
||||
|
||||
struct mbbidset { /* multi bit binary input dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /*returns: (-1,0)=>(failure, success)*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_mbbi; /*returns: (0,2)=>(success, success no convert)*/
|
||||
};
|
||||
|
||||
static void monitor(mbbiDirectRecord *);
|
||||
static long readValue(mbbiDirectRecord *);
|
||||
|
||||
@@ -98,7 +89,7 @@ static long readValue(mbbiDirectRecord *);
|
||||
static long init_record(struct dbCommon *pcommon, int pass)
|
||||
{
|
||||
struct mbbiDirectRecord *prec = (struct mbbiDirectRecord *)pcommon;
|
||||
struct mbbidset *pdset = (struct mbbidset *) prec->dset;
|
||||
mbbidirectdset *pdset = (mbbidirectdset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (pass == 0) return 0;
|
||||
@@ -108,7 +99,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
return S_dev_noDSET;
|
||||
}
|
||||
|
||||
if ((pdset->number < 5) || (pdset->read_mbbi == NULL)) {
|
||||
if ((pdset->common.number < 5) || (pdset->read_mbbi == NULL)) {
|
||||
recGblRecordError(S_dev_missingSup, prec, "mbbiDirect: init_record");
|
||||
return S_dev_missingSup;
|
||||
}
|
||||
@@ -120,8 +111,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
if (prec->mask == 0 && prec->nobt <= 32)
|
||||
prec->mask = ((epicsUInt64) 1u << prec->nobt) - 1;
|
||||
|
||||
if (pdset->init_record) {
|
||||
status = pdset->init_record(prec);
|
||||
if (pdset->common.init_record) {
|
||||
status = pdset->common.init_record(pcommon);
|
||||
if (status == 0) {
|
||||
epicsUInt32 val = prec->val;
|
||||
epicsUInt8 *pBn = &prec->b0;
|
||||
@@ -141,7 +132,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
static long process(struct dbCommon *pcommon)
|
||||
{
|
||||
struct mbbiDirectRecord *prec = (struct mbbiDirectRecord *)pcommon;
|
||||
struct mbbidset *pdset = (struct mbbidset *) prec->dset;
|
||||
mbbidirectdset *pdset = (mbbidirectdset *) prec->dset;
|
||||
long status;
|
||||
int pact = prec->pact;
|
||||
|
||||
@@ -248,7 +239,7 @@ static void monitor(mbbiDirectRecord *prec)
|
||||
|
||||
static long readValue(mbbiDirectRecord *prec)
|
||||
{
|
||||
struct mbbidset *pdset = (struct mbbidset *) prec->dset;
|
||||
mbbidirectdset *pdset = (mbbidirectdset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -85,6 +85,14 @@ description (DESC) fields.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct mbbiDirectRecord;
|
||||
%typedef struct mbbidirectdset {
|
||||
% dset common; /* init_record returns: (-1,0) => (failure, success)*/
|
||||
% long (*read_mbbi)(struct mbbiDirectRecord *prec); /* (0, 2) => (success, success no convert)*/
|
||||
%} mbbidirectdset;
|
||||
%#define HAS_mbbidirectdset
|
||||
%
|
||||
field(VAL,DBF_LONG) {
|
||||
prompt("Current Value")
|
||||
promptgroup("40 - Input")
|
||||
|
||||
@@ -83,15 +83,6 @@ rset mbbiRSET = {
|
||||
};
|
||||
epicsExportAddress(rset,mbbiRSET);
|
||||
|
||||
struct mbbidset { /* multi bit binary input dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /* returns: (-1,0) => (failure, success)*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN read_mbbi;/* (0, 2) => (success, success no convert)*/
|
||||
};
|
||||
|
||||
static void checkAlarms(mbbiRecord *, epicsTimeStamp *);
|
||||
static void monitor(mbbiRecord *);
|
||||
static long readValue(mbbiRecord *);
|
||||
@@ -115,18 +106,17 @@ static void init_common(mbbiRecord *prec)
|
||||
static long init_record(struct dbCommon *pcommon, int pass)
|
||||
{
|
||||
struct mbbiRecord *prec = (struct mbbiRecord *)pcommon;
|
||||
struct mbbidset *pdset = (struct mbbidset *) prec->dset;
|
||||
mbbidset *pdset = (mbbidset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (pass == 0) return 0;
|
||||
|
||||
pdset = (struct mbbidset *) prec->dset;
|
||||
if (!pdset) {
|
||||
recGblRecordError(S_dev_noDSET, prec, "mbbi: init_record");
|
||||
return S_dev_noDSET;
|
||||
}
|
||||
|
||||
if ((pdset->number < 5) || (pdset->read_mbbi == NULL)) {
|
||||
if ((pdset->common.number < 5) || (pdset->read_mbbi == NULL)) {
|
||||
recGblRecordError(S_dev_missingSup, prec, "mbbi: init_record");
|
||||
return S_dev_missingSup;
|
||||
}
|
||||
@@ -138,8 +128,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
if (prec->mask == 0 && prec->nobt <= 32)
|
||||
prec->mask = ((epicsUInt64) 1u << prec->nobt) - 1;
|
||||
|
||||
if (pdset->init_record)
|
||||
status = pdset->init_record(prec);
|
||||
if (pdset->common.init_record)
|
||||
status = pdset->common.init_record(pcommon);
|
||||
|
||||
init_common(prec);
|
||||
|
||||
@@ -152,7 +142,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
static long process(struct dbCommon *pcommon)
|
||||
{
|
||||
struct mbbiRecord *prec = (struct mbbiRecord *)pcommon;
|
||||
struct mbbidset *pdset = (struct mbbidset *) prec->dset;
|
||||
mbbidset *pdset = (mbbidset *) prec->dset;
|
||||
long status;
|
||||
int pact = prec->pact;
|
||||
epicsTimeStamp timeLast;
|
||||
@@ -380,7 +370,7 @@ static void monitor(mbbiRecord *prec)
|
||||
|
||||
static long readValue(mbbiRecord *prec)
|
||||
{
|
||||
struct mbbidset *pdset = (struct mbbidset *) prec->dset;
|
||||
mbbidset *pdset = (mbbidset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -119,6 +119,14 @@ description (DESC) fields.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct mbbiRecord;
|
||||
%typedef struct mbbidset {
|
||||
% dset common; /* init_record returns: (-1,0) => (failure, success)*/
|
||||
% long (*read_mbbi)(struct mbbiRecord *prec); /* (0, 2) => (success, success no convert)*/
|
||||
%} mbbidset;
|
||||
%#define HAS_mbbidset
|
||||
%
|
||||
field(VAL,DBF_ENUM) {
|
||||
prompt("Current Value")
|
||||
promptgroup("40 - Input")
|
||||
|
||||
@@ -81,16 +81,6 @@ rset mbboDirectRSET = {
|
||||
};
|
||||
epicsExportAddress(rset, mbboDirectRSET);
|
||||
|
||||
struct mbbodset { /* multi bit binary output dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /*returns: (0, 2)=>(success, success no convert)*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_mbbo; /*returns: (0, 2)=>(success, success no convert)*/
|
||||
};
|
||||
|
||||
|
||||
static void convert(mbboDirectRecord *);
|
||||
static void monitor(mbboDirectRecord *);
|
||||
static long writeValue(mbboDirectRecord *);
|
||||
@@ -100,7 +90,7 @@ static long writeValue(mbboDirectRecord *);
|
||||
static long init_record(struct dbCommon *pcommon, int pass)
|
||||
{
|
||||
struct mbboDirectRecord *prec = (struct mbboDirectRecord *)pcommon;
|
||||
struct mbbodset *pdset = (struct mbbodset *) prec->dset;
|
||||
mbbodirectdset *pdset = (mbbodirectdset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (pass == 0) return 0;
|
||||
@@ -110,7 +100,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
return S_dev_noDSET;
|
||||
}
|
||||
|
||||
if ((pdset->number < 5) || (pdset->write_mbbo == NULL)) {
|
||||
if ((pdset->common.number < 5) || (pdset->write_mbbo == NULL)) {
|
||||
recGblRecordError(S_dev_missingSup, prec, "mbboDirect: init_record");
|
||||
return S_dev_missingSup;
|
||||
}
|
||||
@@ -124,8 +114,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
if (prec->mask == 0 && prec->nobt <= 32)
|
||||
prec->mask = ((epicsUInt64) 1u << prec->nobt) - 1;
|
||||
|
||||
if (pdset->init_record) {
|
||||
status = pdset->init_record(prec);
|
||||
if (pdset->common.init_record) {
|
||||
status = pdset->common.init_record(pcommon);
|
||||
if (status == 0) {
|
||||
/* Convert initial read-back */
|
||||
epicsUInt32 rval = prec->rval;
|
||||
@@ -162,7 +152,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
static long process(struct dbCommon *pcommon)
|
||||
{
|
||||
struct mbboDirectRecord *prec = (struct mbboDirectRecord *)pcommon;
|
||||
struct mbbodset *pdset = (struct mbbodset *)(prec->dset);
|
||||
mbbodirectdset *pdset = (mbbodirectdset *)(prec->dset);
|
||||
long status = 0;
|
||||
int pact = prec->pact;
|
||||
|
||||
@@ -356,7 +346,7 @@ static void convert(mbboDirectRecord *prec)
|
||||
|
||||
static long writeValue(mbboDirectRecord *prec)
|
||||
{
|
||||
struct mbbodset *pdset = (struct mbbodset *) prec->dset;
|
||||
mbbodirectdset *pdset = (mbbodirectdset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -90,6 +90,14 @@ description (DESC) fields.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct mbboDirectRecord;
|
||||
%typedef struct mbbodirectdset {
|
||||
% dset common; /*init_record returns: (0, 2)=>(success, success no convert)*/
|
||||
% long (*write_mbbo)(struct mbboDirectRecord *prec); /*returns: (0, 2)=>(success, success no convert)*/
|
||||
%} mbbodirectdset;
|
||||
%#define HAS_mbbodirectdset
|
||||
%
|
||||
field(VAL,DBF_LONG) {
|
||||
prompt("Word")
|
||||
promptgroup("50 - Output")
|
||||
|
||||
@@ -82,15 +82,6 @@ rset mbboRSET = {
|
||||
};
|
||||
epicsExportAddress(rset,mbboRSET);
|
||||
|
||||
struct mbbodset { /* multi bit binary output dset */
|
||||
long number;
|
||||
DEVSUPFUN dev_report;
|
||||
DEVSUPFUN init;
|
||||
DEVSUPFUN init_record; /*returns: (0, 2) => (success, success no convert)*/
|
||||
DEVSUPFUN get_ioint_info;
|
||||
DEVSUPFUN write_mbbo; /*returns: (0, 2) => (success, success no convert)*/
|
||||
};
|
||||
|
||||
|
||||
static void checkAlarms(mbboRecord *);
|
||||
static void convert(mbboRecord *);
|
||||
@@ -117,7 +108,7 @@ static void init_common(mbboRecord *prec)
|
||||
static long init_record(struct dbCommon *pcommon, int pass)
|
||||
{
|
||||
struct mbboRecord *prec = (struct mbboRecord *)pcommon;
|
||||
struct mbbodset *pdset;
|
||||
mbbodset *pdset;
|
||||
long status;
|
||||
|
||||
if (pass == 0) {
|
||||
@@ -125,13 +116,13 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
return 0;
|
||||
}
|
||||
|
||||
pdset = (struct mbbodset *) prec->dset;
|
||||
pdset = (mbbodset *) prec->dset;
|
||||
if (!pdset) {
|
||||
recGblRecordError(S_dev_noDSET, prec, "mbbo: init_record");
|
||||
return S_dev_noDSET;
|
||||
}
|
||||
|
||||
if ((pdset->number < 5) || (pdset->write_mbbo == NULL)) {
|
||||
if ((pdset->common.number < 5) || (pdset->write_mbbo == NULL)) {
|
||||
recGblRecordError(S_dev_missingSup, prec, "mbbo: init_record");
|
||||
return S_dev_missingSup;
|
||||
}
|
||||
@@ -145,8 +136,8 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
if (prec->mask == 0 && prec->nobt <= 32)
|
||||
prec->mask = ((epicsUInt64) 1u << prec->nobt) - 1;
|
||||
|
||||
if (pdset->init_record) {
|
||||
status = pdset->init_record(prec);
|
||||
if (pdset->common.init_record) {
|
||||
status = pdset->common.init_record(pcommon);
|
||||
init_common(prec);
|
||||
if (status == 0) {
|
||||
/* Convert initial read-back */
|
||||
@@ -194,7 +185,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
||||
static long process(struct dbCommon *pcommon)
|
||||
{
|
||||
struct mbboRecord *prec = (struct mbboRecord *)pcommon;
|
||||
struct mbbodset *pdset = (struct mbbodset *) prec->dset;
|
||||
mbbodset *pdset = (mbbodset *) prec->dset;
|
||||
long status = 0;
|
||||
int pact = prec->pact;
|
||||
|
||||
@@ -439,7 +430,7 @@ static void convert(mbboRecord *prec)
|
||||
|
||||
static long writeValue(mbboRecord *prec)
|
||||
{
|
||||
struct mbbodset *pdset = (struct mbbodset *) prec->dset;
|
||||
mbbodset *pdset = (mbbodset *) prec->dset;
|
||||
long status = 0;
|
||||
|
||||
if (!prec->pact) {
|
||||
|
||||
@@ -173,6 +173,14 @@ mode fields.
|
||||
=cut
|
||||
|
||||
include "dbCommon.dbd"
|
||||
%/* Declare Device Support Entry Table */
|
||||
%struct mbboRecord;
|
||||
%typedef struct mbbodset {
|
||||
% dset common; /*init_record returns: (0, 2) => (success, success no convert)*/
|
||||
% long (*write_mbbo)(struct mbboRecord *prec); /*returns: (0, 2) => (success, success no convert)*/
|
||||
%} mbbodset;
|
||||
%#define HAS_mbbodset
|
||||
%
|
||||
field(VAL,DBF_ENUM) {
|
||||
prompt("Desired Value")
|
||||
promptgroup("50 - Output")
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user