1436 lines
51 KiB
HTML
1436 lines
51 KiB
HTML
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<meta name="GENERATOR" content="Mozilla/4.51 [en] (X11; U; SunOS 5.6 sun4u) [Netscape]">
|
|
<title>EPICS Release baseR3.13.0.beta12
|
|
</title>
|
|
</head>
|
|
<body>
|
|
|
|
<h1>
|
|
EPICS Release baseR3.13.1</h1>
|
|
|
|
<h4>
|
|
November 20, 1998</h4>
|
|
|
|
<h3>
|
|
Changes since 3.13.1</h3>
|
|
<b>dbStaticLib</b>
|
|
<p>The DTYP field is always written. The NoRun version now keeps record
|
|
instances keeps all records of each type in alphabetical order.
|
|
<p><b>breakpoint tables</b>
|
|
<p>Tables names were previously forced to be alphanumeric. This restriction
|
|
is removed.
|
|
<p><b>dbNotify</b>
|
|
<p>If dbPutNotify called dbProcess and dbProcess returned an error
|
|
the notify completion callback was called twice. This bug is fixed.
|
|
<p><b>drvBB232</b>
|
|
<p>This support was defining storage twice. A bug in the current gcc compiler
|
|
supplied with tornado does not properl;y compile such code. The extra definitions
|
|
are removed.
|
|
<p><b>aiRecord and aoRecord</b>
|
|
<p>eoff was not being reinitialized when conversion related fields were
|
|
dynamically modified.
|
|
<p><b>mbbiDirectRecord</b>
|
|
<p>When just the record's severity changed, only monitors on the VAL fields
|
|
were posted, no monitors on the single bit fields.
|
|
<br>
|
|
<h3>
|
|
Changes between beta12 and 3.13.1</h3>
|
|
<b><tt>iocLogClient</tt></b>
|
|
<p>If either of the environment variables EPICS_IOC_LOG_PORT or EPICS_IOC_LOG_INET
|
|
are not defined then iocLogDisable is set true, i.e. logging is disabled.
|
|
Also in the epics base distribution EPICS_IOC_LOG_FILE_NAME and EPICS_IOC_LOG_INET
|
|
are set to null.
|
|
<p><b><tt>dbCaGetTimeStamp</tt></b>
|
|
<p>This is a new routine for database channel access links.
|
|
<p><b><tt>drvTS</tt></b>
|
|
<p>The routine TSsetClockFromUnix was made global. Calling it forces a
|
|
resynchronization with a host time server. This is useful to
|
|
<br>force a master timing ioc to resynchronize.
|
|
<p>Several bugs were fixed. Previously async clients did not sync properly
|
|
with a master timing ioc. Also if an async client syncing with a unix/ntp
|
|
server got out of sync by > 1 sec then it could get out of sync by 1 to
|
|
20 seconds for an indeterminate period of time.
|
|
<p><b><tt>task_params.h</tt></b>
|
|
<p>Task priorities were changed so that no epics task has higher
|
|
priority than netTask. Definitions for IOEVENTSCAN and TIMESTAMP were removed.
|
|
<p><b><tt>histogram record</tt></b>
|
|
<p>Added new field PREC for display of double and float fields ULIM, LLIM,
|
|
SDEL, SVAL, SGNL, and WDTH. Added unsigned long fields HOPR and LOPR for
|
|
display of VAL array counts. Changed SDEL field from SPC_NOMOD to
|
|
SPC_RESET to allow start and stop of the watch dog timer.
|
|
<p><b><tt>Sequencer</tt></b>
|
|
<p>The lex definitions have been changed so that definitions like
|
|
<pre>#define ERRVALUE 9.90E+09</pre>
|
|
|
|
<p><br>are accepted.
|
|
<p>Initial values for static variables are now honored. Previously the
|
|
syntax was permitted but the initial value was ignored. <b>Note</b> that
|
|
initial values will give a compilation error if the "recursive" option
|
|
is used because the assignments are within the body of a struct {} definition;
|
|
it seemed worthwhile supporting the syntax for the non-recursive case.
|
|
<p><b><tt>devMbbiDirectSoftRaw, devMbbiSoftRaw, devMbboDirectSoftRaw, devMbboSoftRaw</tt></b>
|
|
<br>
|
|
<p><tt>SHFT </tt>was made a prompt field and also modifiable. The
|
|
VAL field of mbboDirectRecord is now modifiable.
|
|
<p>If the fields NOBT and SHFT are given values then this device support
|
|
will honor the MASK and SHFT fields just like hardware device support.
|
|
To keep compatibilty with old databases, if NOBT is 0 during init_record,
|
|
mask is set to the value 0xffffffff. Thus old databases will act like previously
|
|
<b>unless</b>
|
|
the nobt field was set to a non-zero value.
|
|
<p><b><tt>calcoutRecord</tt></b>
|
|
<p>No longer calls dbScanLock until interruptAccept is true.
|
|
<p><b><tt>breakpoint tables</tt></b>
|
|
<p>Entering negative values failed. This bug is fixed.
|
|
<p><b><tt>dbl("<record type>","<output file>","<field list>")</tt></b>
|
|
<p>The vxWorks console command dbl now allows an additional argument, which
|
|
is a list of field names.
|
|
<p>For example
|
|
<p>iocexample> dbl "ai",0,"DESC SCAN"
|
|
<br>mrk:aiExample,"Analog input","Passive"
|
|
<br>mrk:aiExample1,"Analog input No. 1","Passive"
|
|
<br>mrk:aiExample2,"Analog input No. 2","Passive"
|
|
<br>mrk:aiExample3,"Analog input No. 3","Passive"
|
|
<br>
|
|
<h4>
|
|
June 15, 1998</h4>
|
|
All major functionality that will be in R3.13 is now in place. It has been
|
|
build on solaris, sunos, HPUX, alpha, SG, and winXX. This release is still
|
|
called a beta release but will become 3.13.1 as soon as it has been used
|
|
on a few production systems (bug fixes will be made if necessary)
|
|
<p>The Application Developer's Guide is a major revision of the 3.12 edition.
|
|
The latest version is for beta12 base release. It is available in
|
|
pdf (adobe acrobat reader) and in postscript. The pdf format is nice for
|
|
online viewing and postscript for generating a hard copy.
|
|
<p>LANL has a revision of the Record Reference Manual available. See the
|
|
LANL EPICS documentation.
|
|
<p>The document "<a href="http://www.aps.anl.gov/asd/controls/epics/EpicsDocumentation/AppDevManuals/iocAppBuildSRcontrol3_13_0beta12.html">EPICS
|
|
IOC Applications: Building and Source/Release Control</a>" provides guidlines
|
|
for developing applications with 3.13.
|
|
<h3>
|
|
Changes between beta11 and beta12</h3>
|
|
|
|
<h3>
|
|
IOC Applications: Building</h3>
|
|
The following explains changes that need to be made to existing applications
|
|
that followed the <a href="http://www.aps.anl.gov/asd/controls/epics/EpicsDocumentation/AppDevManuals/iocAppBuildSRcontrol3_13_0beta12.html">EPICS
|
|
IOC Applications: Building and Source/Release Control</a>. guidelines.
|
|
See the new version of this manual for details.
|
|
<p>Before switching applications to beta12 it is <b>STRONGLY</b> recommended
|
|
that you execute:
|
|
<blockquote>
|
|
<pre>cd <top>
|
|
gnumake clean uninstall</pre>
|
|
</blockquote>
|
|
|
|
<h4>
|
|
Changes to <top>/config:</h4>
|
|
|
|
<dt>
|
|
<tt>CONFIG_APP</tt></dt>
|
|
|
|
<dd>
|
|
Remove the following lines:</dd>
|
|
|
|
<blockquote>
|
|
<blockquote>
|
|
<pre>ifndef T_A
|
|
T_A = $(HOST_ARCH)
|
|
endif #ifndef T_A</pre>
|
|
</blockquote>
|
|
</blockquote>
|
|
|
|
<dt>
|
|
<tt>RELEASE</tt></dt>
|
|
|
|
<dd>
|
|
If desired add a definition for <tt>TEMPLATE_TOP</tt></dd>
|
|
|
|
<dt>
|
|
<tt>RULES_TOP RULES.Db RULES.ioc RULES.iocBoot</tt></dt>
|
|
|
|
<dd>
|
|
These no longer exists in base. Replace your version with the version
|
|
from:</dd>
|
|
|
|
<blockquote>
|
|
<blockquote>
|
|
<pre><base>/templates/makeBaseApp/top/config</pre>
|
|
</blockquote>
|
|
</blockquote>
|
|
|
|
<dt>
|
|
<tt>RULES_TOP</tt></dt>
|
|
|
|
<dd>
|
|
Remove the rules for creating soft links.</dd>
|
|
|
|
<dt>
|
|
<tt>makeDbDepends.pl, makeIocCdCommands.pl, replaceVAR.pl</tt></dt>
|
|
|
|
<dd>
|
|
Copy the versions from <tt><base>/templates/makeBaseApp/top/config</tt></dd>
|
|
|
|
<dt>
|
|
<tt>makeSoftLinks</tt></dt>
|
|
|
|
<dd>
|
|
Remove this file</dd>
|
|
|
|
<br>
|
|
<h4>
|
|
Changes to xxxApp/src</h4>
|
|
Move the following definitions from Makefile.Vx to Makefile.Host:
|
|
<blockquote>
|
|
<pre>USER_DBDFLAGS
|
|
RECTYPES
|
|
DBDEXPAND
|
|
DBDNAME
|
|
MENUS</pre>
|
|
</blockquote>
|
|
|
|
<h4>
|
|
Changes to xxxApp/Db</h4>
|
|
Rules for DBFROMTEMPLATE and INDDBFROMTEMPLATE no longer exist. See the
|
|
new documentation of makeBaseApp for details of what the make rules are
|
|
for databases.
|
|
<h4>
|
|
Changes to iocBoot and iocBoot/iocxxx</h4>
|
|
iocBoot no longer needs a generated nfs.cmd file
|
|
<p>iocBoot/iocxxx no longer contains soft links. Instead the following
|
|
is done:
|
|
<ul>
|
|
<li>
|
|
A file cdCommands is generated which provides full path names for vxWorks
|
|
cd commands</li>
|
|
|
|
<li>
|
|
The ld commands just give a file name with no path</li>
|
|
|
|
<li>
|
|
The dbLoadxxx commands must specify "../../xxxApp"</li>
|
|
</ul>
|
|
|
|
<h3>
|
|
aoRecord</h3>
|
|
This did not work properly if DOL is a channel access link that fails.
|
|
<h3>
|
|
Semaphores</h3>
|
|
Most locking semaphores have been changed from semBCreate to semMCreate
|
|
with the options :
|
|
<br>SEM_DELETE_SAFE|SEM_INVERSION_SAFE|SEM_Q_PRIORITY
|
|
<p>A performance test showed that executing
|
|
<blockquote>
|
|
<pre> semTake(sem,WAIT_FOREVER);
|
|
semGive(bsem);</pre>
|
|
</blockquote>
|
|
in a 25MHZ mv167 took (4.4 ,7.8) microseonds when (semBCreate,semMCreate)
|
|
was used. The extra options as well as allowing a task to lock recursively
|
|
are worth the difference in performance.
|
|
<h3>
|
|
Task Priorities</h3>
|
|
The priority of the channel access client for database links was changed
|
|
from 100 to 68, which makes it lower than all scan tasks but higher than
|
|
the sequencer or any channel access tasks.
|
|
<h4>
|
|
cvtDoubleToString</h4>
|
|
This was changed to print numbers with precision<=8 and magnitude <1e16
|
|
in fixed format with up to 3 digits after the decimal point. As an example
|
|
if PREC=1 and a number is 363000000.1 previously it was convetred to
|
|
<p>363000000
|
|
<p>Now it is converted to
|
|
<p>363000000.1
|
|
<p>All you RF folks can cheer.
|
|
<h3>
|
|
Access Security</h3>
|
|
Previously it was possible to crash an IOC if access security was restarted
|
|
after iocInit. This is now fixed. Two major changes were made.
|
|
<ol>
|
|
<li>
|
|
asCaTask is no longer deleted and restarted. Instead it just clears all
|
|
channels and than adds the new channels</li>
|
|
|
|
<li>
|
|
The locking mechanism was changed and made more roibust and easier to understand.</li>
|
|
|
|
<li>
|
|
Fixed bug that caused asRegisterClientCallback to fail on UNIX.</li>
|
|
|
|
<li>
|
|
asLib_lex.l changed to allow more characters(like dbLoadxxx)</li>
|
|
|
|
<li>
|
|
Fixed bug that could cause deadlock when an ASG field is changed at run
|
|
time.</li>
|
|
</ol>
|
|
Access Security now supports macro substitutions. A new vxWorks shell command
|
|
is:
|
|
<br>
|
|
<ul>asSetSubstitutions("var1=sub1,var2=sub2,...")</ul>
|
|
See the Application developer's Guide for details about access security.
|
|
<h3>
|
|
tsdefs.h and tsSubr.c</h3>
|
|
tsTextToStamp and tsTimeTextToStamp no longer modify the pointer or the
|
|
string referenced by pText.
|
|
<p>The nextField routines used by tsSubr were moved inside tsSubr.c
|
|
and made static routines.
|
|
<h3>
|
|
drvTS</h3>
|
|
Checked for Y2K complience. It turns out it was even ok when NTP time overflows
|
|
in 2036. However it was modified so that no overflows should occur while
|
|
converting between NTP, UNIX, and EPICS epochs. In addition the conversion
|
|
of fractions of a second to nanaoseconds was changed and formatting was
|
|
changed so that interesting code does not run off right side of page. Hopefully
|
|
EPICS base is now fine for Y2K. In fact it should be fine (as far as time
|
|
is converned) until the Unix epoch overflows a 32 unsigned integer in the
|
|
year 2106.
|
|
<br>
|
|
<h3>
|
|
nextFieldSubr.c</h3>
|
|
Removed from base.
|
|
<h3>
|
|
vxWorks</h3>
|
|
Base now builds with either vxWorks 5.2 or vxWorks 5.3. The default is
|
|
to build vxWorks 5.3. In CONFIG_COMMON a new definition "VX_IS_TORNADO
|
|
= 1" is present. If this statemant is commented out then vxWorks 5.2 is
|
|
assumed.
|
|
<h3>
|
|
makeBaseApp</h3>
|
|
Only the perl version is now supported. Due to encouragement from Rozelle
|
|
Wright (LANL) and the developers at BESSY, makeBaseApp now uses template
|
|
files instead of being one huge ugly perl script. Ralph Lange (BESSY)
|
|
made major changes to makeBaseApp. It supports two sets of templates provided
|
|
with base (simple and example) as well as templates stored elsewhere. Thus
|
|
each site can add new sets of template files.
|
|
<p>See the new WWW documentation on Application Source Release for details
|
|
<h3>
|
|
dbStaticLib</h3>
|
|
The include path now supports the unix convention that an empty directory
|
|
name means the current directory. Thus the following are OK
|
|
<pre>-I nnn::mmm # Current directory is between nnn and mmm
|
|
-I :nnn # Current directory is first
|
|
-I nnn: # Current directory is last</pre>
|
|
The lex grammer was changed so that quoted strings can contain any ascii
|
|
character except a quote. A quote itself can be given as the escape sequence
|
|
\". This same change was made to dbLoadRecords and dbLoadTemplates.
|
|
<p>For all fields in a .db file, a non null string is considered as not
|
|
the default.
|
|
<p>For winNT the path seperator is a ;
|
|
<p>Field attributes (psuedo fields) are now supported. In particular RTYP
|
|
(record type) and VERS (version) are now supported. In addition a new request
|
|
type DBR_CLASS is supported. See Application Developer's guide for details.
|
|
<h3>
|
|
Runtime database access</h3>
|
|
|
|
<ul>
|
|
<li>
|
|
A new routine dbGetLinkDBFtype is now available. It returns the field type
|
|
of a database link.</li>
|
|
|
|
<li>
|
|
dbNotify was fixed to work correctly for putNotify as well as put.</li>
|
|
|
|
<li>
|
|
scanppl now accepts an argument <tt>rate</tt>. scanpel accepts an argument
|
|
<tt>event_number</tt>.</li>
|
|
</ul>
|
|
|
|
<h3>
|
|
base.dbd</h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Soft raw device support is uncommented.</li>
|
|
|
|
<li>
|
|
Device support for the Allen Bradley SLC is changed.It is now:</li>
|
|
|
|
<pre>#device(ai,AB_IO,devAiAbSlcDcm,"AB-SLC500DCM")
|
|
#device(ai,AB_IO,devAiAbSlcDcmSigned,"AB-SLC500DCM-Signed")
|
|
#device(ao,AB_IO,devAoAbSlcDcm,"AB-SLC500DCM")
|
|
#device(longin,AB_IO,devLiAbSlcDcm,"AB-SLC500DCM")
|
|
#device(longout,AB_IO,devLoAbSlcDcm,"AB-SLC500DCM")</pre>
|
|
</ul>
|
|
|
|
<h3>
|
|
initHooks</h3>
|
|
Changed to support initHookRegister. See Application Developer's Guide
|
|
for details. The 3.13.0beta11 version explains the new method. Note that
|
|
to use the new the startup file must contain the statement:
|
|
<ul>
|
|
<pre>ld < bin/initHooks.o</pre>
|
|
</ul>
|
|
If you have your own version of initHooks.c it should be changed to support
|
|
the new features. At a minumum the statement
|
|
<br>
|
|
<ul>
|
|
<pre>void initHooks( int state)</pre>
|
|
</ul>
|
|
must be changed to
|
|
<br>
|
|
<pre> void initHooks( initHookState state)</pre>
|
|
|
|
<h3>
|
|
menuAlarmStat.dbd</h3>
|
|
The no alarm string changed from "" to "NO_ALARM"
|
|
<h3>
|
|
Linear Conversion for ai and ao records:</h3>
|
|
Before beginning it should be stated that the previous linear conversion
|
|
method is still valid.
|
|
<p>The following, which is designed by Benjamin Franksen at BESSY, is now
|
|
the recommended method:
|
|
<p>A new field EOFF exists. The new linear conversion algorithm is
|
|
now
|
|
<ul>
|
|
<pre> VAL = AVAL * ESLO + EOFF</pre>
|
|
</ul>
|
|
AVAL is the raw value adjusted by ASLO and AOFF.
|
|
<p>Thus device support should now compute ESLO and EOFF instead of ESLO
|
|
and ROFF.
|
|
<p>For example let an ADC be a 16 bits adc with raw values between -32767
|
|
and 32767.
|
|
<ul>
|
|
<pre>ESLO = (EGUH - EGUL)/65535.0;
|
|
EOFF = 0.0;</pre>
|
|
</ul>
|
|
NOTES:
|
|
<ul>
|
|
<li>
|
|
Device support may compute either ROFF or EOFF but not both.</li>
|
|
|
|
<li>
|
|
Record support sets EOFF = EGUL before calling the device init_record.
|
|
This is done so that for old device supports (those that do not set the
|
|
EOFF field) the above formula becomes:</li>
|
|
|
|
<ul>
|
|
<pre>VAL = AVAL * ESLO + EGUL</pre>
|
|
</ul>
|
|
The original bi-polar adc device support modules added a "bias" to
|
|
the raw value so that the raw value is >= 0. When they were written neither
|
|
RVAL or EOFF existed.</ul>
|
|
|
|
<h3>
|
|
RISC architectures</h3>
|
|
Some changes were made to build on RISC architectures. A new include and
|
|
source file (adjustment.h and adjustment.c) were created to aid this support.
|
|
We can thank Peregrine McGehee for this new support.
|
|
<h3>
|
|
errlog</h3>
|
|
This is a replacement for the old code that implemented errMessage, errPrintf,
|
|
and epicsPrintf. It provides for multiple system wide error loggers. The
|
|
existing iocLog has been modified to use the new code. The new code supports
|
|
the old calls and adds some new calls. See Application Developer's guide
|
|
for details.
|
|
<br>
|
|
<h3>
|
|
devABSLCDCM</h3>
|
|
Changed Scl to Slc wherever this occured. Added support for signed 16 bit
|
|
analog values. Stephanie Allison (SLAC) made these changes.
|
|
<br>
|
|
<h3>
|
|
devMpc</h3>
|
|
Removed from base.
|
|
<h3>
|
|
devVXStats</h3>
|
|
Major rewrite of this routine. It computes the cpu usage via a low priority
|
|
taks rather than using spy. It reports file descriptor usage rather than
|
|
tcp connections (this is what is actually measures). The format of the
|
|
INP ,and OUT fields has changed since the previous version. The new
|
|
device definitions are:
|
|
<ul>
|
|
<pre>device(ai,INST_IO,devAiVXStats,"VX stats")
|
|
device(ao,INST_IO,devAoVXStats,"VX stats")</pre>
|
|
</ul>
|
|
The INP fields now have the form
|
|
<ul>
|
|
<pre>field(INP,"@memory")
|
|
field(INP,"@cpu")
|
|
field(INP,"@fd")</pre>
|
|
</ul>
|
|
The OUT fields now have the form
|
|
<ul>
|
|
<pre>field(OUT,"@memoryScanPeriod")
|
|
field(OUT,"@fdScanPeriod")
|
|
field(OUT,"@cpuScanPeriod")</pre>
|
|
</ul>
|
|
The source file has comments showing a sample database.
|
|
<h3>
|
|
devSymb</h3>
|
|
This has been drastically changed. Look at <base>/src/dev/symbDev/README
|
|
for details.
|
|
<h3>
|
|
CA Client Library</h3>
|
|
Problems where 3.13.beta11 clients were unable to connect to 3.11 and receive
|
|
the correct native type have been fixed. The CPU is now consumed more efficently
|
|
by CA tasks waiting in select() under vxWorks. The client lib now detects
|
|
an IOC reboot when that reboot is faster that EPICS_CA_CONN_TMO. CA now
|
|
runs better on systems without local interface query capabilities (currently
|
|
only cygwin32).
|
|
<h3>
|
|
C++ Channel Access Server - CAS</h3>
|
|
The constructor for class casPV no longer requires a reference to the server.
|
|
For backward compatibility a reference to the server may still be supplied,
|
|
but it will not be used. The C++ Portable Channel Access Server Library
|
|
now builds on VMS. A really bad bug was fixed in the example directory
|
|
server when clients use PV names with ".xxxx" (a field name) in them.
|
|
<h3>
|
|
Global Data Descriptor Class - GDD (only used by the C++ CA server)</h3>
|
|
A bug occurring when the primitive type was changed to/from aitSting and
|
|
the constructor/destructor member functions for class aitString were not
|
|
run has been fixed. A bug occurring when class GDD changed the bounds on
|
|
the destination GDD has been fixed. A smart pointer class for GDD was added.
|
|
This class automatically maintains the GDD's reference count so that the
|
|
GDD will not be deleted until the last smart pointer class pointing to
|
|
it is deleted. Moving this responsibility to a class will greatly reduce
|
|
the probability of making a mistake in application code.
|
|
<h3>
|
|
WIN32 (PC) Port of EPICS</h3>
|
|
Winsock II is now required. This allows CA to properly execute EPICS_CA_ADDR_LIST=YES.
|
|
Windows NT 4.0 comes with Winsock II. A properly functioning Winsock II
|
|
for Windows 95 can be obtained form http://www.microsoft.com/windows95/info/ws2.htm.
|
|
Beware of buggy versions of Win95 Winsock II that are sometimes installed
|
|
by 3rd party products. A static (no EPICS DLLs) build of EPICS on WIN32
|
|
is now supported. The EPICS CA repeater is now automatically started under
|
|
WIN32 if it isnt running. At Ken Evans' request GUI programs will this
|
|
release _not_ allocate a console for messages from EPICS libraries unless
|
|
base is compiled with host optimisation turned off (HOST_OPT=NO). If you
|
|
would like to see messages from EPICS base libraries when using an optimised
|
|
build, then start GUI programs from a DOS window.
|
|
<h3>
|
|
EPICS Environment Variables that Include Host IP Addresses</h3>
|
|
It is now possible to use DNS host names in addition to dotted IP addresses
|
|
in EPICS environment variables. All operating systems that have a DNS client
|
|
implementation should allow this. Currently only vxWorks does not, and
|
|
so if you would like to use real host names instead of dotted IP addresses
|
|
on vxWorks you must use the "hostAdd()" function to add host name / IP
|
|
address pairs from your system start-up script. For Example: hostAdd ("mercury_dirigible","100.20.30.40")
|
|
putenv ("EPICS_IOC_LOG_INET=mercury_dirigible")
|
|
<h3>
|
|
GCC 2.8</h3>
|
|
The host portions of EPICS now build correctly with GCC 2.8
|
|
<h2>
|
|
Changes between beta4 and beta11</h2>
|
|
|
|
<h4>
|
|
Support for win95 and winNT</h4>
|
|
Epics base now builds on windows platforms
|
|
<h4>
|
|
GDD and Portable Channel Access Server</h4>
|
|
The gdd library and the portable channel access server now build on all
|
|
platforms, except SGI and cygwin32, listed above. This also means that
|
|
C++ is supported on these platforms.
|
|
<h4>
|
|
Application Developer's Guide</h4>
|
|
The chapter "Building IOC Applications" is gone. It is replaced by the
|
|
document "EPICS IOC Applications, Building and Source/Release Control".
|
|
Other changes are minor. Following is a brief list:
|
|
<ul>
|
|
<li>
|
|
Database Definition: General Rules describes escape sequences</li>
|
|
|
|
<li>
|
|
Record Support: All record support methods that accept DBADDDR * now use
|
|
the routine dbGetFieldIndex instead of comparing addresses. IOn addition
|
|
the get_enum_str routines now use paddr->pfield as the field address instead
|
|
of the field in the record.</li>
|
|
|
|
<li>
|
|
Runtime Database Access: Gives brief description of DBR_PUT_ACKT and DBR_PUT_ACKS.
|
|
Also describes new routine dbGetPdbaddrFromLink</li>
|
|
|
|
<li>
|
|
The chapter "IOC Initialization" describes how to configure the error message
|
|
logger.</li>
|
|
</ul>
|
|
<b>NOTE: </b>The initHooks described in the appDevGuide is not in beta11.
|
|
In beta11 initHooks is the same as previous releases. The new version will
|
|
be in the next release.
|
|
<br>
|
|
<br>
|
|
<h4>
|
|
Compiler warning messages:</h4>
|
|
All of base except drv/old is now being built with
|
|
<ul>
|
|
<pre>VX_WARN_YES = -Wall -pedantic -ansi</pre>
|
|
</ul>
|
|
Most warning messages have now been eliminated. The remaining messages
|
|
should not be removed without looking hard at code.
|
|
<h4>
|
|
recSubArray</h4>
|
|
get_control_double routine returned incorrect values for fields INDX and
|
|
NELM.
|
|
<h4>
|
|
devAiStats</h4>
|
|
This is now renamed devVXStats. The new device definitions are:
|
|
<pre>device(ai,VME_IO,devAiVXStats,"VX stats")
|
|
device(ao,VME_IO,devAoVXStats,"VX stats")</pre>
|
|
Thus if an application has an old base.dbd and baseLIBOBJS including definitions
|
|
for this device support they must be modified.
|
|
<h4>
|
|
SysMon device support</h4>
|
|
This is removed from base. It is for APS designed and build VME create
|
|
system monitoring. The support code is available from APS if needed. NOTE:
|
|
In some beta releases baseLIBOBJS, had an include for devSysmon.o. Applications
|
|
using an old version of baseLIBOBJS will not build until this statement
|
|
is deleted.
|
|
<h4>
|
|
dbToRecordtypeH</h4>
|
|
The enums for menus had a comma after last item.
|
|
<h4>
|
|
pulseTrainRecord</h4>
|
|
recGblInitConstantLink for sgl was referencing wrong field.
|
|
<h4>
|
|
gphLib</h4>
|
|
This did not properly support multiple clients in multi-thread environment.
|
|
<h4>
|
|
dbPvdLib</h4>
|
|
Modified to be faster.
|
|
<h4>
|
|
devMz8311</h4>
|
|
Use maxCards from module_types.h instead of a #define
|
|
<h4>
|
|
calcRecord</h4>
|
|
Allow CALC to be 40 characters. Increase rpbuf from 184 to 200
|
|
<h4>
|
|
mbbiDirectRecord</h4>
|
|
Add call to refresh_bits.
|
|
<h4>
|
|
mbbxDirectRecord</h4>
|
|
Bx becomes no prompt for mbbi and prompt for mbbo. It was the reverse before.
|
|
<h4>
|
|
calcoutRecord</h4>
|
|
A new record type that replaces old wait record. It is like a calc record
|
|
with an output and a delay. It makes the wait record obsolete.
|
|
<h4>
|
|
dbAccess</h4>
|
|
dbGetPdbAddrFromLink is a new routine. It returns NULL for all except LINK_DB
|
|
links, for which it returns the address of the associated DB_ADDR structure.
|
|
<h4>
|
|
escape characters in database files</h4>
|
|
dbLoadDatabase, dbLoadRecords, and dbLoadTemplate all allow the standard
|
|
C escape sequences in quoted strings. For example a string can contain:
|
|
"\x00 \27 \t" Thus these sequences pass though the lexical analyzer .
|
|
<h4>
|
|
dbTranslateEscape</h4>
|
|
A new routine in libCom. It is used to translate escape sequences. It is
|
|
defined in file epicsString.h. It typical place to use this is on parm
|
|
fields that contain escape sequences like "\x00 \27 \t".
|
|
<h4>
|
|
Slow booting</h4>
|
|
iocs with big databases were taking a long time to boot. It was discovered
|
|
that allocating and then freeing small amounts of memeory frequently resulted
|
|
in a VERY long memory free list. This is now fixed.
|
|
<h4>
|
|
boRecord, mbboRecord</h4>
|
|
init_record now initialized the RVAL field.
|
|
<h4>
|
|
ProcessCallback</h4>
|
|
Benjamin Franksen at BESSY reported a serious bug in the routine ProcessCallback
|
|
(not used in base). It has been fixed.
|
|
<h4>
|
|
CALC fields</h4>
|
|
postfix and calcPerform (used by calcRecord) have been changed so that
|
|
a 0 byte now ends the postfix expression. Also if postfix detects an illegal
|
|
expression it generates a 0 length postfix string. When calcPerform is
|
|
given a 0 length string it returns a error status. Thus calcRecord no longer
|
|
causes the IOC to crash if an illegal CALC fields is loaded.
|
|
<h4>
|
|
Etc.</h4>
|
|
Many other minor problems, bugs, etc. were fixed.
|
|
<br>
|
|
<hr>
|
|
<h1>
|
|
Notes for Release 3.13 of EPICS Base</h1>
|
|
|
|
<hr>For Release 3.13 major changes have been made to EPICS base. The IOC
|
|
Application Developer's Guide has been extensively modified and now describes
|
|
release 3.13. If you are upgrading for a 3.12.xxx or earlier release you
|
|
must obtain and read the new App Dev Guide.
|
|
<p>In porting EPICS to multiple architectures, the previous method of using
|
|
utilities to convert the database definition files to a binary file (default.dctsdr)
|
|
caused problems. The problem is that the binary file is created on one
|
|
architecture and used on another. This has worked so far for sun4 and hp
|
|
hosts combined with motorola 68xxx processors. As support for more host
|
|
and more ioc architectures is developed problems are appearing. This paper
|
|
describes changes that solve the problems.
|
|
<p>Because the changes result in extensive changes to database access,
|
|
other changes are also made. The file syntax is changed. The internal database
|
|
structures are simplified and also changed to make it easier to support
|
|
runtime add/delete of record types and record instances.
|
|
<h3>
|
|
Goals</h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Allow database definition without an EPICS generated binary file.</li>
|
|
|
|
<li>
|
|
Change internal database structures so that runtime add/delete of record
|
|
types and record instances is possible.</li>
|
|
|
|
<li>
|
|
Allow each ioc to load and initialize only the record, device, and driver
|
|
support it actually uses.</li>
|
|
</ul>
|
|
|
|
<h3>
|
|
Backward Compatibility</h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Minimal changes to existing record/device/driver support. A section below
|
|
describes necessary changes.</li>
|
|
|
|
<li>
|
|
Provide tools to generate new database files from existing default.dctsdr</li>
|
|
|
|
<li>
|
|
No or almost no incompatible changes to the dbStatic API. New capabilities
|
|
are of course allowed.</li>
|
|
</ul>
|
|
|
|
<h3>
|
|
Incompatibilities</h3>
|
|
|
|
<ul>
|
|
<li>
|
|
DCT is no longer supported. A TCL/TK replacement is now available.</li>
|
|
|
|
<li>
|
|
The sdr file format (.database files) is no longer supported.</li>
|
|
|
|
<li>
|
|
The old DCT short form format is no longer supported.</li>
|
|
|
|
<li>
|
|
The only way to load record instance definitions into an ioc is the record
|
|
instance format, which is exactly the same as the GDCT .db format.</li>
|
|
|
|
<li>
|
|
Any user written code that accesses internal database structures, i.e.
|
|
any code that uses anything described in Chapter 11 (Database Structures)
|
|
of the old Application Developers Guide will have to be changed.</li>
|
|
</ul>
|
|
|
|
<h2>
|
|
Overview of new database support</h2>
|
|
EPICS defines a set of database file formats. In addition any of these
|
|
files can contain include statements. For each ioc, the application developer
|
|
will create a set of files specifying the record types, devices, and drivers
|
|
needed for that ioc. Normally a master file will be created which consists
|
|
of include statements that bring in record, device, and driver definitions.
|
|
Default configurations can be provided for new users or for particular
|
|
applications.
|
|
<p>Database configuration and utility tools access the database via the
|
|
static database access library. This library reads the files. It provides
|
|
routines for reading the information in the database and for creating and
|
|
modifying record instances. Database definition files can be read incrementally.
|
|
<p>Other database configuration tools (capfast, relational database systems,
|
|
object oriented databases, etc.) can also be used as long as they generate
|
|
record instances in the format described below. In this case, however,
|
|
it is still necessary to generate the other files because they are needed
|
|
by database access and for record and device support modules.
|
|
<p>Tools are provided that generate C code from the database files. Header
|
|
files are generated for menu and record type definitions. These header
|
|
files are used by record and device support. In addition the record type
|
|
definitions contain code which computes field offsets and sizes and record
|
|
sizes. This code is compiled by the same cross compiler that is used to
|
|
compile other ioc code. Thus cross platform compatibility is achieved.
|
|
<p>In order to initialize an ioc, all files needed by that ioc have to
|
|
be loaded. It is also necessary to load the record/device/driver support
|
|
modules.
|
|
<p>Everything is designed so that the following are possible:
|
|
<ul>
|
|
<li>
|
|
It is easy to tailor record/device/driver support individually for each
|
|
ioc.</li>
|
|
|
|
<li>
|
|
It is possible to incrementally add definitions. For example database configuration
|
|
tools do NOT have to load all definitions at startup. New definitions can
|
|
be read at any time. The underlying structures are designed so that it
|
|
is possible to add new definitions after an ioc is initialized. Note however
|
|
that additional changes will be needed after this project is complete before
|
|
on-line add and delete are possible.</li>
|
|
|
|
<li>
|
|
It is possible to completely unbundle record support, device support, and
|
|
driver support. Again work will remain before this is a reality.</li>
|
|
</ul>
|
|
An additional feature is that, for database configuration tools, record
|
|
instance numeric fields and menu fields are stored as character strings.
|
|
This solves the following problems.
|
|
<ul>
|
|
<li>
|
|
Rounding problems caused by converting from string to float and then back
|
|
to string disappear.</li>
|
|
|
|
<li>
|
|
For integer fields the user can use the standard c conventions of preceding
|
|
the value with 0x for hex or 0 for octal. Since the string itself is stored,
|
|
the value will always appear with the prefix.</li>
|
|
|
|
<li>
|
|
Macro definitions are allowed.</li>
|
|
</ul>
|
|
Another feature is is that it is now possible to distinguish link constants
|
|
with a value of 0 from links that have never been given a value.
|
|
<p>Other changes have been made while the opportunity was available.
|
|
<ul>
|
|
<li>
|
|
The config files have been changed considerably. Base now has it's own
|
|
config directory. Extensions (not implemented) can use the config from
|
|
the version of base against which it is built as well as supply additional
|
|
config files.</li>
|
|
|
|
<li>
|
|
Field names are no longer limited to four characters. It is NOT a good
|
|
idea to use this feature until it has been checked against existing channel
|
|
access clients. If fact it has not been tested at all.</li>
|
|
|
|
<li>
|
|
The record support modules have been renamed from recXxx.c to xxxRecord.c.
|
|
This the name of the database file, include file, and source file are the
|
|
same. Only the extensions are different.</li>
|
|
|
|
<li>
|
|
All files in base/include have been moved to an appropriate base/src directory.
|
|
These files are now installed into base/include.</li>
|
|
</ul>
|
|
|
|
<h2>
|
|
Database Definition File format</h2>
|
|
Formats are defined for the following:
|
|
<ul>
|
|
<li>
|
|
Menu choices.</li>
|
|
|
|
<li>
|
|
Record type description</li>
|
|
|
|
<li>
|
|
Device choice</li>
|
|
|
|
<li>
|
|
Driver choice</li>
|
|
|
|
<li>
|
|
Breakpoint Conversion Table</li>
|
|
|
|
<li>
|
|
Record Instance.</li>
|
|
</ul>
|
|
See the Application Developer's Guide for details.
|
|
<p>The menu choices replace the existing global, record, and conversion
|
|
choices. The global and record choices are very similar and thus are easy
|
|
to combine. The method of handling the old conversion choices is described
|
|
below. That section also describes the breakpoint tables.
|
|
<p>The record type description format has been completely changed. It now
|
|
has a "real" syntax. It should be MUCH easier to generate new definitions.
|
|
<p>The device choice and driver support definitions are defined so that
|
|
it is easy to provide incremental definitions.
|
|
<p>The record instance format is an extension of the 3.12.beta13 and later
|
|
GDCT .db format.
|
|
<p>Path and include statements are supported. This provides a powerful
|
|
tool for combining definitions from many sources. The path is a unix style
|
|
path, i.e. a colon separated list of directory names.
|
|
<h2>
|
|
default.dctsdr conversion tools</h2>
|
|
NOTES
|
|
<ul>
|
|
<li>
|
|
In the following default.dctsdr is optional. If not given the tool just
|
|
looks for the file "default.dctsdr" in the current directory.</li>
|
|
|
|
<li>
|
|
All output files are placed in the directory from which the tool is executed.</li>
|
|
</ul>
|
|
The following tools are provided:
|
|
<ul>
|
|
<li>
|
|
sdr2gblmenu [default.dctsdr]</li>
|
|
|
|
<br>All global menus are written as separate files.
|
|
<li>
|
|
sdr2recordtype record_type record_type.h [default.dctsdr]</li>
|
|
|
|
<br>A record type definition file is generated.
|
|
<li>
|
|
sdr2device [default.dctsdr]</li>
|
|
|
|
<br>All device definitions are placed in a file called device.dbd
|
|
<li>
|
|
sdr2driver [default.dctsdr]</li>
|
|
|
|
<br>All driver definitions are placed in a file called driver.dbd</ul>
|
|
For all utilities the required database definition files are generated
|
|
from a dctsdr file from a previous epics release. A dctsdr file can be
|
|
specified or else the utilities can be run in a directory which contains
|
|
default.dctsdr (or a soft link with that name). sdr2recordtype also requires
|
|
the header file generated by a previous epics release.
|
|
<h2>
|
|
Conversions - replacement for DBF_CVTCHOICE</h2>
|
|
Let's briefly review database conversion, i.e. the LINR field for ai and
|
|
ao records.
|
|
<p>The allowed conversions are:
|
|
<ol>
|
|
<li>
|
|
None</li>
|
|
|
|
<li>
|
|
Linear</li>
|
|
|
|
<li>
|
|
Breakpoint Tables</li>
|
|
</ol>
|
|
The main complication results from the breakpoint tables. Previously EPICS
|
|
handled breakpoint tables as follows:
|
|
<p>The user prepares files in one of two formats: The first is just a list
|
|
of "raw value, eng units value". The second format is a file with a header
|
|
line followed by a table of raw data values that represent data at equally
|
|
spaced engineering unit values. In either case the ascii data is converted
|
|
to an internal binary format containing breakpoint tables. This data is
|
|
part of default.dctsdr.
|
|
<p>Here is how breakpoint table are now handled.
|
|
<ul>
|
|
<li>
|
|
A new file format is defined for breakpoint tables.</li>
|
|
|
|
<li>
|
|
A conversion tool, makeBpt, takes as input the second format described
|
|
above and creates the breakpoint table in the new file format.</li>
|
|
|
|
<li>
|
|
Previously EPICS automatically provided breakpoint tables for TypeJdegC,
|
|
TypeJdegF, TypeKdegC, and TypeKdegF thermocouples. These breakpoint tables
|
|
are part of the new epics base. However there are only loaded into an ioc
|
|
if the user includes their definitions.</li>
|
|
|
|
<li>
|
|
A regular menu definition file menuConvert contains the same definitions
|
|
as choices as that provided by the 3.12.2 version of epics. The menu includes
|
|
definitions for the epics supplied breakpoint tables.</li>
|
|
|
|
<li>
|
|
The ai and ao records call a routine cvtRawToEngBpt to perform breakpoint
|
|
conversions. This routine has been rewritten to to look for breakpoint
|
|
tables obtained from the new breakpoint file format.</li>
|
|
</ul>
|
|
One other comment needs to be made about conversions. The Allen Bradley
|
|
device support for the IXE module uses the LINR field in a non standard
|
|
way. This was a mistake but compatibility must be maintained. Thus menuConvert
|
|
contains a lot of choices used only by the IXE device support.
|
|
<h1>
|
|
Converting existing applications</h1>
|
|
|
|
<h2>
|
|
Database Configuration Tools</h2>
|
|
|
|
<li>
|
|
DCT - Rather than making major changes to DCT, a TCL/TK replacement has
|
|
been written. The executable is named DCT313.</li>
|
|
|
|
<li>
|
|
GDCT - A new version is provided that supports 3.13. The executable is
|
|
named GDCT313.</li>
|
|
|
|
<li>
|
|
CAPFAST</li>
|
|
|
|
<ul>
|
|
<li>
|
|
The filter that converts record instance definitions must generate the
|
|
new record instance file format rather than the old short form report.
|
|
Contact Roselle Wright at LANL for details.</li>
|
|
|
|
<li>
|
|
A tool should be developed that, using static database access, automatically
|
|
generates the record type description files used by capfast. My guess is
|
|
that this should be easy to do.</li>
|
|
</ul>
|
|
|
|
<h3>
|
|
Application Source/Release Control</h3>
|
|
At the present time There are at least three Application Source/Release
|
|
Control Systems in active use. The old technique of having cat_ascii and
|
|
replace_ascii directories no longer work. In addition makesdr no longer
|
|
exists. The new system offers developers far more flexibility but it also
|
|
means that each Application Source/Release Control system has to be modified
|
|
to take advantage of the new capabilities. Again the changes in RULES and
|
|
makeBaseApp should make this task easier.
|
|
<p>The document "<a href="http://www.aps.anl.gov/asd/controls/epics/EpicsDocumentation/AppDevManuals/iocAppBuildSRcontrol3_13_0beta12.html">EPICS
|
|
IOC Applications: Building and Source/Release Control</a>" describes a
|
|
utility makeBaseApp which can be used for small applications. It also provides
|
|
guidlines that can be used for large applications.
|
|
<h3>
|
|
Locally developed Record/Device support</h3>
|
|
|
|
<ul>
|
|
<li>
|
|
The dctsdr file and any header files for locally developed record types
|
|
must be saved before performing a getrel to a new version of base.</li>
|
|
|
|
<li>
|
|
Any global menus, not supplied with epics, have to be converted via the
|
|
sdr2gblmenu tool. The generated file must be edited to extract the locally
|
|
developed menus.</li>
|
|
|
|
<li>
|
|
Any locally developed record type definitions have to be converted to the
|
|
new ascii file format via the sdr2recordtype tool. Note that the generated
|
|
file also contains definitions for any record specific menus.</li>
|
|
|
|
<li>
|
|
New definitions for locally developed device support must be generated
|
|
via the sdr2device tool. The generated file must be edited so that only
|
|
locally developed device support remains.</li>
|
|
|
|
<li>
|
|
New definitions for locally developed driver support must be generated
|
|
via the sdr2driver tool. The generated file must be edited so that only
|
|
locally developed drive support remains.</li>
|
|
|
|
<li>
|
|
If breakpoint tables have been locally developed. The following should
|
|
be done.</li>
|
|
|
|
<ul>
|
|
<li>
|
|
The menuConvert file should be copied from epics and new entries for the
|
|
local breakpoint tables added to the end.</li>
|
|
|
|
<li>
|
|
If raw breakpoint tables were previously used, convert them to the new
|
|
breakpoint format (easy to do). If equally spaced data files were used
|
|
the makeBpt tool can be used to create new breakpoint tables.</li>
|
|
</ul>
|
|
|
|
<li>
|
|
The following changes must be made to the record support modules:</li>
|
|
|
|
<ul>
|
|
<li>
|
|
The include statement for the record type h file must be surrounded by
|
|
the statements:</li>
|
|
|
|
<pre>#define GEN_SIZE_OFFSET
|
|
|
|
#undef GEN_SIZE_OFFSET</pre>
|
|
|
|
<li>
|
|
Any statements that initialize a field from constant links must be changed.
|
|
Such statements always contain the characters "value.value". For example:</li>
|
|
|
|
<pre> pai->simm = pai->siml.value.value;
|
|
|
|
is changed to
|
|
|
|
recGblInitConstantLink(&pai->siml,DBF_USHORT,&pai->simm);</pre>
|
|
NOTE: This change also has to be made to any device support that manipulates
|
|
constant links. Normally this is only soft device support.
|
|
<p>Because it is now possible to distinguish between null links (links
|
|
that were never given a value) and CONSTANT links with the value 0, the
|
|
code now handles initialization of constant links in a uniform manner.
|
|
Several record types in previous versions had special code to handle the
|
|
case of the value 0 for constant links. These have been changed.
|
|
<li>
|
|
If record support uses menus it should be modified to use the enum definitions
|
|
in the generated header files.</li>
|
|
</ul>
|
|
|
|
<li>
|
|
dbStaticLib - Some routines have a new name:</li>
|
|
|
|
<pre>OLD ROUTINE REPLACEMENT
|
|
|
|
dbFindRecdes dbFindRecordType
|
|
dbFirstRecdes dbFirstRecordType
|
|
dbNextRecdes dbNextRecordType
|
|
dbGetRecdesName dbGetRecordTypeName
|
|
dbGetNRecdes dbGetNRecordTypes
|
|
dbFirstFielddes dbFirstField
|
|
dbNextFielddes dbNextField
|
|
dbGetChoices dbGetMenuChoices</pre>
|
|
For now the old version will be supported. After one release they will
|
|
go away.
|
|
<li>
|
|
New vxWorks CONFIG rules are available to generate menu and record type
|
|
include files from ascii files. The rules are:</li>
|
|
|
|
<pre> MENUS += menuXXX.h
|
|
RECTYPES += xxxRecord.h</pre>
|
|
|
|
<li>
|
|
Changes to recGbl and database access link routines.</li>
|
|
|
|
<ul>
|
|
<li>
|
|
recGblInitFastInLink</li>
|
|
|
|
<br>recGblInitFastOutLink
|
|
<p>All code calling these should be removed. They are no longer needed.
|
|
<li>
|
|
recGblGetFastLink</li>
|
|
|
|
<br>recGblPutFastLink
|
|
<br>dbFastLinkGet
|
|
<br>dbFastLinkPut
|
|
<br>recGblGetLinkValue
|
|
<br>recGblPutLinkValue
|
|
<p>These are replaced by
|
|
<br>dbGetLink dbPutLink
|
|
<pre>long dbGetLink(struct db_link *,short dbrType,
|
|
void *pbuffer,long *options,long *nRequest);</pre>
|
|
The last two arguments can be 0. options=0 means no options. nRequest=0
|
|
means scalar, i.e. retrieve one value.
|
|
<pre>long dbPutLink(struct db_link *,short dbrType,
|
|
void *pbuffer,long nRequest);</pre>
|
|
|
|
<li>
|
|
dbCaAddInLink</li>
|
|
|
|
<br>dbCaAddOutlink
|
|
<br>dbCaGetLink
|
|
<br>dbCaPutLink
|
|
<p>The Add routines are no longer needed. The Get/Put routines are replaced
|
|
by dbGetLink/dbPutLink.</ul>
|
|
|
|
<li>
|
|
link.h</li>
|
|
|
|
<br>All parm fields are now declared char * parm rather than char parm[<size>]
|
|
In addition the defines INSTIO_FLD_SZ to VXI_PARAM_SZ no longer exist.
|
|
This is done so that unused links now use less storage.</ul>
|
|
|
|
<h1>
|
|
Record Instance Definitions</h1>
|
|
|
|
<h4>
|
|
Convert to proper format</h4>
|
|
All record instances must be capable of being loaded into an ioc via dbLoadDatabase,
|
|
dbLoadRecords, or dbLoadTemplate. This is the same format that dbLoadRecords
|
|
and dbLoadTemplate used in 3.12 releases. Note that if any files contain
|
|
the statements:
|
|
<pre> database(x) { nowhere() {
|
|
}
|
|
}
|
|
|
|
or
|
|
|
|
database(x) {
|
|
}</pre>
|
|
These statements must be removed. They were in pre 3.12 releases.
|
|
<h4>
|
|
CONSTANT Links with value "0"</h4>
|
|
Release 3.13 is now capably of distingushing between a null link (a link
|
|
that is not given any value at all) and a constant link with the value
|
|
0. This cause problems for some old record instance files. For example
|
|
if a record instance is defined as:
|
|
<pre> record(fanout,name) {
|
|
field(SELN,"1")
|
|
field(SELL,"0")
|
|
}</pre>
|
|
Such definitions can be fixed by either completly removing the link definition
|
|
or changing the value from "0" to "".
|
|
<p>here is a complete list of record types and fields that may have this
|
|
problem:
|
|
<ul>
|
|
<li>
|
|
fanoutRecord</li>
|
|
|
|
<ul>
|
|
<li>
|
|
SELL -> SELN Note SELN is not a prompt field.</li>
|
|
</ul>
|
|
pulseCounterRecord
|
|
<ul>
|
|
<li>
|
|
SGL -> SGV</li>
|
|
</ul>
|
|
pulseDelayRecord
|
|
<ul>
|
|
<li>
|
|
STL -> STV</li>
|
|
|
|
<li>
|
|
GLNK -> GATE</li>
|
|
</ul>
|
|
pulseTrainRecord
|
|
<ul>
|
|
<li>
|
|
SGL -> HGV</li>
|
|
|
|
<br>NOTE: This is a bug. The field should be SGV. Fixed 3.13.beta5.</ul>
|
|
selRecord
|
|
<ul>
|
|
<li>
|
|
INPA -> A NOTE A is not a prompt field</li>
|
|
|
|
<li>
|
|
INPB -> B NOTE B is not a prompt field</li>
|
|
|
|
<li>
|
|
... for all INP links</li>
|
|
</ul>
|
|
seqRecord
|
|
<ul>
|
|
<li>
|
|
SELL -> SELN NOTE SELN is not a prompt field</li>
|
|
</ul>
|
|
stringinRecord
|
|
<ul>
|
|
<li>
|
|
SIOL -> SVAL NOTE SVAL is not a prompt field</li>
|
|
</ul>
|
|
stringoutRecord
|
|
<ul>
|
|
<li>
|
|
DOL -> VAL</li>
|
|
</ul>
|
|
</ul>
|
|
A good way to find these problems is to use grep. For example:
|
|
<pre> grep SELL */*.db</pre>
|
|
This assumes that you are in directory that contains subdirectorys containing
|
|
.db files.
|
|
<h1>
|
|
IOC Startup files</h1>
|
|
The command dbLoad is no longer supported. The new method is to issue one
|
|
or more dbLoadDatabase commands and any combination of dbLoadRecords and
|
|
dbLoadTemplate commands.
|
|
<h2>
|
|
Other Release Notes</h2>
|
|
|
|
<h4>
|
|
IOC Test routines</h4>
|
|
Many changes have been made to the EPICS ioc test routines, i.e., routines
|
|
given to the vxWorks shell. Please read the chapter "IOC Test Facilities"
|
|
in the Application Developer's Guide for details.
|
|
<h4>
|
|
Changes to Record and Device Support</h4>
|
|
|
|
<ul>
|
|
<li>
|
|
Changes to record support modules (caused by looking for UDF problems)</li>
|
|
|
|
<ul>
|
|
<li>
|
|
aaiRecord, aaoRecord - The siol field, which was never used in record processing,
|
|
has been removed from aaiRecord.dbd and aaoRecord.dbd files. Old style,
|
|
pre R3.12, c code in init_record was updated.</li>
|
|
|
|
<li>
|
|
compressRecord - Now allows Channel Access links for INP. It also sets
|
|
READ_ALARM if it has bad or no input.</li>
|
|
|
|
<li>
|
|
dfanoutRecord, longoutRecord - In process the udf field is set to false
|
|
when dbGetLink returns success only if dol is not a constant link.</li>
|
|
|
|
<li>
|
|
fanoutRecord - Now supports CA links. Same rules as FLNK.</li>
|
|
|
|
<li>
|
|
biRecord, mbbiRecord - Udf now set to false in put_enum_string when val
|
|
is initialized.</li>
|
|
|
|
<li>
|
|
mbbiDirectRecord - Udf now set to false in process when val is initialized.</li>
|
|
|
|
<li>
|
|
mbbiDirectRecord, mbboDirectRecord, waitRecord - Old style, pre R3.12,
|
|
c code in init_record was updated.</li>
|
|
|
|
<li>
|
|
pidRecord - Changes made to modify DB_LINK test on cvl field to allow type
|
|
CA_LINK.</li>
|
|
|
|
<li>
|
|
pulseDelayRecord - Removed code that called recGblSetSevr is status non
|
|
zero just before return. process always returns 0.</li>
|
|
|
|
<li>
|
|
pulseTrainRecord - process always returns 0.</li>
|
|
|
|
<li>
|
|
seqRecord - Changes made to modify DB_LINK tests on the lnk and dol fields
|
|
to allow type CA_LINK.</li>
|
|
|
|
<li>
|
|
steppermotorRecord - In process the udf field is now set to false if dol
|
|
is not a constant link and dbGetLink returns success. Changes made to modify
|
|
DB_LINK test on rdbl field to allow type CA_LINK.</li>
|
|
|
|
<li>
|
|
stringoutRecord - In process the udf field is now set to false if dol is
|
|
not a constant link and dbGetLink returns success.</li>
|
|
|
|
<li>
|
|
waveform record - While processing the udf field is now set to false if
|
|
simulation mode is TRUE and siol is not a constant link and dbGetLink returns
|
|
success.</li>
|
|
</ul>
|
|
|
|
<li>
|
|
Device Support Changes</li>
|
|
|
|
<ul>
|
|
<li>
|
|
devAiSoft, devBiSoft, devEventSoft, devLiSoft, devMbbiDirectSoft devMbbiSoft,devSiSoft
|
|
- In init_record the udf field is set to false only if inp is a constant
|
|
link and recGblInitConstantLink returns success. In read_xxx the udf field
|
|
is set to false only if inp is not a constant link and dbGetLink returns
|
|
success.</li>
|
|
|
|
<li>
|
|
devAiSoftRaw, devBiSoftRaw, devMbbiDirectSoftRaw, devMbbiSoftRaw - In init_record
|
|
the udf field is no longer set to false if inp is a constant link and recGblInitConstantLink
|
|
returns success (rval, not val, was successfully initialized).</li>
|
|
|
|
<li>
|
|
devLoSoft, devLoSymb, devMbboDirectSoft, devMbboSoft, devPtSoft, devSoSymb
|
|
- The udf field is no longer set to false in write_xxx.</li>
|
|
|
|
<li>
|
|
devHistogramSoft, devHistogramTestAsyn - In init_record the udf field is
|
|
set to false only if svl is a constant link and recGblInitConstantLink
|
|
returns success.</li>
|
|
</ul>
|
|
</ul>
|
|
|
|
<h4>
|
|
Make rules and config files</h4>
|
|
The config environment has been extensively changed. BASE now has its own
|
|
set of config files. Extensions will be able to use the base config files
|
|
(for the version of base it is built against) and add it's own definitions.
|
|
Changes to extensions will come at a future time.
|
|
<h4>
|
|
GNU C++ for base</h4>
|
|
It is now possible to compile 3.13 EPICS base with the gnu C and C++ compilers.
|
|
A C++ compiler that properly supports templates is required to build the
|
|
new ca server and the gdd library.
|
|
<h4>
|
|
log server</h4>
|
|
Thanks to William Lupton at KECK the log server will now (under the latest
|
|
EPICS 3.13) obtain a new directory for the log file in response to SIGHUP.
|
|
<h4>
|
|
CA repeater fix</h4>
|
|
Thanks to Kim Gillies, Bret Goodrich, and others at NOAO a problem has
|
|
been discovered and fixed in the 3.12 CA repeater under solaris.
|
|
<h4>
|
|
Portable CA server</h4>
|
|
A new CA server C++ class library is available. The server library is in
|
|
libcas.a. The API is described in casdef.h. Doc is in progress. An example
|
|
server tool can be found at base/src/cas/example. The server has been tested
|
|
under sunos4 and solaris. A multi-threaded version of the new server for
|
|
vxWorks is in progress.
|
|
<h4>
|
|
Macro Substitution Library</h4>
|
|
The macro substitution library discussed in tech-talk is now part of epics
|
|
base. Thus was contributed by Bill Lupton. The static database library
|
|
uses this library. dbLoadRecords and dvbLoadTemplate also use it.
|
|
<h4>
|
|
VXI Resource Manager fix</h4>
|
|
Thanks to Ric Claus of SLAC a bug has been isolated in the VXI resource
|
|
manager.
|
|
<br>Symptom: correct slot isnt located when EPICS_VXI_LA_BASE is set to
|
|
something other than zero.
|
|
<h4>
|
|
Access Security</h4>
|
|
If asSetFile has been set in a startup file and access security initialization
|
|
fails, then iocInit returns -1 so that startup file does not finish.
|
|
<h4>
|
|
errPrintf</h4>
|
|
On Unix this now calls fprintf(stderr instead of printf
|
|
<h4>
|
|
iocLogClient.c</h4>
|
|
This now calls printf instead of epicsPrintf to prevent deadlocks.
|
|
<h4>
|
|
Native type for DBF_USHORT</h4>
|
|
Formerlly old database access, which does not have unsigned short called
|
|
the native type DBR_FLOAT. It now calls it DBF_LONG
|
|
<h4>
|
|
Allen Bradley Driver</h4>
|
|
Analog Output Block Transfers were being requested too frequently
|
|
<p>If link_status command fails (3 times in succession) adapters are now
|
|
immediatly declared down.
|
|
<p>For btRead and btWrite, The driver now enforces a timeout of 5 seconds
|
|
which is 1 second more than scanner itself enforces. This is so that if
|
|
scanner throws away a BT request it will still timeout.
|
|
<p>For btRead and btWrite is is no longer permissible to issue a new btRead
|
|
or btWrite from tha callback routine.
|
|
<p>The on line doc has the following two changes:
|
|
<ul>
|
|
<li>
|
|
abConfigBaud has arguments (link,number) (Old doc was wrong)</li>
|
|
|
|
<li>
|
|
Now states that new btRead/btWrite can NOT be ussued from callback.</li>
|
|
</ul>
|
|
|
|
<h4>
|
|
vmic2534</h4>
|
|
Support has been added by LBL. It still needs to be ansified.
|
|
<h4>
|
|
New options for links</h4>
|
|
|
|
<li>
|
|
FWDLINK</li>
|
|
|
|
<br>A forward link now works between IOCs but only if the field is PROC.
|
|
When recGblFwdLink is executed, a 1 is written.
|
|
<li>
|
|
OUTLINK new option CA (In addition to PP and NPP)</li>
|
|
|
|
<br>CA means always make it channel access link
|
|
<li>
|
|
INLINK new options CA CP CPP (In addition to PP and NPP)</li>
|
|
|
|
<ul>
|
|
<li>
|
|
CA means always make it a channel access link</li>
|
|
|
|
<li>
|
|
CP means CA + process when monitor occurs</li>
|
|
|
|
<li>
|
|
CPP means CA + process passive records when monitor occurs</li>
|
|
</ul>
|
|
dbAccess (dbGetField dbPutField) make sure that link field strings are
|
|
not longer than 39 characters. They allow M for MS and N for NMS
|
|
<h4>
|
|
callback and scan task names</h4>
|
|
The task names have been changed to make them unique
|
|
<h4>
|
|
dbPutString</h4>
|
|
If the strlen of the new field is >= field_size an error is returned.
|
|
<h4>
|
|
event scanned records</h4>
|
|
Multiple priorities are now supported.
|
|
<br>WARNING: Default PRIO is low thus old event scanned records may be
|
|
executed at a lower priority then previous release.
|
|
<h4>
|
|
Allen Bradley Stepper Motor Support (Ric Claus SLAC)</h4>
|
|
Support for the allen bradley stepper motor is available. See the APS EPICS
|
|
Hardware Support page for details.
|
|
<h4>
|
|
initHooks</h4>
|
|
INITHOOKafterCaLinkInit1 is replaced by INITHOOKafterCaLinkInit
|
|
<br>INITHOOKafterCaLinkInit2 no longer exists
|
|
</body>
|
|
</html>
|
|
|
|
<h1>
|
|
EPICS Base Release R3.14</h1>
|
|
|
|
<h4>
|
|
IOC Log Server</h4>
|
|
The log server now finds the proper latest date in an old log file when it
|
|
restarts, and begins logging (overwriting old messages) just after the
|
|
newest message in the file. This causes the log server to overwrite only
|
|
the oldest message in the log file. Originally, the log server always started
|
|
at the end of of any preexisting log file when it restarted.
|