diff --git a/RELEASE_NOTES.html b/RELEASE_NOTES.html index 9ce6f1ba2..1c9e4f811 100644 --- a/RELEASE_NOTES.html +++ b/RELEASE_NOTES.html @@ -1,1437 +1,1432 @@ - + - - - EPICS Release baseR3.13.3 - + + EPICS Release baseR3.13.3 + +

EPICS Release 3.13.5

-

-EPICS Release 3.13.5

+

June 2001

-

-June 2001

+

Changes since 3.13.4

-

-Changes since 3.13.4

-
-Several of the changes have been made to help prevent exceptions on powerPcs -when conversions are made from float to double. -

-aaiRecord aaoRecord aiRecord aoRecord boRecord calcRecord calcoutRecord +

+ +

CA Server Bug

+ +

Symptoms:

+ +

Clients disconnect unexpectedly when canceling event (monitor) +subscriptions using ca_clear_event(), but this may not be noticed because the +problem is probably rare under low or moderate load, and because CA clients +automatically reconnect. The problem was only reproducable here under heavy +load presented when the R3.14 client side regression tests were run on a fast +Linux workstation. For example, when the tests were run on a 500 MHz NT host +I was unable to reproduce the bug. On vxWorks you may see threads with the +name "CA client" and also "CA event" even if there are no clients connected +(the casr diagnostic will also incorrectly report that clients are +connected). As the IOC stays in long term operation without a reboot, and +depending on the frequency of occurence at your site (if any), you may also +notice that memory and file descriptors have been lost.

+ +

Background:

+ +

The problem was discovered when regression testing EPICS R3.14. The cause +was a deadlock occuring when a CA event (monitor) subscription was canceled +when the CA circuit was simultaneously in event (monitor) flow control mode +and the event (monitor) subscription also had a corresponding update in the +queue.

+ +


+PPC float to double exceptions

+ +

Several of the changes have been made to help prevent exceptions on +powerPcs when conversions are made from float to double.

+ +

aaiRecord aaoRecord aiRecord aoRecord boRecord calcRecord calcoutRecord compressRecord dfanoutRecord egeventRecord selRecord subArrayRecord -subRecordwaveformRecord -

-All DBF_FLOAT fields have been replaced by DBF_DOUBLE -

-dbConvert dbFastLinkConv db_access -

-Conversion from double to float checks for exponent too large. -

-dfanoutRecord.c longoutRecord.c stringoutRecord.c -

-OMSL did not work correctly for constant links. -
-
-compressRecord -

-READ_ALARM changed to LINK_ALARM -
-Database Channel Access Links -

-A message was sent to errlog whenever the connection to the server was lost. This message is no longer generated. -

-drvEpvxi -

-National Instruments MXI-2 devices are now fully supported on both 68K and -PowerPC (the PowerPC BSP must provide code for the vxWorks intVecGet() -routine though). PowerPC CPUs that have a Universe VME interface chip -will have problems driving MXI-1 boards, although they can be made to do -so by setting the variable 'vxi_use_failed_mxi' to a non-zero value in the -st.cmd file before iocInit() and ignoring any warnings about the MXI-1 -board having failed its self-test. -

-If a VME-MXI-2 board will not be installed as the VME system controller -read the NOTES: towards the top of the driver source for an essential -warning. -

-There is special code for the National Instruments CPU030 board in this -file, which is now only included when compiling for that particular CPU -board (an entry in config/CONFIG.Vx.niCpu030 enables this). -

-Put Notify -

A bug in dbNotifyCancel could cause a problem if a channel access -client disconnects while put notifys are outstanding. -

-dbAccess -

-A bug was fixed that was related to dynamically changing lock sets. -

The record support put_array_info is called after the a put only if the put is successful. Previosuly it was always called. -

-breakpoint tables -

-Breakpoint values are doubles rather than floats. -

-devVXStats -

-Improved algorithm for cpuUsage. -

-Changes since 3.13.3

-Channel Access -

Symptom: CA clients on all versions of EPICS with unresolved  channels -broadcast search messages too frequently if an EPICS R3.13.3 server is -present. This bug does not occur if an R3.13.3 server is not present. -

