diff --git a/RELEASE_NOTES.html b/RELEASE_NOTES.html
index 694ec8cb9..33b08e0fb 100644
--- a/RELEASE_NOTES.html
+++ b/RELEASE_NOTES.html
@@ -2,1434 +2,54 @@
-
- EPICS Release baseR3.13.0.beta12
+
+ EPICS Release baseR3.14
-EPICS Release baseR3.13.1
-
-
-November 20, 1998
-
-
-Changes since 3.13.1
-dbStaticLib
-The DTYP field is always written. The NoRun version now keeps record
-instances keeps all records of each type in alphabetical order.
-
breakpoint tables
-
Tables names were previously forced to be alphanumeric. This restriction
-is removed.
-
dbNotify
-
If dbPutNotify called dbProcess and dbProcess returned an error
-the notify completion callback was called twice. This bug is fixed.
-
drvBB232
-
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.
-
aiRecord and aoRecord
-
eoff was not being reinitialized when conversion related fields were
-dynamically modified.
-
mbbiDirectRecord
-
When just the record's severity changed, only monitors on the VAL fields
-were posted, no monitors on the single bit fields.
-
-
-Changes between beta12 and 3.13.1
-iocLogClient
-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.
-
dbCaGetTimeStamp
-
This is a new routine for database channel access links.
-
drvTS
-
The routine TSsetClockFromUnix was made global. Calling it forces a
-resynchronization with a host time server. This is useful to
-
force a master timing ioc to resynchronize.
-
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.
-
task_params.h
-
Task priorities were changed so that no epics task has higher
-priority than netTask. Definitions for IOEVENTSCAN and TIMESTAMP were removed.
-
histogram record
-
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.
-
Sequencer
-
The lex definitions have been changed so that definitions like
-
#define ERRVALUE 9.90E+09
-
-
are accepted.
-
Initial values for static variables are now honored. Previously the
-syntax was permitted but the initial value was ignored. Note 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.
-
devMbbiDirectSoftRaw, devMbbiSoftRaw, devMbboDirectSoftRaw, devMbboSoftRaw
-
-
SHFT was made a prompt field and also modifiable. The
-VAL field of mbboDirectRecord is now modifiable.
-
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
-unless
-the nobt field was set to a non-zero value.
-
calcoutRecord
-
No longer calls dbScanLock until interruptAccept is true.
-
breakpoint tables
-
Entering negative values failed. This bug is fixed.
-
dbl("<record type>","<output file>","<field list>")
-
The vxWorks console command dbl now allows an additional argument, which
-is a list of field names.
-
For example
-
iocexample> dbl "ai",0,"DESC SCAN"
-
mrk:aiExample,"Analog input","Passive"
-
mrk:aiExample1,"Analog input No. 1","Passive"
-
mrk:aiExample2,"Analog input No. 2","Passive"
-
mrk:aiExample3,"Analog input No. 3","Passive"
-
-
-June 15, 1998
-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)
-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.
-
LANL has a revision of the Record Reference Manual available. See the
-LANL EPICS documentation.
-
The document "EPICS
-IOC Applications: Building and Source/Release Control" provides guidlines
-for developing applications with 3.13.
-
-Changes between beta11 and beta12
-
-
-IOC Applications: Building
-The following explains changes that need to be made to existing applications
-that followed the EPICS
-IOC Applications: Building and Source/Release Control. guidelines.
-See the new version of this manual for details.
-Before switching applications to beta12 it is STRONGLY recommended
-that you execute:
-
-cd <top>
-gnumake clean uninstall
-
-
-
-Changes to <top>/config:
-
-
-CONFIG_APP
-
-
-Remove the following lines:
-
-
-
-ifndef T_A
-T_A = $(HOST_ARCH)
-endif #ifndef T_A
-
-
-
-
-RELEASE
-
-
-If desired add a definition for TEMPLATE_TOP
-
-
-RULES_TOP RULES.Db RULES.ioc RULES.iocBoot
-
-
-These no longer exists in base. Replace your version with the version
-from:
-
-
-
-<base>/templates/makeBaseApp/top/config
-
-
-
-
-RULES_TOP
-
-
-Remove the rules for creating soft links.
-
-
-makeDbDepends.pl, makeIocCdCommands.pl, replaceVAR.pl
-
-
-Copy the versions from <base>/templates/makeBaseApp/top/config
-
-
-makeSoftLinks
-
-
-Remove this file
-
-
-
-Changes to xxxApp/src
-Move the following definitions from Makefile.Vx to Makefile.Host:
-
-USER_DBDFLAGS
-RECTYPES
-DBDEXPAND
-DBDNAME
-MENUS
-
-
-
-Changes to xxxApp/Db
-Rules for DBFROMTEMPLATE and INDDBFROMTEMPLATE no longer exist. See the
-new documentation of makeBaseApp for details of what the make rules are
-for databases.
-
-Changes to iocBoot and iocBoot/iocxxx
-iocBoot no longer needs a generated nfs.cmd file
-iocBoot/iocxxx no longer contains soft links. Instead the following
-is done:
+EPICS Release base 3.14.0alpha1
+This is the first release of 3.14. The primary purpose of this release
+is supporting iocCore on platforms besides vxWorks.
+
iocCore is now supported on the following platforms:
-
-A file cdCommands is generated which provides full path names for vxWorks
-cd commands
+vxWorks - The intention is to provide an easy migration path for existing
+applications
-
-The ld commands just give a file name with no path
+RTEMS - This is an open source real time operating system.
-
-The dbLoadxxx commands must specify "../../xxxApp"
+solaris - It has been tested on solaris 2.6 and solaris 8.
+
+-
+Linux - It has been tested on ?
+
+-
+winNT
+
+A new version of the Application Developers Guide is available. See
+http://www.aps.anl.gov/epics/modules/base/R3-14.php
+
This page has links for the App Dev Guide and also a link to learn more
+about RTEMS. In the Application Developer's Guide read Chapter 2, which
+describes the new eatures for 3.14.
+
It must be emphasized that this is an alpha release.
+
+-
+Please don't use it for existing operational systems
+
+-
+Don't build your operational CA clients with it.
+
+-
+The APIs for new components in libCom are still evolving so if you use
+them be prepared for changes.
+
+-
+HPUX - No support currently because we could not find support for multithreading.
-
-aoRecord
-This did not work properly if DOL is a channel access link that fails.
-
-Semaphores
-Most locking semaphores have been changed from semBCreate to semMCreate
-with the options :
-
SEM_DELETE_SAFE|SEM_INVERSION_SAFE|SEM_Q_PRIORITY
-A performance test showed that executing
-
- semTake(sem,WAIT_FOREVER);
- semGive(bsem);
-
-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.
-
-Task Priorities
-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.
-
-cvtDoubleToString
-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
-363000000
-
Now it is converted to
-
363000000.1
-
All you RF folks can cheer.
-
-Access Security
-Previously it was possible to crash an IOC if access security was restarted
-after iocInit. This is now fixed. Two major changes were made.
-
--
-asCaTask is no longer deleted and restarted. Instead it just clears all
-channels and than adds the new channels
-
--
-The locking mechanism was changed and made more roibust and easier to understand.
-
--
-Fixed bug that caused asRegisterClientCallback to fail on UNIX.
-
--
-asLib_lex.l changed to allow more characters(like dbLoadxxx)
-
--
-Fixed bug that could cause deadlock when an ASG field is changed at run
-time.
-
-Access Security now supports macro substitutions. A new vxWorks shell command
-is:
-
-asSetSubstitutions("var1=sub1,var2=sub2,...")
-See the Application developer's Guide for details about access security.
-
-tsdefs.h and tsSubr.c
-tsTextToStamp and tsTimeTextToStamp no longer modify the pointer or the
-string referenced by pText.
-The nextField routines used by tsSubr were moved inside tsSubr.c
-and made static routines.
-
-drvTS
-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.
-
-
-nextFieldSubr.c
-Removed from base.
-
-vxWorks
-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.
-
-makeBaseApp
-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.
-See the new WWW documentation on Application Source Release for details
-
-dbStaticLib
-The include path now supports the unix convention that an empty directory
-name means the current directory. Thus the following are OK
--I nnn::mmm # Current directory is between nnn and mmm
--I :nnn # Current directory is first
--I nnn: # Current directory is last
-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.
-For all fields in a .db file, a non null string is considered as not
-the default.
-
For winNT the path seperator is a ;
-
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.
-
-Runtime database access
-
-
--
-A new routine dbGetLinkDBFtype is now available. It returns the field type
-of a database link.
-
--
-dbNotify was fixed to work correctly for putNotify as well as put.
-
--
-scanppl now accepts an argument rate. scanpel accepts an argument
-event_number.
-
-
-
-base.dbd
-
-
--
-Soft raw device support is uncommented.
-
--
-Device support for the Allen Bradley SLC is changed.It is now:
-
-
#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")
-
-
-
-initHooks
-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:
-ld < bin/initHooks.o
-
-If you have your own version of initHooks.c it should be changed to support
-the new features. At a minumum the statement
-
-void initHooks( int state)
-
-must be changed to
-
- void initHooks( initHookState state)
-
-
-menuAlarmStat.dbd
-The no alarm string changed from "" to "NO_ALARM"
-
-Linear Conversion for ai and ao records:
-Before beginning it should be stated that the previous linear conversion
-method is still valid.
-The following, which is designed by Benjamin Franksen at BESSY, is now
-the recommended method:
-
A new field EOFF exists. The new linear conversion algorithm is
-now
-
VAL = AVAL * ESLO + EOFF
-
-AVAL is the raw value adjusted by ASLO and AOFF.
-Thus device support should now compute ESLO and EOFF instead of ESLO
-and ROFF.
-
For example let an ADC be a 16 bits adc with raw values between -32767
-and 32767.
-
ESLO = (EGUH - EGUL)/65535.0;
-EOFF = 0.0;
-
-NOTES:
-
--
-Device support may compute either ROFF or EOFF but not both.
-
--
-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:
-
-
VAL = AVAL * ESLO + EGUL
-
-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.
-
-
-RISC architectures
-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.
-
-errlog
-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.
-
-
-devABSLCDCM
-Changed Scl to Slc wherever this occured. Added support for signed 16 bit
-analog values. Stephanie Allison (SLAC) made these changes.
-
-
-devMpc
-Removed from base.
-
-devVXStats
-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:
-device(ai,INST_IO,devAiVXStats,"VX stats")
-device(ao,INST_IO,devAoVXStats,"VX stats")
-
-The INP fields now have the form
-field(INP,"@memory")
-field(INP,"@cpu")
-field(INP,"@fd")
-
-The OUT fields now have the form
-field(OUT,"@memoryScanPeriod")
-field(OUT,"@fdScanPeriod")
-field(OUT,"@cpuScanPeriod")
-
-The source file has comments showing a sample database.
-
-devSymb
-This has been drastically changed. Look at <base>/src/dev/symbDev/README
-for details.
-
-CA Client Library
-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).
-
-C++ Channel Access Server - CAS
-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.
-
-Global Data Descriptor Class - GDD (only used by the C++ CA server)
-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.
-
-WIN32 (PC) Port of EPICS
-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.
-
-EPICS Environment Variables that Include Host IP Addresses
-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")
-
-GCC 2.8
-The host portions of EPICS now build correctly with GCC 2.8
-
-Changes between beta4 and beta11
-
-
-Support for win95 and winNT
-Epics base now builds on windows platforms
-
-GDD and Portable Channel Access Server
-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.
-
-Application Developer's Guide
-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:
-
--
-Database Definition: General Rules describes escape sequences
-
--
-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.
-
--
-Runtime Database Access: Gives brief description of DBR_PUT_ACKT and DBR_PUT_ACKS.
-Also describes new routine dbGetPdbaddrFromLink
-
--
-The chapter "IOC Initialization" describes how to configure the error message
-logger.
-
-NOTE: 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.
-
-
-
-Compiler warning messages:
-All of base except drv/old is now being built with
-VX_WARN_YES = -Wall -pedantic -ansi
-
-Most warning messages have now been eliminated. The remaining messages
-should not be removed without looking hard at code.
-
-recSubArray
-get_control_double routine returned incorrect values for fields INDX and
-NELM.
-
-devAiStats
-This is now renamed devVXStats. The new device definitions are:
-device(ai,VME_IO,devAiVXStats,"VX stats")
-device(ao,VME_IO,devAoVXStats,"VX stats")
-Thus if an application has an old base.dbd and baseLIBOBJS including definitions
-for this device support they must be modified.
-
-SysMon device support
-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.
-
-dbToRecordtypeH
-The enums for menus had a comma after last item.
-
-pulseTrainRecord
-recGblInitConstantLink for sgl was referencing wrong field.
-
-gphLib
-This did not properly support multiple clients in multi-thread environment.
-
-dbPvdLib
-Modified to be faster.
-
-devMz8311
-Use maxCards from module_types.h instead of a #define
-
-calcRecord
-Allow CALC to be 40 characters. Increase rpbuf from 184 to 200
-
-mbbiDirectRecord
-Add call to refresh_bits.
-
-mbbxDirectRecord
-Bx becomes no prompt for mbbi and prompt for mbbo. It was the reverse before.
-
-calcoutRecord
-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.
-
-dbAccess
-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.
-
-escape characters in database files
-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 .
-
-dbTranslateEscape
-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".
-
-Slow booting
-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.
-
-boRecord, mbboRecord
-init_record now initialized the RVAL field.
-
-ProcessCallback
-Benjamin Franksen at BESSY reported a serious bug in the routine ProcessCallback
-(not used in base). It has been fixed.
-
-CALC fields
-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.
-
-Etc.
-Many other minor problems, bugs, etc. were fixed.
-
-
-
-Notes for Release 3.13 of EPICS Base
-
-
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.
-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.
-
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.
-
-Goals
-
-
--
-Allow database definition without an EPICS generated binary file.
-
--
-Change internal database structures so that runtime add/delete of record
-types and record instances is possible.
-
--
-Allow each ioc to load and initialize only the record, device, and driver
-support it actually uses.
-
-
-
-Backward Compatibility
-
-
--
-Minimal changes to existing record/device/driver support. A section below
-describes necessary changes.
-
--
-Provide tools to generate new database files from existing default.dctsdr
-
--
-No or almost no incompatible changes to the dbStatic API. New capabilities
-are of course allowed.
-
-
-
-Incompatibilities
-
-
--
-DCT is no longer supported. A TCL/TK replacement is now available.
-
--
-The sdr file format (.database files) is no longer supported.
-
--
-The old DCT short form format is no longer supported.
-
--
-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.
-
--
-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.
-
-
-
-Overview of new database support
-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.
-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.
-
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.
-
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.
-
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.
-
Everything is designed so that the following are possible:
-
--
-It is easy to tailor record/device/driver support individually for each
-ioc.
-
--
-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.
-
--
-It is possible to completely unbundle record support, device support, and
-driver support. Again work will remain before this is a reality.
-
-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.
-
--
-Rounding problems caused by converting from string to float and then back
-to string disappear.
-
--
-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.
-
--
-Macro definitions are allowed.
-
-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.
-Other changes have been made while the opportunity was available.
-
--
-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.
-
--
-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.
-
--
-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.
-
--
-All files in base/include have been moved to an appropriate base/src directory.
-These files are now installed into base/include.
-
-
-
-Database Definition File format
-Formats are defined for the following:
-
--
-Menu choices.
-
--
-Record type description
-
--
-Device choice
-
--
-Driver choice
-
--
-Breakpoint Conversion Table
-
--
-Record Instance.
-
-See the Application Developer's Guide for details.
-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.
-
The record type description format has been completely changed. It now
-has a "real" syntax. It should be MUCH easier to generate new definitions.
-
The device choice and driver support definitions are defined so that
-it is easy to provide incremental definitions.
-
The record instance format is an extension of the 3.12.beta13 and later
-GDCT .db format.
-
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.
-
-default.dctsdr conversion tools
-NOTES
-
--
-In the following default.dctsdr is optional. If not given the tool just
-looks for the file "default.dctsdr" in the current directory.
-
--
-All output files are placed in the directory from which the tool is executed.
-
-The following tools are provided:
-
--
-sdr2gblmenu [default.dctsdr]
-
-
All global menus are written as separate files.
--
-sdr2recordtype record_type record_type.h [default.dctsdr]
-
-
A record type definition file is generated.
--
-sdr2device [default.dctsdr]
-
-
All device definitions are placed in a file called device.dbd
--
-sdr2driver [default.dctsdr]
-
-
All driver definitions are placed in a file called driver.dbd
-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.
-
-Conversions - replacement for DBF_CVTCHOICE
-Let's briefly review database conversion, i.e. the LINR field for ai and
-ao records.
-The allowed conversions are:
-
--
-None
-
--
-Linear
-
--
-Breakpoint Tables
-
-The main complication results from the breakpoint tables. Previously EPICS
-handled breakpoint tables as follows:
-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.
-
Here is how breakpoint table are now handled.
-
--
-A new file format is defined for breakpoint tables.
-
--
-A conversion tool, makeBpt, takes as input the second format described
-above and creates the breakpoint table in the new file format.
-
--
-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.
-
--
-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.
-
--
-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.
-
-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.
-
-Converting existing applications
-
-
-Database Configuration Tools
-
-
-DCT - Rather than making major changes to DCT, a TCL/TK replacement has
-been written. The executable is named DCT313.
-
-
-GDCT - A new version is provided that supports 3.13. The executable is
-named GDCT313.
-
-
-CAPFAST
-
-
--
-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.
-
--
-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.
-
-
-
-Application Source/Release Control
-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.
-The document "EPICS
-IOC Applications: Building and Source/Release Control" describes a
-utility makeBaseApp which can be used for small applications. It also provides
-guidlines that can be used for large applications.
-
-Locally developed Record/Device support
-
-
--
-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.
-
--
-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.
-
--
-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.
-
--
-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.
-
--
-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.
-
--
-If breakpoint tables have been locally developed. The following should
-be done.
-
-
--
-The menuConvert file should be copied from epics and new entries for the
-local breakpoint tables added to the end.
-
--
-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.
-
-
--
-The following changes must be made to the record support modules:
-
-
--
-The include statement for the record type h file must be surrounded by
-the statements:
-
-
#define GEN_SIZE_OFFSET
-
-#undef GEN_SIZE_OFFSET
-
-
-Any statements that initialize a field from constant links must be changed.
-Such statements always contain the characters "value.value". For example:
-
- pai->simm = pai->siml.value.value;
-
-is changed to
-
- recGblInitConstantLink(&pai->siml,DBF_USHORT,&pai->simm);
-NOTE: This change also has to be made to any device support that manipulates
-constant links. Normally this is only soft device support.
-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.
-
-If record support uses menus it should be modified to use the enum definitions
-in the generated header files.
-
-
-
-dbStaticLib - Some routines have a new name:
-
-OLD ROUTINE REPLACEMENT
-
-dbFindRecdes dbFindRecordType
-dbFirstRecdes dbFirstRecordType
-dbNextRecdes dbNextRecordType
-dbGetRecdesName dbGetRecordTypeName
-dbGetNRecdes dbGetNRecordTypes
-dbFirstFielddes dbFirstField
-dbNextFielddes dbNextField
-dbGetChoices dbGetMenuChoices
-For now the old version will be supported. After one release they will
-go away.
-
-New vxWorks CONFIG rules are available to generate menu and record type
-include files from ascii files. The rules are:
-
- MENUS += menuXXX.h
- RECTYPES += xxxRecord.h
-
-
-Changes to recGbl and database access link routines.
-
-
--
-recGblInitFastInLink
-
-
recGblInitFastOutLink
-All code calling these should be removed. They are no longer needed.
-
-
-recGblGetFastLink
-
-
recGblPutFastLink
-
dbFastLinkGet
-
dbFastLinkPut
-
recGblGetLinkValue
-
recGblPutLinkValue
-These are replaced by
-
dbGetLink dbPutLink
-
long dbGetLink(struct db_link *,short dbrType,
- void *pbuffer,long *options,long *nRequest);
-The last two arguments can be 0. options=0 means no options. nRequest=0
-means scalar, i.e. retrieve one value.
-long dbPutLink(struct db_link *,short dbrType,
- void *pbuffer,long nRequest);
-
-
-dbCaAddInLink
-
-
dbCaAddOutlink
-
dbCaGetLink
-
dbCaPutLink
-The Add routines are no longer needed. The Get/Put routines are replaced
-by dbGetLink/dbPutLink.
-
-
-link.h
-
-
All parm fields are now declared char * parm rather than char parm[]
-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.
-
-
-Record Instance Definitions
-
-
-Convert to proper format
-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:
- database(x) { nowhere() {
- }
- }
-
-or
-
- database(x) {
- }
-These statements must be removed. They were in pre 3.12 releases.
-
-CONSTANT Links with value "0"
-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:
- record(fanout,name) {
- field(SELN,"1")
- field(SELL,"0")
- }
-Such definitions can be fixed by either completly removing the link definition
-or changing the value from "0" to "".
-here is a complete list of record types and fields that may have this
-problem:
-
--
-fanoutRecord
-
-
--
-SELL -> SELN Note SELN is not a prompt field.
-
-pulseCounterRecord
-
-pulseDelayRecord
-
--
-STL -> STV
-
--
-GLNK -> GATE
-
-pulseTrainRecord
-
--
-SGL -> HGV
-
-
NOTE: This is a bug. The field should be SGV. Fixed 3.13.beta5.
-selRecord
-
--
-INPA -> A NOTE A is not a prompt field
-
--
-INPB -> B NOTE B is not a prompt field
-
--
-... for all INP links
-
-seqRecord
-
--
-SELL -> SELN NOTE SELN is not a prompt field
-
-stringinRecord
-
--
-SIOL -> SVAL NOTE SVAL is not a prompt field
-
-stringoutRecord
-
-
-A good way to find these problems is to use grep. For example:
- grep SELL */*.db
-This assumes that you are in directory that contains subdirectorys containing
-.db files.
-
-IOC Startup files
-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.
-
-Other Release Notes
-
-
-IOC Test routines
-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.
-
-Changes to Record and Device Support
-
-
--
-Changes to record support modules (caused by looking for UDF problems)
-
-
--
-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.
-
--
-compressRecord - Now allows Channel Access links for INP. It also sets
-READ_ALARM if it has bad or no input.
-
--
-dfanoutRecord, longoutRecord - In process the udf field is set to false
-when dbGetLink returns success only if dol is not a constant link.
-
--
-fanoutRecord - Now supports CA links. Same rules as FLNK.
-
--
-biRecord, mbbiRecord - Udf now set to false in put_enum_string when val
-is initialized.
-
--
-mbbiDirectRecord - Udf now set to false in process when val is initialized.
-
--
-mbbiDirectRecord, mbboDirectRecord, waitRecord - Old style, pre R3.12,
-c code in init_record was updated.
-
--
-pidRecord - Changes made to modify DB_LINK test on cvl field to allow type
-CA_LINK.
-
--
-pulseDelayRecord - Removed code that called recGblSetSevr is status non
-zero just before return. process always returns 0.
-
--
-pulseTrainRecord - process always returns 0.
-
--
-seqRecord - Changes made to modify DB_LINK tests on the lnk and dol fields
-to allow type CA_LINK.
-
--
-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.
-
--
-stringoutRecord - In process the udf field is now set to false if dol is
-not a constant link and dbGetLink returns success.
-
--
-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.
-
-
--
-Device Support Changes
-
-
--
-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.
-
--
-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).
-
--
-devLoSoft, devLoSymb, devMbboDirectSoft, devMbboSoft, devPtSoft, devSoSymb
-- The udf field is no longer set to false in write_xxx.
-
--
-devHistogramSoft, devHistogramTestAsyn - In init_record the udf field is
-set to false only if svl is a constant link and recGblInitConstantLink
-returns success.
-
-
-
-
-Make rules and config files
-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.
-
-GNU C++ for base
-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.
-
-log server
-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.
-
-CA repeater fix
-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.
-
-Portable CA server
-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.
-
-Macro Substitution Library
-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.
-
-VXI Resource Manager fix
-Thanks to Ric Claus of SLAC a bug has been isolated in the VXI resource
-manager.
-
Symptom: correct slot isnt located when EPICS_VXI_LA_BASE is set to
-something other than zero.
-
-Access Security
-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.
-
-errPrintf
-On Unix this now calls fprintf(stderr instead of printf
-
-iocLogClient.c
-This now calls printf instead of epicsPrintf to prevent deadlocks.
-
-Native type for DBF_USHORT
-Formerlly old database access, which does not have unsigned short called
-the native type DBR_FLOAT. It now calls it DBF_LONG
-
-Allen Bradley Driver
-Analog Output Block Transfers were being requested too frequently
-If link_status command fails (3 times in succession) adapters are now
-immediatly declared down.
-
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.
-
For btRead and btWrite is is no longer permissible to issue a new btRead
-or btWrite from tha callback routine.
-
The on line doc has the following two changes:
-
--
-abConfigBaud has arguments (link,number) (Old doc was wrong)
-
--
-Now states that new btRead/btWrite can NOT be ussued from callback.
-
-
-
-vmic2534
-Support has been added by LBL. It still needs to be ansified.
-
-New options for links
-
-
-FWDLINK
-
-
A forward link now works between IOCs but only if the field is PROC.
-When recGblFwdLink is executed, a 1 is written.
-
-OUTLINK new option CA (In addition to PP and NPP)
-
-
CA means always make it channel access link
-
-INLINK new options CA CP CPP (In addition to PP and NPP)
-
-
--
-CA means always make it a channel access link
-
--
-CP means CA + process when monitor occurs
-
--
-CPP means CA + process passive records when monitor occurs
-
-dbAccess (dbGetField dbPutField) make sure that link field strings are
-not longer than 39 characters. They allow M for MS and N for NMS
-
-callback and scan task names
-The task names have been changed to make them unique
-
-dbPutString
-If the strlen of the new field is >= field_size an error is returned.
-
-event scanned records
-Multiple priorities are now supported.
-
WARNING: Default PRIO is low thus old event scanned records may be
-executed at a lower priority then previous release.
-
-Allen Bradley Stepper Motor Support (Ric Claus SLAC)
-Support for the allen bradley stepper motor is available. See the APS EPICS
-Hardware Support page for details.
-
-initHooks
-INITHOOKafterCaLinkInit1 is replaced by INITHOOKafterCaLinkInit
-
INITHOOKafterCaLinkInit2 no longer exists
-
-
-EPICS Base Release R3.14
-
-
-IOC Log Server
-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.