From 16bc2318ad3c66799b8a1479ff9699a80987ab55 Mon Sep 17 00:00:00 2001 From: sailer <sailer> Date: Mon, 19 May 2003 11:01:55 +0000 Subject: [PATCH] Simplify pas and make it EPICS 3.14-ready. fist part. -- Benjamin Sailer --- allParam/Makefile.am | 1 - allParam/Makefile.in | 22 +-- allParam/ca/server/paramBlobRecord.cc | 34 +++-- allParam/ca/server/paramBlobRecord.h | 13 +- allParam/ca/server/paramFilenameRecord.cc | 34 +++-- allParam/ca/server/paramFilenameRecord.h | 13 +- allParam/ca/server/paramIntRecord.cc | 34 +++-- allParam/ca/server/paramIntRecord.h | 13 +- allParam/ca/server/paramRecord.cc | 110 ------------- allParam/ca/server/paramRecord.h | 45 ------ allParam/ca/server/paramRecordSet.h | 2 +- allParam/ca/server/paramServer.cc | 116 ++++++++++++-- allParam/ca/server/paramStringRecord.cc | 34 +++-- allParam/ca/server/paramStringRecord.h | 13 +- allParam/ca/server/record.cc | 178 +++++++++++++++++----- allParam/ca/server/record.h | 57 ++++++- 16 files changed, 429 insertions(+), 290 deletions(-) delete mode 100644 allParam/ca/server/paramRecord.cc delete mode 100644 allParam/ca/server/paramRecord.h diff --git a/allParam/Makefile.am b/allParam/Makefile.am index 556d3ae..fb757ec 100644 --- a/allParam/Makefile.am +++ b/allParam/Makefile.am @@ -48,7 +48,6 @@ pas_SOURCES = ca/server/arrayDest.cc pas_SOURCES += ca/server/paramBlobRecord.cc pas_SOURCES += ca/server/paramFilenameRecord.cc pas_SOURCES += ca/server/paramIntRecord.cc -pas_SOURCES += ca/server/paramRecord.cc pas_SOURCES += ca/server/paramRecordSet.cc pas_SOURCES += ca/server/paramStringRecord.cc pas_SOURCES += ca/server/record.cc diff --git a/allParam/Makefile.in b/allParam/Makefile.in index f7c9885..ac3b87a 100644 --- a/allParam/Makefile.in +++ b/allParam/Makefile.in @@ -118,7 +118,7 @@ liboraParam_p_a_CFLAGS = -DPTHREADS libtclParam_a_CFLAGS = libtclParam_p_a_CFLAGS = -DPTHREADS -pas_SOURCES = ca/server/arrayDest.cc ca/server/paramBlobRecord.cc ca/server/paramFilenameRecord.cc ca/server/paramIntRecord.cc ca/server/paramRecord.cc ca/server/paramRecordSet.cc ca/server/paramStringRecord.cc ca/server/record.cc ca/server/paramServer.cc +pas_SOURCES = ca/server/arrayDest.cc ca/server/paramBlobRecord.cc ca/server/paramFilenameRecord.cc ca/server/paramIntRecord.cc ca/server/paramRecordSet.cc ca/server/paramStringRecord.cc ca/server/record.cc ca/server/paramServer.cc EXTRA_BUILT_SOURCES_MY = oraParam.c subdir = . @@ -166,9 +166,8 @@ PROGRAMS = $(bin_PROGRAMS) am_pas_OBJECTS = arrayDest.$(OBJEXT) paramBlobRecord.$(OBJEXT) \ paramFilenameRecord.$(OBJEXT) paramIntRecord.$(OBJEXT) \ - paramRecord.$(OBJEXT) paramRecordSet.$(OBJEXT) \ - paramStringRecord.$(OBJEXT) record.$(OBJEXT) \ - paramServer.$(OBJEXT) + paramRecordSet.$(OBJEXT) paramStringRecord.$(OBJEXT) \ + record.$(OBJEXT) paramServer.$(OBJEXT) pas_OBJECTS = $(am_pas_OBJECTS) pas_LDADD = $(LDADD) pas_DEPENDENCIES = @@ -193,7 +192,6 @@ am__depfiles_maybe = depfiles @AMDEP_TRUE@ ./$(DEPDIR)/paramBlobRecord.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/paramFilenameRecord.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/paramIntRecord.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/paramRecord.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/paramRecordSet.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/paramServer.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/paramStringRecord.Po \ @@ -360,7 +358,6 @@ arrayDest.$(OBJEXT): ca/server/arrayDest.cc paramBlobRecord.$(OBJEXT): ca/server/paramBlobRecord.cc paramFilenameRecord.$(OBJEXT): ca/server/paramFilenameRecord.cc paramIntRecord.$(OBJEXT): ca/server/paramIntRecord.cc -paramRecord.$(OBJEXT): ca/server/paramRecord.cc paramRecordSet.$(OBJEXT): ca/server/paramRecordSet.cc paramStringRecord.$(OBJEXT): ca/server/paramStringRecord.cc record.$(OBJEXT): ca/server/record.cc @@ -387,7 +384,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paramBlobRecord.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paramFilenameRecord.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paramIntRecord.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paramRecord.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paramRecordSet.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paramServer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paramStringRecord.Po@am__quote@ @@ -565,18 +561,6 @@ paramIntRecord.obj: ca/server/paramIntRecord.cc @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o paramIntRecord.obj `cygpath -w ca/server/paramIntRecord.cc` -paramRecord.o: ca/server/paramRecord.cc -@AMDEP_TRUE@ source='ca/server/paramRecord.cc' object='paramRecord.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/paramRecord.Po' tmpdepfile='$(DEPDIR)/paramRecord.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o paramRecord.o `test -f 'ca/server/paramRecord.cc' || echo '$(srcdir)/'`ca/server/paramRecord.cc - -paramRecord.obj: ca/server/paramRecord.cc -@AMDEP_TRUE@ source='ca/server/paramRecord.cc' object='paramRecord.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/paramRecord.Po' tmpdepfile='$(DEPDIR)/paramRecord.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o paramRecord.obj `cygpath -w ca/server/paramRecord.cc` - paramRecordSet.o: ca/server/paramRecordSet.cc @AMDEP_TRUE@ source='ca/server/paramRecordSet.cc' object='paramRecordSet.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/paramRecordSet.Po' tmpdepfile='$(DEPDIR)/paramRecordSet.TPo' @AMDEPBACKSLASH@ diff --git a/allParam/ca/server/paramBlobRecord.cc b/allParam/ca/server/paramBlobRecord.cc index 6b652fb..cbeafec 100644 --- a/allParam/ca/server/paramBlobRecord.cc +++ b/allParam/ca/server/paramBlobRecord.cc @@ -1,4 +1,4 @@ -static const char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/ca/server/paramBlobRecord.cc,v 1.13 2003-01-31 12:25:32 hadaq Exp $"; +static const char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/ca/server/paramBlobRecord.cc,v 1.14 2003-05-19 11:01:55 sailer Exp $"; #define _POSIX_C_SOURCE 199509L #if HAVE_CONFIG_H @@ -17,7 +17,7 @@ extern "C" { #define EPICS_MAX_INDEX 4092 ParamBlobRecord::ParamBlobRecord(caServer& cas, const Param *p, const char *rn, const char *u) : - ParamRecord(cas, p, rn, u) + Record(cas, p, rn, u, aitEnumUint32) { size_t size; FILE *tmp; @@ -39,15 +39,15 @@ ParamBlobRecord::ParamBlobRecord(caServer& cas, const Param *p, const char *rn, funcTable.installReadFunc("severity", &Record::readSeverity); funcTable.installReadFunc("seconds", &Record::readSeconds); - funcTable.installReadFunc("alarmLow", &ParamRecord::readAlarmLow); - funcTable.installReadFunc("alarmHigh", &ParamRecord::readAlarmHigh); - funcTable.installReadFunc("alarmLowWarning", &ParamRecord::readAlarmLowWarning); - funcTable.installReadFunc("alarmHighWarning", &ParamRecord::readAlarmHighWarning); - funcTable.installReadFunc("graphicLow", &ParamRecord::readGraphicLow); - funcTable.installReadFunc("graphicHigh", &ParamRecord::readGraphicHigh); - funcTable.installReadFunc("controlLow", &ParamRecord::readControlLow); - funcTable.installReadFunc("controlHigh", &ParamRecord::readControlHigh); - funcTable.installReadFunc("precision", &ParamRecord::readPrecision); + funcTable.installReadFunc("alarmLow", &Record::readAlarmLow); + funcTable.installReadFunc("alarmHigh", &Record::readAlarmHigh); + funcTable.installReadFunc("alarmLowWarning", &Record::readAlarmLowWarning); + funcTable.installReadFunc("alarmHighWarning", &Record::readAlarmHighWarning); + funcTable.installReadFunc("graphicLow", &Record::readGraphicLow); + funcTable.installReadFunc("graphicHigh", &Record::readGraphicHigh); + funcTable.installReadFunc("controlLow", &Record::readControlLow); + funcTable.installReadFunc("controlHigh", &Record::readControlHigh); + funcTable.installReadFunc("precision", &Record::readPrecision); funcTable.installReadFunc("value", &ParamBlobRecord::readValue); } @@ -126,7 +126,13 @@ caStatus ParamBlobRecord::scan() val->setSevr(epicsSevNone); if (this->interest == aitTrue && pCAS != NULL) { - casEventMask select(pCAS->valueEventMask|pCAS->logEventMask|pCAS->alarmEventMask); +#if EPICS_RELEASE >= 314 + casEventMask select(pCAS->valueEventMask()|pCAS->logEventMask()| + pCAS->alarmEventMask()); +#else + casEventMask select(pCAS->valueEventMask|pCAS->logEventMask| + pCAS->alarmEventMask); +#endif this->postEvent (select, *val); } @@ -138,7 +144,11 @@ caStatus ParamBlobRecord::read(const casCtx &ctx, gdd &prototype) return ((scan() == S_cas_success) && funcTable.read(*this, prototype)); } +#if EPICS_RELEASE >= 314 +caStatus ParamBlobRecord::write(const casCtx &ctx, const gdd &value) +#else caStatus ParamBlobRecord::write(const casCtx &ctx, gdd &value) +#endif { return S_cas_noWrite; } diff --git a/allParam/ca/server/paramBlobRecord.h b/allParam/ca/server/paramBlobRecord.h index 6693c8d..7a8c931 100644 --- a/allParam/ca/server/paramBlobRecord.h +++ b/allParam/ca/server/paramBlobRecord.h @@ -3,22 +3,27 @@ #include "paramRecord.h" -class ParamBlobRecord : public ParamRecord { +class ParamBlobRecord : public Record { private: aitIndex index; gddAppFuncTable<ParamBlobRecord> funcTable; public: - ParamBlobRecord(caServer&, const Param *, const char *, const char *); + ParamBlobRecord(caServer&, const Param *p, const char *rn, const char *u); ~ParamBlobRecord(); epicsShareFunc aitEnum bestExternalType() const; epicsShareFunc unsigned maxDimension() const; epicsShareFunc aitIndex maxBound(unsigned int) const; gddAppFuncTableStatus readValue(gdd &); + caStatus scan(); - caStatus read(const casCtx &, gdd &); - caStatus write(const casCtx &, gdd &); + caStatus read(const casCtx &ctx, gdd &value); +#if EPICS_RELEASE >= 314 + caStatus write(const casCtx &ctx, const gdd &value); +#else + caStatus write(const casCtx &ctx, gdd &value); +#endif }; #endif /* !PARAMBLOBRECORD_H */ diff --git a/allParam/ca/server/paramFilenameRecord.cc b/allParam/ca/server/paramFilenameRecord.cc index a0fab92..eddc5b1 100644 --- a/allParam/ca/server/paramFilenameRecord.cc +++ b/allParam/ca/server/paramFilenameRecord.cc @@ -1,4 +1,4 @@ -static const char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/ca/server/paramFilenameRecord.cc,v 1.9 2003-01-31 12:25:32 hadaq Exp $"; +static const char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/ca/server/paramFilenameRecord.cc,v 1.10 2003-05-19 11:01:55 sailer Exp $"; #define _POSIX_C_SOURCE 199509L #if HAVE_CONFIG_H @@ -14,7 +14,7 @@ extern "C" { #include "paramFilenameRecord.h" ParamFilenameRecord::ParamFilenameRecord(caServer& cas, const Param *p, const char *rn, const char *u) : - ParamRecord(cas, p, rn, u) + Record(cas, p, rn, u, aitEnumString) { int rows; char *tmp[PARAM_MAX_ARRAY_LEN]; @@ -38,15 +38,15 @@ ParamFilenameRecord::ParamFilenameRecord(caServer& cas, const Param *p, const ch funcTable.installReadFunc("severity", &Record::readSeverity); funcTable.installReadFunc("seconds", &Record::readSeconds); - funcTable.installReadFunc("alarmLow", &ParamRecord::readAlarmLow); - funcTable.installReadFunc("alarmHigh", &ParamRecord::readAlarmHigh); - funcTable.installReadFunc("alarmLowWarning", &ParamRecord::readAlarmLowWarning); - funcTable.installReadFunc("alarmHighWarning", &ParamRecord::readAlarmHighWarning); - funcTable.installReadFunc("graphicLow", &ParamRecord::readGraphicLow); - funcTable.installReadFunc("graphicHigh", &ParamRecord::readGraphicHigh); - funcTable.installReadFunc("controlLow", &ParamRecord::readControlLow); - funcTable.installReadFunc("controlHigh", &ParamRecord::readControlHigh); - funcTable.installReadFunc("precision", &ParamRecord::readPrecision); + funcTable.installReadFunc("alarmLow", &Record::readAlarmLow); + funcTable.installReadFunc("alarmHigh", &Record::readAlarmHigh); + funcTable.installReadFunc("alarmLowWarning", &Record::readAlarmLowWarning); + funcTable.installReadFunc("alarmHighWarning", &Record::readAlarmHighWarning); + funcTable.installReadFunc("graphicLow", &Record::readGraphicLow); + funcTable.installReadFunc("graphicHigh", &Record::readGraphicHigh); + funcTable.installReadFunc("controlLow", &Record::readControlLow); + funcTable.installReadFunc("controlHigh", &Record::readControlHigh); + funcTable.installReadFunc("precision", &Record::readPrecision); funcTable.installReadFunc("value", &ParamFilenameRecord::readValue); } @@ -156,7 +156,13 @@ caStatus ParamFilenameRecord::scan() val->setSevr(epicsSevNone); if (this->interest == aitTrue && pCAS != NULL) { - casEventMask select(pCAS->valueEventMask|pCAS->logEventMask|pCAS->alarmEventMask); +#if EPICS_RELEASE >= 314 + casEventMask select(pCAS->valueEventMask()|pCAS->logEventMask()| + pCAS->alarmEventMask()); +#else + casEventMask select(pCAS->valueEventMask|pCAS->logEventMask| + pCAS->alarmEventMask); +#endif this->postEvent (select, *val); } @@ -168,7 +174,11 @@ caStatus ParamFilenameRecord::read(const casCtx &ctx, gdd &prototype) return ((scan() == S_cas_success) && funcTable.read(*this, prototype)); } +#if EPICS_RELEASE >= 314 +caStatus ParamFilenameRecord::write(const casCtx &ctx, const gdd &value) +#else caStatus ParamFilenameRecord::write(const casCtx &ctx, gdd &value) +#endif { return S_cas_noWrite; } diff --git a/allParam/ca/server/paramFilenameRecord.h b/allParam/ca/server/paramFilenameRecord.h index 62b3645..ce75662 100644 --- a/allParam/ca/server/paramFilenameRecord.h +++ b/allParam/ca/server/paramFilenameRecord.h @@ -3,23 +3,28 @@ #include "paramRecord.h" -class ParamFilenameRecord : public ParamRecord { +class ParamFilenameRecord : public Record { private: aitIndex index; char *ourValue[PARAM_MAX_ARRAY_LEN]; gddAppFuncTable<ParamFilenameRecord> funcTable; public: - ParamFilenameRecord(caServer&, const Param *, const char *, const char *); + ParamFilenameRecord(caServer&, const Param *p, const char *rn, const char *u); ~ParamFilenameRecord(); epicsShareFunc aitEnum bestExternalType() const; epicsShareFunc unsigned maxDimension() const; epicsShareFunc aitIndex maxBound(unsigned int) const; gddAppFuncTableStatus readValue(gdd &); + caStatus scan(); - caStatus read(const casCtx &, gdd &); - caStatus write(const casCtx &, gdd &); + caStatus read(const casCtx &ctx, gdd &value); +#if EPICS_RELEASE >= 314 + caStatus write(const casCtx &ctx, const gdd &value); +#else + caStatus write(const casCtx &ctx, gdd &value); +#endif }; #endif /* !PARAMFILENAMERECORD_H */ diff --git a/allParam/ca/server/paramIntRecord.cc b/allParam/ca/server/paramIntRecord.cc index ab74162..0138b05 100644 --- a/allParam/ca/server/paramIntRecord.cc +++ b/allParam/ca/server/paramIntRecord.cc @@ -1,4 +1,4 @@ -static const char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/ca/server/paramIntRecord.cc,v 1.12 2003-01-31 12:25:32 hadaq Exp $"; +static const char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/ca/server/paramIntRecord.cc,v 1.13 2003-05-19 11:01:55 sailer Exp $"; #define _POSIX_C_SOURCE 199509L #if HAVE_CONFIG_H @@ -14,7 +14,7 @@ extern "C" { #include "paramIntRecord.h" ParamIntRecord::ParamIntRecord(caServer& cas, const Param *p, const char *rn, const char *u) : - ParamRecord(cas, p, rn, u) + Record(cas, p, rn, u, aitEnumUint32) { int rows; unsigned long int tmp[PARAM_MAX_ARRAY_LEN]; @@ -35,15 +35,15 @@ ParamIntRecord::ParamIntRecord(caServer& cas, const Param *p, const char *rn, co funcTable.installReadFunc("severity", &Record::readSeverity); funcTable.installReadFunc("seconds", &Record::readSeconds); - funcTable.installReadFunc("alarmLow", &ParamRecord::readAlarmLow); - funcTable.installReadFunc("alarmHigh", &ParamRecord::readAlarmHigh); - funcTable.installReadFunc("alarmLowWarning", &ParamRecord::readAlarmLowWarning); - funcTable.installReadFunc("alarmHighWarning", &ParamRecord::readAlarmHighWarning); - funcTable.installReadFunc("graphicLow", &ParamRecord::readGraphicLow); - funcTable.installReadFunc("graphicHigh", &ParamRecord::readGraphicHigh); - funcTable.installReadFunc("controlLow", &ParamRecord::readControlLow); - funcTable.installReadFunc("controlHigh", &ParamRecord::readControlHigh); - funcTable.installReadFunc("precision", &ParamRecord::readPrecision); + funcTable.installReadFunc("alarmLow", &Record::readAlarmLow); + funcTable.installReadFunc("alarmHigh", &Record::readAlarmHigh); + funcTable.installReadFunc("alarmLowWarning", &Record::readAlarmLowWarning); + funcTable.installReadFunc("alarmHighWarning", &Record::readAlarmHighWarning); + funcTable.installReadFunc("graphicLow", &Record::readGraphicLow); + funcTable.installReadFunc("graphicHigh", &Record::readGraphicHigh); + funcTable.installReadFunc("controlLow", &Record::readControlLow); + funcTable.installReadFunc("controlHigh", &Record::readControlHigh); + funcTable.installReadFunc("precision", &Record::readPrecision); funcTable.installReadFunc("value", &ParamIntRecord::readValue); } @@ -135,7 +135,13 @@ caStatus ParamIntRecord::scan() val->setSevr(epicsSevNone); if (this->interest == aitTrue && pCAS != NULL) { - casEventMask select(pCAS->valueEventMask|pCAS->logEventMask|pCAS->alarmEventMask); +#if EPICS_RELEASE >= 314 + casEventMask select(pCAS->valueEventMask()|pCAS->logEventMask()| + pCAS->alarmEventMask()); +#else + casEventMask select(pCAS->valueEventMask|pCAS->logEventMask| + pCAS->alarmEventMask); +#endif this->postEvent (select, *val); } @@ -147,7 +153,11 @@ caStatus ParamIntRecord::read(const casCtx &ctx, gdd &prototype) return ((scan() == S_cas_success) && funcTable.read(*this, prototype)); } +#if EPICS_RELEASE >= 314 +caStatus ParamIntRecord::write(const casCtx &ctx, const gdd &value) +#else caStatus ParamIntRecord::write(const casCtx &ctx, gdd &value) +#endif { aitUint32 intValue; diff --git a/allParam/ca/server/paramIntRecord.h b/allParam/ca/server/paramIntRecord.h index 2049317..40ca087 100644 --- a/allParam/ca/server/paramIntRecord.h +++ b/allParam/ca/server/paramIntRecord.h @@ -4,23 +4,28 @@ #include "paramRecord.h" #include "arrayDest.h" -class ParamIntRecord : public ParamRecord { +class ParamIntRecord : public Record { private: aitIndex index; unsigned long int ourValue[PARAM_MAX_ARRAY_LEN]; gddAppFuncTable<ParamIntRecord> funcTable; public: - ParamIntRecord(caServer&, const Param *, const char *, const char *); + ParamIntRecord(caServer&, const Param *p, const char *rn, const char *u); ~ParamIntRecord(); epicsShareFunc aitEnum bestExternalType() const; epicsShareFunc unsigned maxDimension() const; epicsShareFunc aitIndex maxBound(unsigned int) const; gddAppFuncTableStatus readValue(gdd &); + caStatus scan(); - caStatus read(const casCtx &, gdd &); - caStatus write(const casCtx &, gdd &); + caStatus read(const casCtx &ctx, gdd &value); +#if EPICS_RELEASE >= 314 + caStatus write(const casCtx &ctx, const gdd &value); +#else + caStatus write(const casCtx &ctx, gdd &value); +#endif }; #endif /* !PARAMINTRECORD_H */ diff --git a/allParam/ca/server/paramRecord.cc b/allParam/ca/server/paramRecord.cc deleted file mode 100644 index ce9cf6e..0000000 --- a/allParam/ca/server/paramRecord.cc +++ /dev/null @@ -1,110 +0,0 @@ -static const char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/ca/server/Attic/paramRecord.cc,v 1.9 2003-01-31 12:25:32 hadaq Exp $"; -#define _POSIX_C_SOURCE 199509L - -#if HAVE_CONFIG_H -#include <config.h> -#endif /* HAVE_CONFIG_H */ - -extern "C" { - #include <unistd.h> - - #include <ctype.h> - #include <stdio.h> - #include <string.h> -} - -#include "paramRecord.h" - -ParamRecord::ParamRecord(caServer& cas, const Param *p, const char *rn, const char *u) : - Record(cas, rn, u, aitEnumString), param(p) -{ - char tmp; - char buf1[PARAM_MAX_NAME_LEN]; - char buf2[PARAM_MAX_NAME_LEN]; - char buf3[PARAM_MAX_NAME_LEN]; - - strcpy(pPVName, rn); - strcpy(buf1, ""); - strcpy(buf2, ""); - strcpy(buf3, ""); - if(sscanf(pPVName, "HAD:P%c:%[^:]:%[^:]:%[^:]", &tmp, buf1, buf2, buf3) != 4) { - strcpy(name, buf1); - strcpy(idx, buf2); - } else { - strcpy(name, buf2); - strcpy(idx, buf3); - } - - for (unsigned int i = 0 ; i < strlen(name) ; i++) { - name[i] = tolower(name[i]); - } - for (unsigned int i = 0 ; i < strlen(idx) ; i++) { - idx[i] = tolower(idx[i]); - } - interest = aitFalse; -} - -ParamRecord::~ParamRecord() -{ - delete pDest; -} - -const char *ParamRecord::getPVName() -{ - return pPVName; -} - -gddAppFuncTableStatus ParamRecord::readAlarmLow(gdd &value) -{ - value.putConvert(0); - return S_casApp_success; -} - -gddAppFuncTableStatus ParamRecord::readAlarmHigh(gdd &value) -{ - value.putConvert(0); - return S_casApp_success; -} - -gddAppFuncTableStatus ParamRecord::readAlarmLowWarning(gdd &value) -{ - value.putConvert(0); - return S_casApp_success; -} - -gddAppFuncTableStatus ParamRecord::readAlarmHighWarning(gdd &value) -{ - value.putConvert(0); - return S_casApp_success; -} - -gddAppFuncTableStatus ParamRecord::readGraphicLow(gdd &value) -{ - value.putConvert(0); - return S_casApp_success; -} - -gddAppFuncTableStatus ParamRecord::readGraphicHigh(gdd &value) -{ - value.putConvert(0); - return S_casApp_success; -} - -gddAppFuncTableStatus ParamRecord::readControlLow(gdd &value) -{ - value.putConvert(0); - return S_casApp_success; -} - -gddAppFuncTableStatus ParamRecord::readControlHigh(gdd &value) -{ - value.putConvert(0); - return S_casApp_success; -} - -gddAppFuncTableStatus ParamRecord::readPrecision(gdd &value) -{ - value.putConvert(0); - return S_casApp_success; -} - diff --git a/allParam/ca/server/paramRecord.h b/allParam/ca/server/paramRecord.h deleted file mode 100644 index 9271384..0000000 --- a/allParam/ca/server/paramRecord.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef PARAMRECORD_H -#define PARAMRECORD_H - -#include <gdd.h> - -extern "C" { - #include <allParam.h> -} - -#include "record.h" -#include "arrayDest.h" - -class ParamRecord : public Record { - protected: - ArrayDestructor *pDest; - const Param *param; - char pPVName[PARAM_MAX_VALUE_LEN]; - char name[PARAM_MAX_VALUE_LEN]; - char idx[PARAM_MAX_VALUE_LEN]; - - public: - ParamRecord(caServer&, const Param *, const char *, const char *); - ~ParamRecord(); - - const char *getPVName(); - - virtual gddAppFuncTableStatus readAlarmLow(gdd &); - virtual gddAppFuncTableStatus readAlarmHigh(gdd &); - virtual gddAppFuncTableStatus readAlarmLowWarning(gdd &); - virtual gddAppFuncTableStatus readAlarmHighWarning(gdd &); - virtual gddAppFuncTableStatus readGraphicLow(gdd &); - virtual gddAppFuncTableStatus readGraphicHigh(gdd &); - virtual gddAppFuncTableStatus readControlLow(gdd &); - virtual gddAppFuncTableStatus readControlHigh(gdd &); - virtual gddAppFuncTableStatus readPrecision(gdd &); - - virtual gddAppFuncTableStatus readValue(gdd &) = 0; - - virtual caStatus scan() = 0; - virtual caStatus read(const casCtx &, gdd &) = 0; - virtual caStatus write(const casCtx &, gdd &) = 0; -}; - -#endif /* !PARAMRECORD_H */ - diff --git a/allParam/ca/server/paramRecordSet.h b/allParam/ca/server/paramRecordSet.h index bb3f570..400c062 100644 --- a/allParam/ca/server/paramRecordSet.h +++ b/allParam/ca/server/paramRecordSet.h @@ -15,7 +15,7 @@ extern "C" { class ParamRecordSet : public caServer { private: int numPv; - ParamRecord *pvs[MAX_NUM_PV]; + Record *pvs[MAX_NUM_PV]; int numParamSrc; Param *param[MAX_PARAM_SRC]; diff --git a/allParam/ca/server/paramServer.cc b/allParam/ca/server/paramServer.cc index 0ecd84a..bb707ec 100644 --- a/allParam/ca/server/paramServer.cc +++ b/allParam/ca/server/paramServer.cc @@ -1,30 +1,126 @@ -static const char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/ca/server/paramServer.cc,v 1.5 2003-01-31 12:25:32 hadaq Exp $"; -#define _POSIX_C_SOURCE 199509L +static const char rcsId[] = + "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/ca/server/paramServer.cc,v 1.6 2003-05-19 11:01:55 sailer Exp $"; +#define _POSIX_C_SOURCE 199506L +#define SYSLOG_NAMES #if HAVE_CONFIG_H #include <config.h> #endif /* HAVE_CONFIG_H */ extern "C" { - #include <unistd.h> +extern char *optarg; +extern int optind, opterr, optopt; - #include <ctype.h> - #include <string.h> - #include <syslog.h> +#include <unistd.h> + +#include <ctype.h> +#include <string.h> +#include <syslog.h> } #include <fdManager.h> #include "paramRecordSet.h" -int main(int argc, char *argv[]) { - openlog(argv[0], LOG_PERROR | LOG_PID, LOG_LOCAL0); +static const char *ourBasename(const char *s) +{ + const char *p; + + p = strrchr(s, '/'); + return p != NULL ? p + 1 : s; +} + +static void help(const char *name) +{ + fprintf(stdout, "%s: Usage(1): %s [ -d ] [ -v verbosity ] [ -w workdir ]\n", name, name); + fprintf(stdout, "%s: Option -d (optional): start as daemon\n", + name); + fprintf(stdout, "%s: Option -v (optional): verbosity, defaults to info\n", name); + fprintf(stdout, "%s: Option -w (optional): workdir for temporary files (needs to be unique)\n", name); + fprintf(stdout, "%s: Usage(2): %s -h\n", name, name); + fprintf(stdout, "%s: Option -h (required): help\n", name); +} + +static void usage(const char *name) +{ + fprintf(stderr, "%s: Usage(1): %s [ -d ] [ -v verbosity ] [ -w workdir ]\n", name, name); + fprintf(stderr, "%s: Usage(2): %s -h\n", name, name); +} + +int main(int argc, char *argv[]) +{ + int logoption = LOG_PID; + pid_t myPid = 0; + int daemon = 0; + int i; + char *cwd = NULL; + int val; + char *verbosity = NULL; + + while((val = getopt(argc, argv, "dhv:w:")) != -1) { + switch(val) { + case('d'): + daemon = 1; + break; + case('h'): + help(ourBasename(argv[0])); + exit(EXIT_SUCCESS); + break; + case('v'): + verbosity = optarg; + break; + case('w'): + cwd = optarg; + break; + default: + usage(ourBasename(argv[0])); + exit(EXIT_FAILURE); + } + } + + if (daemon) { + if (0 < (myPid = fork())) { + exit(EXIT_SUCCESS); + } else { + setsid(); + if (0 < (myPid = fork())) { + exit(EXIT_SUCCESS); + } else { + if (!cwd) { + cwd = "/"; + } + chdir(cwd); + freopen("/dev/null", "r", stdin); + freopen("/dev/null", "a", stdout); + freopen("/dev/console", "a", stderr); + myPid = getpid(); + } + } + } else { + logoption |= LOG_PERROR; + } + + openlog(ourBasename(argv[0]), logoption, LOG_LOCAL0); + + if (verbosity == NULL) { + verbosity = "info"; + } + for (i = 0; prioritynames[i].c_name != NULL + && 0 != strcmp(prioritynames[i].c_name, verbosity); i++) { + } + if (prioritynames[i].c_name == NULL) { + syslog(LOG_ERR, "%s, %d: Unknown verbosity %s. Exiting.", + __FILE__, __LINE__, verbosity); + exit(EXIT_FAILURE); + } else { + setlogmask(LOG_UPTO(prioritynames[i].c_val)); + } ParamRecordSet *cas; if (NULL == (cas = new ParamRecordSet(MAX_NUM_PV))) { - syslog(LOG_ERR, "Cannot allocate memory for the RecordSet. Exiting.\n"); - exit(-1); + syslog(LOG_ERR, "Cannot allocate memory for the RecordSet. Exiting."); + exit(EXIT_FAILURE); } cas->setDebugLevel(0u); diff --git a/allParam/ca/server/paramStringRecord.cc b/allParam/ca/server/paramStringRecord.cc index 8cbe49f..65c2024 100644 --- a/allParam/ca/server/paramStringRecord.cc +++ b/allParam/ca/server/paramStringRecord.cc @@ -1,4 +1,4 @@ -static const char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/ca/server/paramStringRecord.cc,v 1.11 2003-01-31 12:25:32 hadaq Exp $"; +static const char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/ca/server/paramStringRecord.cc,v 1.12 2003-05-19 11:01:55 sailer Exp $"; #define _POSIX_C_SOURCE 199509L #if HAVE_CONFIG_H @@ -14,7 +14,7 @@ extern "C" { #include "paramStringRecord.h" ParamStringRecord::ParamStringRecord(caServer& cas, const Param *p, const char *rn, const char *u) : - ParamRecord(cas, p, rn, u) + Record(cas, p, rn, u, aitEnumString) { int rows; char *tmp[PARAM_MAX_ARRAY_LEN]; @@ -38,15 +38,15 @@ ParamStringRecord::ParamStringRecord(caServer& cas, const Param *p, const char * funcTable.installReadFunc("severity", &Record::readSeverity); funcTable.installReadFunc("seconds", &Record::readSeconds); - funcTable.installReadFunc("alarmLow", &ParamRecord::readAlarmLow); - funcTable.installReadFunc("alarmHigh", &ParamRecord::readAlarmHigh); - funcTable.installReadFunc("alarmLowWarning", &ParamRecord::readAlarmLowWarning); - funcTable.installReadFunc("alarmHighWarning", &ParamRecord::readAlarmHighWarning); - funcTable.installReadFunc("graphicLow", &ParamRecord::readGraphicLow); - funcTable.installReadFunc("graphicHigh", &ParamRecord::readGraphicHigh); - funcTable.installReadFunc("controlLow", &ParamRecord::readControlLow); - funcTable.installReadFunc("controlHigh", &ParamRecord::readControlHigh); - funcTable.installReadFunc("precision", &ParamRecord::readPrecision); + funcTable.installReadFunc("alarmLow", &Record::readAlarmLow); + funcTable.installReadFunc("alarmHigh", &Record::readAlarmHigh); + funcTable.installReadFunc("alarmLowWarning", &Record::readAlarmLowWarning); + funcTable.installReadFunc("alarmHighWarning", &Record::readAlarmHighWarning); + funcTable.installReadFunc("graphicLow", &Record::readGraphicLow); + funcTable.installReadFunc("graphicHigh", &Record::readGraphicHigh); + funcTable.installReadFunc("controlLow", &Record::readControlLow); + funcTable.installReadFunc("controlHigh", &Record::readControlHigh); + funcTable.installReadFunc("precision", &Record::readPrecision); funcTable.installReadFunc("value", &ParamStringRecord::readValue); } @@ -156,7 +156,13 @@ caStatus ParamStringRecord::scan() } if (this->interest == aitTrue && pCAS != NULL) { - casEventMask select(pCAS->valueEventMask|pCAS->logEventMask|pCAS->alarmEventMask); +#if EPICS_RELEASE >= 314 + casEventMask select(pCAS->valueEventMask()|pCAS->logEventMask()| + pCAS->alarmEventMask()); +#else + casEventMask select(pCAS->valueEventMask|pCAS->logEventMask| + pCAS->alarmEventMask); +#endif this->postEvent (select, *val); } @@ -168,7 +174,11 @@ caStatus ParamStringRecord::read(const casCtx &ctx, gdd &prototype) return ((scan() == S_cas_success) && funcTable.read(*this, prototype)); } +#if EPICS_RELEASE >= 314 +caStatus ParamStringRecord::write(const casCtx &ctx, const gdd &value) +#else caStatus ParamStringRecord::write(const casCtx &ctx, gdd &value) +#endif { aitString stringValue; diff --git a/allParam/ca/server/paramStringRecord.h b/allParam/ca/server/paramStringRecord.h index 75a7d30..680acdb 100644 --- a/allParam/ca/server/paramStringRecord.h +++ b/allParam/ca/server/paramStringRecord.h @@ -3,23 +3,28 @@ #include "paramRecord.h" -class ParamStringRecord : public ParamRecord { +class ParamStringRecord : public Record { private: aitIndex index; char *ourValue[PARAM_MAX_ARRAY_LEN]; gddAppFuncTable<ParamStringRecord> funcTable; public: - ParamStringRecord(caServer&, const Param *, const char *, const char *); + ParamStringRecord(caServer&, const Param *p, const char *rn, const char *u); ~ParamStringRecord(); epicsShareFunc aitEnum bestExternalType() const; epicsShareFunc unsigned maxDimension() const; epicsShareFunc aitIndex maxBound(unsigned int) const; gddAppFuncTableStatus readValue(gdd &); + caStatus scan(); - caStatus read(const casCtx &, gdd &); - caStatus write(const casCtx &, gdd &); + caStatus read(const casCtx &ctx, gdd &value); +#if EPICS_RELEASE >= 314 + caStatus write(const casCtx &ctx, const gdd &value); +#else + caStatus write(const casCtx &ctx, gdd &value); +#endif }; #endif /* !PARAMSTRINGRECORD_H */ diff --git a/allParam/ca/server/record.cc b/allParam/ca/server/record.cc index e63ddf0..366a89c 100644 --- a/allParam/ca/server/record.cc +++ b/allParam/ca/server/record.cc @@ -1,94 +1,202 @@ -static const char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/ca/server/record.cc,v 1.4 2003-01-31 12:25:32 hadaq Exp $"; -#define _POSIX_C_SOURCE 199509L +static const char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/ca/server/record.cc,v 1.5 2003-05-19 11:01:56 sailer Exp $"; +#define _POSIX_C_SOURCE 199506L #if HAVE_CONFIG_H #include <config.h> #endif /* HAVE_CONFIG_H */ extern "C" { - #include <unistd.h> +#include <unistd.h> - #include <string.h> - #include <time.h> +#include <ctype.h> +#include <string.h> +#include <time.h> } #include "record.h" -/******************** - * record Functions * - ********************/ - -Record::Record(caServer &cas, const char *n, const char *u, aitEnum t) : casPV(cas), units(u), type(t) { - strcpy (name, n); +#if EPICS_RELEASE >= 314 +Record::Record(caServer &cas, const Param *p, const char *n, const char *u, aitEnum t) : casPV(cas), param(p), units(u), type(t), timer(getCAS()->createTimer()) +#else +Record::Record(caServer &cas, const Param *p, const char *n, const char *u, aitEnum t) : casPV(cas), param(p), units(u), type(t) +#endif +{ + char buf1[PARAM_MAX_NAME_LEN]; + char buf2[PARAM_MAX_NAME_LEN]; + char buf3[PARAM_MAX_NAME_LEN]; + + strcpy (pPVName, n); interest = aitFalse; alarmStatus = epicsAlarmNone; alarmSeverity = epicsSevNone; + if(sscanf(pPVName, "HAD:P%*c:%[^:]:%[^:]:%[^:]", buf1, buf2, buf3) != 4) { + strcpy(name, buf1); + strcpy(idx, buf2); + } else { + strcpy(name, buf2); + strcpy(idx, buf3); + } + for (unsigned int i = 0 ; i < strlen(name) ; i++) { + name[i] = tolower(name[i]); + } + for (unsigned int i = 0 ; i < strlen(idx) ; i++) { + idx[i] = tolower(idx[i]); + } + + interest = aitFalse; + recordScanTimer = new scanTimer(*this); +#if EPICS_RELEASE >= 314 + timer.start(*recordScanTimer, 1.0); +#endif } -Record::~Record() { +Record::~Record() +{ + delete pDest; } -/* Misc Functions which are the same in all records */ - -void Record::destroy() { +void Record::destroy() +{ } -caStatus Record::interestRegister() { +caStatus Record::interestRegister() +{ interest = aitTrue; return S_casApp_success; } -void Record::interestDelete() { +void Record::interestDelete() +{ interest = aitFalse; } -const char *Record::getName() const { - return name; +const char *Record::getName() const +{ + return pPVName; } -aitEnum Record::bestExternalType() const { +aitEnum Record::bestExternalType() const +{ return type; } -/* Read Functions which are the same for all records */ - -gddAppFuncTableStatus Record::readUnits(gdd &value) { +gddAppFuncTableStatus Record::readUnits(gdd &value) +{ value.putConvert(*units); return S_casApp_success; } -gddAppFuncTableStatus Record::readStatus(gdd &value) { - value.putConvert((unsigned int) alarmStatus); +gddAppFuncTableStatus Record::readStatus(gdd &value) +{ + value.putConvert((aitInt32) alarmStatus); return S_casApp_success; } -gddAppFuncTableStatus Record::readSeverity(gdd &value) { - value.putConvert((unsigned int) alarmSeverity); +gddAppFuncTableStatus Record::readSeverity(gdd &value) +{ + value.putConvert((aitInt32) alarmSeverity); return S_casApp_success; } -gddAppFuncTableStatus Record::readSeconds(gdd &value) { +gddAppFuncTableStatus Record::readSeconds(gdd &value) +{ time_t now; now = time(NULL); value.putConvert((aitUint32) now); return S_casApp_success; } -/*********************** - * scanTimer Functions * - ***********************/ +gddAppFuncTableStatus Record::readName(gdd &value) +{ + value.putConvert(pPVName); + return S_casApp_success; +} + +gddAppFuncTableStatus Record::readAlarmLow(gdd &value) +{ + value.putConvert(0); + return S_casApp_success; +} -scanTimer::scanTimer (Record &pv) : osiTimer(1.0), procVar(pv) { +gddAppFuncTableStatus Record::readAlarmHigh(gdd &value) +{ + value.putConvert(2147483647); + return S_casApp_success; +} + +gddAppFuncTableStatus Record::readAlarmLowWarning(gdd &value) +{ + value.putConvert(0); + return S_casApp_success; +} + +gddAppFuncTableStatus Record::readAlarmHighWarning(gdd &value) +{ + value.putConvert(2147483647); + return S_casApp_success; +} + +gddAppFuncTableStatus Record::readGraphicLow(gdd &value) +{ + value.putConvert(0); + return S_casApp_success; } -void scanTimer::expire() { +gddAppFuncTableStatus Record::readGraphicHigh(gdd &value) +{ + value.putConvert(2147483647); + return S_casApp_success; +} + +gddAppFuncTableStatus Record::readControlLow(gdd &value) +{ + value.putConvert(0); + return S_casApp_success; +} + +gddAppFuncTableStatus Record::readControlHigh(gdd &value) +{ + value.putConvert(2147483647); + return S_casApp_success; +} + +gddAppFuncTableStatus Record::readEnums(gdd &value) +{ + value.putConvert((aitString) "not implemented"); + return S_casApp_success; +} + +gddAppFuncTableStatus Record::readPrecision(gdd &value) +{ + value.putConvert(0); + return S_casApp_success; +} + +#if EPICS_RELEASE >= 314 +scanTimer::scanTimer (Record &pv) : procVar(pv) +#else +scanTimer::scanTimer (Record &pv) : osiTimer(1.0), procVar(pv) +#endif +{ +} + +#if EPICS_RELEASE >= 314 +epicsTimerNotify::expireStatus scanTimer::expire(const epicsTime &t) +{ + procVar.scan(); + return expireStatus(restart, 1.0); +} +#else +void scanTimer::expire() +{ procVar.scan(); } -osiBool scanTimer::again() const { +osiBool scanTimer::again() const +{ return osiTrue; } - +#endif diff --git a/allParam/ca/server/record.h b/allParam/ca/server/record.h index f0a51b9..555654a 100644 --- a/allParam/ca/server/record.h +++ b/allParam/ca/server/record.h @@ -1,31 +1,50 @@ #ifndef RECORD_H #define RECORD_H -#include <casdef.h> +#if HAVE_CONFIG_H +#include <config.h> +#endif /* HAVE_CONFIG_H */ +#include <casdef.h> +#if EPICS_RELEASE >= 314 +#include <epicsTimer.h> +#else #include <osiTimer.h> +#endif #include <aitTypes.h> #include <aitHelpers.h> - #include <gddApps.h> #include <gddAppFuncTable.h> -#define NAMELENGTH 28 +extern "C" { + #include <allParam.h> +} + +#include "arrayDest.h" class scanTimer; class Record : public casPV { protected: - char name[NAMELENGTH + 1]; + const Param *param; const char *units; aitEnum type; gdd *val; +#if EPICS_RELEASE >= 314 + epicsTimer &timer; +#endif scanTimer *recordScanTimer; aitBool interest; epicsAlarmCondition alarmStatus; epicsAlarmSeverity alarmSeverity; + + ArrayDestructor *pDest; + char pPVName[PARAM_MAX_VALUE_LEN]; + char name[PARAM_MAX_VALUE_LEN]; + char idx[PARAM_MAX_VALUE_LEN]; + public: - Record(caServer&, const char*, const char*, aitEnum); + Record(caServer &cas, const Param *p, const char *n, const char *u, aitEnum t); ~Record(); void destroy(); @@ -34,17 +53,44 @@ class Record : public casPV { const char *getName() const; aitEnum bestExternalType() const; + inline const char *getPVName() { return pPVName; } + gddAppFuncTableStatus readUnits(gdd &); gddAppFuncTableStatus readStatus(gdd &); gddAppFuncTableStatus readSeverity(gdd &); gddAppFuncTableStatus readSeconds(gdd &); + gddAppFuncTableStatus readName(gdd &); + gddAppFuncTableStatus readAlarmLow(gdd &); + gddAppFuncTableStatus readAlarmHigh(gdd &); + gddAppFuncTableStatus readAlarmLowWarning(gdd &); + gddAppFuncTableStatus readAlarmHighWarning(gdd &); + gddAppFuncTableStatus readGraphicLow(gdd &); + gddAppFuncTableStatus readGraphicHigh(gdd &); + gddAppFuncTableStatus readControlLow(gdd &); + gddAppFuncTableStatus readControlHigh(gdd &); + gddAppFuncTableStatus readEnums(gdd &); + gddAppFuncTableStatus readPrecision(gdd &); virtual gddAppFuncTableStatus readValue(gdd &) = 0; + virtual caStatus scan() = 0; virtual caStatus read(const casCtx &, gdd &) = 0; +#if EPICS_RELEASE >= 314 + virtual caStatus write(const casCtx &, const gdd &) = 0; +#else virtual caStatus write(const casCtx &, gdd &) = 0; +#endif }; +#if EPICS_RELEASE >= 314 +class scanTimer : public epicsTimerNotify { + private: + Record &procVar; + public: + scanTimer(Record &); + expireStatus expire(const epicsTime &t); +}; +#else class scanTimer : public osiTimer { private: Record &procVar; @@ -53,6 +99,7 @@ class scanTimer : public osiTimer { void expire(); osiBool again() const; }; +#endif #endif /* !RECORD_H */ -- 2.43.0