Changed: CA server now sends beacon messages which uniquely  identify -the server address. The CA repeater was also upgraded to detect, and fix, -any problems of this nature. -

Symptom: Undefined symbols show up when EPICS R3.13.3 was loaded  -into a PC IOC running Tornado II. -

Changed: Conditionally compiled out references to architecture inappropriate -system calls. -
  -

dfanoutRecord -
  -

The source file has comments showing a sample database. -

-devSymb

-This has been drastically changed. Look at <base>/src/dev/symbDev/README + +

devSymb

+This has been drastically changed. Look at <base>/src/dev/symbDev/README for details. -

-CA Client Library

+ +

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 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

+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

+

Changes between beta4 and beta11

+ +

Support for win95 and winNT

Epics base now builds on windows platforms -

-GDD and Portable Channel Access Server

+ +

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

+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: +document "EPICS IOC Applications, Building and Source/Release Control". Other +changes are minor. Following is a brief list: -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:

+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 -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

+
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

+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

+ +

pulseTrainRecord

recGblInitConstantLink for sgl was referencing wrong field. -

-gphLib

+ +

gphLib

This did not properly support multiple clients in multi-thread environment. -

-dbPvdLib

+ +

dbPvdLib

Modified to be faster. -

-devMz8311

+ +

devMz8311

Use maxCards from module_types.h instead of a #define -

-calcRecord

+ +

calcRecord

Allow CALC to be 40 characters. Increase rpbuf from 184 to 200 -

-mbbiDirectRecord

+ +

mbbiDirectRecord

Add call to refresh_bits. -

-mbbxDirectRecord

+ +

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

+ +

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

+ +

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

+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

+ +

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. -
+ +

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 +

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. +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 +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

+runtime add/delete of record types and record instances.

+

Goals

-

-Backward Compatibility

- +

Backward Compatibility

-

-Incompatibilities

- +

Incompatibilities

-

-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. +

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. +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: +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:

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. +instance numeric fields and menu fields are stored as character strings. This +solves the following problems. 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. + +

Other changes have been made while the opportunity was available.

-

-Database Definition File format

+

Database Definition File format

Formats are defined for the following: 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. +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

+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 The following tools are provided: +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. -
All global menus are written as separate files. -
  • -sdr2recordtype record_type record_type.h [default.dctsdr]
  • +

    Conversions - replacement for DBF_CVTCHOICE

    +Let's briefly review database conversion, i.e. the LINR field for ai and ao +records. -
    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: +

    The allowed conversions are:

      -
    1. -None
    2. - -
    3. -Linear
    4. - -
    5. -Breakpoint Tables
    6. +
    7. None
    8. +
    9. Linear
    10. +
    11. 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. + +

    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.

    -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

    +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. -

    -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
  • +

    Converting existing applications

    +

    Database Configuration Tools

    + -

    -Application Source/Release Control

    +

    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 @@ -1439,463 +1434,390 @@ 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 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 following changes must be made to the record support modules:
  • - - - -
  • -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.
  • +

    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.

    +
    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. + +
        MENUS    += menuXXX.h
    +    RECTYPES += xxxRecord.h
    + +
    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. +        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);
    +        void *pbuffer,long nRequest); + +
    +dbCaAddOutlink
    +dbCaGetLink
    +dbCaPutLink -
  • -dbCaAddInLink
  • +

    The Add routines are no longer needed. The Get/Put routines are replaced by +dbGetLink/dbPutLink.

    + +
    +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. -
    dbCaAddOutlink -
    dbCaGetLink -
    dbCaPutLink -

    The Add routines are no longer needed. The Get/Put routines are replaced -by dbGetLink/dbPutLink. +

    Record Instance Definitions

    -
  • -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() {
    -        }
    -        }
    +

    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) {
    -        }
    +        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")
    -        }
    + +

    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: +problem:

    A good way to find these problems is to use grep. For example: -
            grep SELL */*.db
    +
            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 + +

    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

    +

    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

    +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

    - -

    -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

    +

    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

    + +

    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

    + +

    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

    +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

    +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

    + +

    errPrintf

    On Unix this now calls fprintf(stderr instead of printf -

    -iocLogClient.c

    + +

    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

    + +

    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. +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: -