For 3.13.0.beta11
This commit is contained in:
980
RELEASE_NOTES.html
Normal file
980
RELEASE_NOTES.html
Normal file
@@ -0,0 +1,980 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>EPICS Release baseR3.13.0.beta11
|
||||
</TITLE>
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/3.01Gold (X11; I; SunOS 5.5.1 sun4u) [Netscape]">
|
||||
</HEAD>
|
||||
<BODY>
|
||||
|
||||
<H1>EPICS Release baseR3.13.0.beta11 </H1>
|
||||
|
||||
<H4>July 17, 1997</H4>
|
||||
|
||||
<P>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.
|
||||
There are still some c++ related problems. In particular c++ code
|
||||
does not build properly on SGI. Thus we are not yet ready for the
|
||||
first official 3.13 release. Since none of the c++ code is necessary
|
||||
for IOC applications this should not stop anyone from upgrading to 3.13.</P>
|
||||
|
||||
|
||||
<P>The Application Developer's Guide is a major revision of the 3.12 edition.
|
||||
All Application Developer's should get a hard copy (from the postscript
|
||||
version) and read it. It describes the features in the latest release.
|
||||
The latest version is for beta11 base release. </P>
|
||||
|
||||
<P>LANL has a revision of the Record Reference Manual available. See the
|
||||
LANL EPICS documentation. </P>
|
||||
|
||||
<P>The document "<A HREF="http://www.aps.anl.gov/asd/controls/epics/EpicsDocumentation/AppDevManuals/iocAppBuildSRcontrol.html">EPICS
|
||||
IOC Applications: Building and Source/Release Control</A>" provides
|
||||
guidlines for developing applications with 3.13.</P>
|
||||
|
||||
<H3>Changes between beta4 and beta11</H3>
|
||||
|
||||
<H4>Support for win95 and winNT</H4>
|
||||
|
||||
<P>Epics base now builds on windows platforms</P>
|
||||
|
||||
<H4>GDD and Portable Channel Access Server</H4>
|
||||
|
||||
<P>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.</P>
|
||||
|
||||
<H4>Application Developer's Guide</H4>
|
||||
|
||||
<P>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: </P>
|
||||
|
||||
<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.
|
||||
</UL>
|
||||
|
||||
<P><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.<P>
|
||||
|
||||
<H4>Compiler warning messages:</H4>
|
||||
|
||||
<P>All of base except drv/old is now being built with </P>
|
||||
|
||||
<UL>
|
||||
<PRE>VX_WARN_YES = -Wall -pedantic -ansi</PRE>
|
||||
</UL>
|
||||
|
||||
<P>Most warning messages have now been eliminated. The remaining messages
|
||||
should not be removed without looking hard at code.</P>
|
||||
|
||||
<H4>recSubArray</H4>
|
||||
|
||||
<P>get_control_double routine returned incorrect values for fields INDX
|
||||
and NELM.</P>
|
||||
|
||||
<H4>devAiStats</H4>
|
||||
|
||||
<P>This is now renamed devVXStats. The new device definitions are:</P>
|
||||
<PRE>
|
||||
device(ai,VME_IO,devAiVXStats,"VX stats")
|
||||
device(ao,VME_IO,devAoVXStats,"VX stats")
|
||||
</PRE>
|
||||
<P>Thus if an application has an old base.dbd and baseLIBOBJS
|
||||
including definitions for this device support they must be modified.</P>
|
||||
|
||||
<H4>SysMon device support</H4>
|
||||
|
||||
<P>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.</P>
|
||||
|
||||
<H4>dbToRecordtypeH</H4>
|
||||
|
||||
<P>The enums for menus had a comma after last item.</P>
|
||||
|
||||
<H4>pulseTrainRecord</H4>
|
||||
|
||||
<P>recGblInitConstantLink for sgl was referencing wrong field.</P>
|
||||
|
||||
<H4>gphLib</H4>
|
||||
|
||||
<P>This did not properly support multiple clients in multi-thread environment.
|
||||
</P>
|
||||
|
||||
<H4>dbPvdLib</H4>
|
||||
|
||||
<P>Modified to be faster.</P>
|
||||
|
||||
<H4>devMz8311</H4>
|
||||
|
||||
<P>Use maxCards from module_types.h instead of a #define</P>
|
||||
|
||||
<H4>calcRecord</H4>
|
||||
|
||||
<P>Allow CALC to be 40 characters. Increase rpbuf from 184 to 200 </P>
|
||||
|
||||
<H4>mbbiDirectRecord</H4>
|
||||
|
||||
<P>Add call to refresh_bits.</P>
|
||||
|
||||
<H4>mbbxDirectRecord</H4>
|
||||
|
||||
<P>Bx becomes no prompt for mbbi and prompt for mbbo. It was the reverse
|
||||
before.</P>
|
||||
|
||||
<H4>calcoutRecord</H4>
|
||||
|
||||
<P>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.</P>
|
||||
|
||||
<H4>dbAccess</H4>
|
||||
|
||||
<P>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. </P>
|
||||
|
||||
<H4>escape characters in database files</H4>
|
||||
|
||||
<P>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
|
||||
.</P>
|
||||
|
||||
<H4>dbTranslateEscape</H4>
|
||||
|
||||
<P>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". </P>
|
||||
|
||||
<H4>Slow booting</H4>
|
||||
|
||||
<P>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. </P>
|
||||
|
||||
<H4>boRecord, mbboRecord</H4>
|
||||
|
||||
<P>init_record now initialized the RVAL field.</P>
|
||||
|
||||
<H4>ProcessCallback</H4>
|
||||
|
||||
<P>Benjamin Franksen at BESSY reported a serious bug in the routine
|
||||
ProcessCallback (not used in base). It has been fixed.</P>
|
||||
|
||||
<H4>CALC fields</H4>
|
||||
|
||||
<P>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. <P>
|
||||
|
||||
<H4>Etc.</H4>
|
||||
|
||||
<P>Many other minor problems, bugs, etc. were fixed.</P>
|
||||
|
||||
<HR></P>
|
||||
|
||||
<H1>Notes for Release 3.13 of EPICS Base</H1>
|
||||
|
||||
<P>
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<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. </P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>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>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<P>Everything is designed so that the following are possible: </P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>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. </P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>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>
|
||||
|
||||
<P>Other changes have been made while the opportunity was available. </P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>Formats are defined for the following: </P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>See the Application Developer's Guide for details. </P>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<P>The device choice and driver support definitions are defined so that
|
||||
it is easy to provide incremental definitions. </P>
|
||||
|
||||
<P>The record instance format is an extension of the 3.12.beta13 and later
|
||||
GDCT .db format. </P>
|
||||
|
||||
<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. </P>
|
||||
|
||||
<H2>default.dctsdr conversion tools</H2>
|
||||
|
||||
<P>NOTES </P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>The following tools are provided: </P>
|
||||
|
||||
<UL>
|
||||
<LI>sdr2gblmenu [default.dctsdr] <BR>
|
||||
All global menus are written as separate files. </LI>
|
||||
|
||||
<LI>sdr2recordtype record_type record_type.h [default.dctsdr] <BR>
|
||||
A record type definition file is generated. </LI>
|
||||
|
||||
<LI>sdr2device [default.dctsdr] <BR>
|
||||
All device definitions are placed in a file called device.dbd </LI>
|
||||
|
||||
<LI>sdr2driver [default.dctsdr] <BR>
|
||||
All driver definitions are placed in a file called driver.dbd </LI>
|
||||
</UL>
|
||||
|
||||
<P>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. </P>
|
||||
|
||||
<H2>Conversions - replacement for DBF_CVTCHOICE</H2>
|
||||
|
||||
<P>Let's briefly review database conversion, i.e. the LINR field for ai
|
||||
and ao records. </P>
|
||||
|
||||
<P>The allowed conversions are: </P>
|
||||
|
||||
<OL>
|
||||
<LI>None </LI>
|
||||
|
||||
<LI>Linear </LI>
|
||||
|
||||
<LI>Breakpoint Tables </LI>
|
||||
</OL>
|
||||
|
||||
<P>The main complication results from the breakpoint tables. Previously
|
||||
EPICS handled breakpoint tables as follows: </P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>Here is how breakpoint table are now handled. </P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>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. </P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>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>
|
||||
|
||||
<P>The document "<A HREF="http://www.aps.anl.gov/asd/controls/epics/EpicsDocumentation/AppDevManuals/iocAppBuildSRcontrol.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.</P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>NOTE: This change also has to be made to any device support that manipulates
|
||||
constant links. Normally this is only soft device support. </P>
|
||||
|
||||
<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.</P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>For now the old version will be supported. After one release they will
|
||||
go away. </P>
|
||||
|
||||
<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 <BR>
|
||||
recGblInitFastOutLink <BR>
|
||||
<BR>
|
||||
All code calling these should be removed. They are no longer needed. </LI>
|
||||
|
||||
<LI>recGblGetFastLink <BR>
|
||||
recGblPutFastLink <BR>
|
||||
dbFastLinkGet <BR>
|
||||
dbFastLinkPut <BR>
|
||||
recGblGetLinkValue <BR>
|
||||
recGblPutLinkValue <BR>
|
||||
<BR>
|
||||
These are replaced by <BR>
|
||||
dbGetLink dbPutLink </LI>
|
||||
|
||||
<PRE>long dbGetLink(struct db_link *,short dbrType,
|
||||
void *pbuffer,long *options,long *nRequest);
|
||||
</PRE>
|
||||
|
||||
<P>The last two arguments can be 0. options=0 means no options. nRequest=0
|
||||
means scalar, i.e. retrieve one value. </P>
|
||||
|
||||
<PRE>long dbPutLink(struct db_link *,short dbrType,
|
||||
void *pbuffer,long nRequest);
|
||||
</PRE>
|
||||
|
||||
<LI>dbCaAddInLink <BR>
|
||||
dbCaAddOutlink <BR>
|
||||
dbCaGetLink <BR>
|
||||
dbCaPutLink <BR>
|
||||
<BR>
|
||||
The Add routines are no longer needed. The Get/Put routines are replaced
|
||||
by dbGetLink/dbPutLink. </LI>
|
||||
</UL>
|
||||
|
||||
<LI>link.h <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. </LI>
|
||||
</UL>
|
||||
|
||||
<H1>Record Instance Definitions</H1>
|
||||
|
||||
<H4>Convert to proper format</H4>
|
||||
|
||||
<P>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: </P>
|
||||
|
||||
<PRE> database(x) { nowhere() {
|
||||
}
|
||||
}
|
||||
|
||||
or
|
||||
|
||||
database(x) {
|
||||
}
|
||||
</PRE>
|
||||
|
||||
<P>These statements must be removed. They were in pre 3.12 releases. </P>
|
||||
|
||||
<H4>CONSTANT Links with value "0"</H4>
|
||||
|
||||
<P>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: </P>
|
||||
|
||||
<PRE> record(fanout,name) {
|
||||
field(SELN,"1")
|
||||
field(SELL,"0")
|
||||
}
|
||||
</PRE>
|
||||
|
||||
<P>Such definitions can be fixed by either completly removing the link
|
||||
definition or changing the value from "0" to "". </P>
|
||||
|
||||
<P>here is a complete list of record types and fields that may have this
|
||||
problem: </P>
|
||||
|
||||
<UL>
|
||||
<LI>fanoutRecord </LI>
|
||||
|
||||
<UL>
|
||||
<LI>SELL -> SELN Note SELN is not a prompt field. </LI>
|
||||
</UL>
|
||||
|
||||
<P>pulseCounterRecord </P>
|
||||
|
||||
<UL>
|
||||
<LI>SGL -> SGV </LI>
|
||||
</UL>
|
||||
|
||||
<P>pulseDelayRecord </P>
|
||||
|
||||
<UL>
|
||||
<LI>STL -> STV </LI>
|
||||
|
||||
<LI>GLNK -> GATE </LI>
|
||||
</UL>
|
||||
|
||||
<P>pulseTrainRecord </P>
|
||||
|
||||
<UL>
|
||||
<LI>SGL -> HGV <BR>
|
||||
NOTE: This is a bug. The field should be SGV. Fixed 3.13.beta5. </LI>
|
||||
</UL>
|
||||
|
||||
<P>selRecord </P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>seqRecord </P>
|
||||
|
||||
<UL>
|
||||
<LI>SELL -> SELN NOTE SELN is not a prompt field </LI>
|
||||
</UL>
|
||||
|
||||
<P>stringinRecord </P>
|
||||
|
||||
<UL>
|
||||
<LI>SIOL -> SVAL NOTE SVAL is not a prompt field </LI>
|
||||
</UL>
|
||||
|
||||
<P>stringoutRecord </P>
|
||||
|
||||
<UL>
|
||||
<LI>DOL -> VAL </LI>
|
||||
</UL>
|
||||
</UL>
|
||||
|
||||
<P>A good way to find these problems is to use grep. For example: </P>
|
||||
|
||||
<PRE> grep SELL */*.db
|
||||
</PRE>
|
||||
|
||||
<P>This assumes that you are in directory that contains subdirectorys containing
|
||||
.db files. </P>
|
||||
|
||||
<H1>IOC Startup files</H1>
|
||||
|
||||
<P>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. </P>
|
||||
|
||||
<H2>Other Release Notes </H2>
|
||||
|
||||
<H4>IOC Test routines</H4>
|
||||
|
||||
<P>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.</P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>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. </P>
|
||||
|
||||
<H4>GNU C++ for base</H4>
|
||||
|
||||
<P>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. </P>
|
||||
|
||||
<H4>log server</H4>
|
||||
|
||||
<P>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. </P>
|
||||
|
||||
<H4>CA repeater fix</H4>
|
||||
|
||||
<P>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. </P>
|
||||
|
||||
<H4>Portable CA server</H4>
|
||||
|
||||
<P>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. </P>
|
||||
|
||||
<H4>Macro Substitution Library</H4>
|
||||
|
||||
<P>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.</P>
|
||||
|
||||
<H4>VXI Resource Manager fix</H4>
|
||||
|
||||
<P>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. </P>
|
||||
|
||||
<H4>Access Security </H4>
|
||||
|
||||
<P>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. </P>
|
||||
|
||||
<H4>errPrintf </H4>
|
||||
|
||||
<P>On Unix this now calls fprintf(stderr instead of printf </P>
|
||||
|
||||
<H4>iocLogClient.c </H4>
|
||||
|
||||
<P>This now calls printf instead of epicsPrintf to prevent deadlocks. </P>
|
||||
|
||||
<H4>Native type for DBF_USHORT </H4>
|
||||
|
||||
<P>Formerlly old database access, which does not have unsigned short called
|
||||
the native type DBR_FLOAT. It now calls it DBF_LONG </P>
|
||||
|
||||
<H4>Allen Bradley Driver </H4>
|
||||
|
||||
<P>Analog Output Block Transfers were being requested too frequently </P>
|
||||
|
||||
<P>If link_status command fails (3 times in succession) adapters are now
|
||||
immediatly declared down. </P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>For btRead and btWrite is is no longer permissible to issue a new btRead
|
||||
or btWrite from tha callback routine. </P>
|
||||
|
||||
<P>The on line doc has the following two changes: </P>
|
||||
|
||||
<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>
|
||||
|
||||
<P>Support has been added by LBL. It still needs to be ansified. </P>
|
||||
|
||||
<H4>New options for links </H4>
|
||||
|
||||
<LI>FWDLINK <BR>
|
||||
A forward link now works between IOCs but only if the field is PROC. When
|
||||
recGblFwdLink is executed, a 1 is written. </LI>
|
||||
|
||||
<LI>OUTLINK new option CA (In addition to PP and NPP) <BR>
|
||||
CA means always make it channel access link </LI>
|
||||
|
||||
<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>
|
||||
|
||||
<P>dbAccess (dbGetField dbPutField) make sure that link field strings are
|
||||
not longer than 39 characters. They allow M for MS and N for NMS </P>
|
||||
|
||||
<H4>callback and scan task names </H4>
|
||||
|
||||
<P>The task names have been changed to make them unique </P>
|
||||
|
||||
<H4>dbPutString </H4>
|
||||
|
||||
<P>If the strlen of the new field is >= field_size an error is returned.
|
||||
</P>
|
||||
|
||||
<H4>event scanned records </H4>
|
||||
|
||||
<P>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. </P>
|
||||
|
||||
<H4>Allen Bradley Stepper Motor Support (Ric Claus SLAC) </H4>
|
||||
|
||||
<P>Support for the allen bradley stepper motor is available. See the APS
|
||||
EPICS Hardware Support page for details.</P>
|
||||
|
||||
<H4>initHooks </H4>
|
||||
|
||||
<P>INITHOOKafterCaLinkInit1 is replaced by INITHOOKafterCaLinkInit <BR>
|
||||
INITHOOKafterCaLinkInit2 no longer exists </P>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
Reference in New Issue
Block a user