Looking over makefiles, if the CALC module is defined in the StreamDevice RELEASE file, the stream.dbd file will contain that scalcout device support line. The CaenFastPS module then includes stream.dbd without also including sCalcoutRecord.dbd (or calcSupport.dbd
which grabs all the calc dbd files) which means that the scalcout record is never defined when the dbd is expanded.
* include the calc module and the needed dbd files into the CaenFastPS module,
* or change the inclusion of stream.dbd to including the file stream-base.dbd instead
My attempts at upgrading to a newer version of EPICS base and support modules have foundered. I downloaded and built base-3-15.7, synapps-6., and the latest StreamDevice. No (major) problems there. I had to
comment out the Oriel motor support because there appears to be no OrielRegister.h but other than that everything built.
But when trying to build one of my support modules and test IOCs I get odd complaints about scalcout record support:
. . .
make[3]: Entering directory `/eda/epics/R3.15.7/modules/instrument/CaenFastPS/CaenFastPSapp/src/O.linux-x86_64'
/usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ -DUNIX -Dlinux -O3 -Wall -mtune=generic -m64 -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc
-I../../../include/os/Linux -I../../../include -I/eda/epics/R3.15.7/modules/soft/StreamDevice/include -I/eda/epics/R3.15.7/modules/soft/synapps/synApps_6_1/support/asyn-R4-36/include -I/eda/epics/R3.15.7/base/include/compiler/gcc -I/eda/epics/R3.15.7/base/include/os/Linux
-I/eda/epics/R3.15.7/base/include -MM -MF CaenFastPSMain.d ../CaenFastPSMain.cpp
Creating dbd file CaenFastPS.dbd
perl -CSD /eda/epics/R3.15.7/base/bin/linux-x86_64/dbdExpand.pl -I. -I.. -I../O.Common -I../../../dbd -I/eda/epics/R3.15.7/modules/soft/StreamDevice/dbd -I/eda/epics/R3.15.7/modules/soft/synapps/synApps_6_1/support/asyn-R4-36/dbd
-I/eda/epics/R3.15.7/base/dbd -o CaenFastPS.dbd base.dbd stream.dbd asynRecord.dbd drvAsynIPPort.dbd
Device using unknown record type 'scalcout', declaration created
And the resulting application dbd file contains:
device(longout, CONSTANT, devLoSoft, "Soft Channel")
device(longout, CONSTANT, devLoSoftCallback, "Async Soft Channel")
device(longout, INST_IO, devlongoutStream, "stream")
device(scalcout, INST_IO,
devscalcoutStream, "stream")
The empty scalcout record declaration breaks things when the test IOC starts
up:
. . .
cd "/eda/epics/R3.15.7/modules/instrument/CaenFastPS"
###############################################################################
# Register all support components
dbLoadDatabase "dbd/CaenFastPS.dbd"
Declaration of recordtype(scalcout) preceeded full definition.
Error at or before "}" in file "dbd/CaenFastPS.dbd" line 13241
CaenFastPS_registerRecordDeviceDriver pdbbase
registerRecordDeviceDriver failed aSub
registerRecordDeviceDriver failed ai
registerRecordDeviceDriver failed stringin
registerRecordDeviceDriver failed sub
###############################################################################
Suggestions?