Files
pcas/documentation/RELEASE_NOTES.html
2012-03-09 12:22:45 -06:00

350 lines
9.5 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>EPICS Base R3.15.0.x Release Notes</title>
</head>
<body lang="en">
<h1 align="center">EPICS Base Release 3.15.0.x</h1>
<p>
EPICS Base 3.15.0.x releases are not intended for use in production systems.</p>
<h2 align="center">Changes between 3.14.x and 3.15.0.x</h2>
<!-- Insert new items immediately below here ... -->
<h3>Alarm filtering added to input record types</h3>
<p>The record types ai, calc, longin and mbbi have a new alarm filter added to
them. This provides a low-pass filter that can be used to delay the reporting of
alarms caused by the input level passing the HIGH, HIHI, LOW or LOLO values. The
filter is controlled with a new AFTC field that sets the filter's time constant.
The default value for this field is zero, which keeps the record's original
alarm behaviour.</p>
<p>The record must be scanned often enough for the filtering action to work
effectively and the alarm severity can only change when the record is processed,
but that processing does not have to be regular; the filter uses the time since
the record last processed in its calculation. Setting AFTC to a positive number
of seconds will delay the record going into or out of a minor alarm severity or
from minor to major severity until the input signal has been in that range for
that number of seconds.</p>
<h3>Post events on Waveform record's NORD field</h3>
<p>When the record type or soft device support modify the NORD field of a
waveform record they now also post a DBE_VALUE and DBE_LOG event, signalling the
array length change to any clients monitoring the NORD field. Input device
support routines should be modified to do this as well.</p>
<h3>Attributes of Non-VAL Fields</h3>
<p>Non-VAL fields now report meaningful information for precision, units,
graphic limits, control limits, and alarm limits instead of simply using
PREC, EGU, HOPR, LOPR, DRVL, DRVH, HIHI, HIGH, LOW, and LOLO. All delay
fields have a default precision of 2 digits, units "s" and control limits
of 0 to 100,000 seconds (these precision and limit values can be changed
for each record type as a whole at runtime by updating a registered global
variable). Input fields like A-L of the calc record read their metadata
from the corresponding INPn link if possible.</p>
<h3>
Changes to epicsVersion.h</h3>
<p>
The two macros <tt>EPICS_UPDATE_LEVEL</tt> and <tt>EPICS_CVS_SNAPSHOT</tt> have
been deleted from the epicsVersion.h file; they were deprecated in R3.14 and can
be replaced with <tt>EPICS_PATCH_LEVEL</tt> and <tt>EPICS_DEV_SNAPSHOT</tt>
respectively.</p>
<p>
A new pair of macros has been added to make version number comparisons easier.
Code that will not work with a version of Base before 3.15.0 can now be
written like this to prevent it from compiling:</p>
<pre style="margin: 0 2em;">
#if defined(VERSION_INT) && EPICS_VERSION_INT < VERSION_INT(3,15,0,0)
# error EPICS Base R3.15.0 or later is required
#endif
</pre>
<h3>
Added support for iocLogPrefix</h3>
<p>
Added a <code>iocLogPrefix</code> command to <code>iocsh</code>. This adds a
prefix to all messages from this IOC (or other log client) as they get sent to the
iocLogServer. This lets sites use the "fac=&lt;<i>facility</i>&gt;" syntax for
displaying the facility, process name etc. in log viewers like the
<code>cmlogviewer<code>.</p>
<h3>
Reworked the epicsEvent C &amp; C++ APIs</h3>
<ul>
<li>Renamed the enum epicsEventWaitStatus to epicsEventStatus</li>
<li>Defined epicsEventWaitStatus as a macro for epicsEventStatus</li>
<li>Renamed epicsEventWaitOk to epicsEventOk</li>
<li>Renamed epicsEventWaitError to epicsEventError</li>
<li>Defined epicsEventWaitOK and epicsEventWaitError as macros</li>
<li>Added epicsEventTrigger(id) which triggers an event and returns OK or an
error status if the underlying OS primitives report an error</li>
<li>Added epicsEventMustTrigger(id) which halts on error</li>
<li>Defined epicsEventSignal(id) as a macro for epicsEventMustTrigger(id)</li>
<li>Added a new C++ method epicsEvent::trigger() which throws an
epicsEvent::invalidSemaphore in the event of an error</li>
<li>epicsEvent::signal() makes an inline call to epicsEvent::trigger()</li>
<li>epicsEventWait() and epicsEventWaitWithTimeout() now return an error
status if the underlying OS primitives report an error</li>
<li>All the epicsEventMust...() routines are now implemented in the common
libCom/osi/epicsEvent.cpp source file, and call cantProceed() instead of
mis-using assert()</li>
<li>Implemented epicsEventShow() on Posix</li>
<li>Win32: Removed all epicsShareAPI decorations</li>
</ul>
<h3>
Enabled histogram record type</h3>
<p>
The histogram record was not included in the base.dbd file in any 3.14 release,
but has now been added along with its associated soft device support. The build
system now generates the list of all the record.dbd files in base automatically
in src/std/rec/Makefile.</p>
<h3>
Reorganization of src/</h3>
<p>Reorganization of subdirectories of src/ to better represent the relation
between different parts as described in the following table.</p>
<p>This change also allows the number of libraries built to be reduced to:
libCap5.so, libca.so, libdbCore.so, libdbStaticHost.so,
libCom.so, libcas.so, libdbRecStd.so, and libgdd.so</p>
<table border="1"><tbody>
<tr>
<th>Component</th>
<th>Dependency</th>
<th>Library name</th>
<th>Description</th>
</tr>
<tr>
<td>src/tools</td>
<td></td>
<td></td>
<td>Build system scripts</td>
</tr>
<tr>
<td>src/libCom</td>
<td>src/tools</td>
<td>Com</td>
<td>Utility routines and OS-independant API</td>
</tr>
<tr>
<td>src/template</td>
<td>src/tools</td>
<td></td>
<td>User application templates (e.g. makeBaseApp)</td>
</tr>
<tr>
<td>src/ca/client</td>
<td>src/libCom</td>
<td>ca</td>
<td>Channel Access client</td>
</tr>
<tr>
<td>src/ca/legacy/gdd</td>
<td>src/ca/client</td>
<td>gdd</td>
<td>Generic data layer for PCAS</td>
</tr>
<tr>
<td>src/ca/legacy/pcas</td>
<td>src/ca/legacy/gdd</td>
<td>cas</td>
<td>Portable Channel Access Server</td>
</tr>
<tr>
<td>src/ioc</td>
<td>src/ca</td>
<td>dbCore</td>
<td>Core database processing functions</td>
</tr>
<tr>
<td>src/std</td>
<td>src/ioc</td>
<td>dbRecStd</td>
<td>Standard records, soft device support and the softIoc </td>
</tr>
</tbody></table>
<p>
In order to better reflect these relations the following
directories and files were moved as described:</p>
<table border="1"><tbody>
<tr>
<th colspan="2">Relocations</th>
</tr>
<tr>
<th>Previous</th><th>New</th>
</tr>
<tr>
<th colspan="2">libCom</th>
</tr>
<tr>
<td>src/RTEMS</td>
<td>src/libCom/RTEMS</td>
</tr>
<tr>
<td>src/toolsComm/flex</td>
<td>src/libCom/flex</td>
</tr>
<tr>
<td>src/toolsComm/antelope</td>
<td>src/libCom/yacc</td>
</tr>
<tr>
<td align="right">src/dbStatic/alarm.h<br>.../alarmString.h</td>
<td>src/libCom/misc/</td>
</tr>
<tr>
<th colspan="2">IOC Core Components</th>
</tr>
<tr>
<td>src/bpt</td>
<td>src/ioc/bpt</td>
</tr>
<tr>
<td>src/db</td>
<td>src/ioc/db</td>
</tr>
<tr>
<td>src/dbStatic</td>
<td>src/ioc/dbStatic</td>
</tr>
<tr>
<td>src/dbtools</td>
<td>src/ioc/dbtemplate</td>
</tr>
<tr>
<td>src/misc</td>
<td>src/ioc/misc</td>
</tr>
<tr>
<td>src/registry</td>
<td>src/ioc/registry</td>
</tr>
<tr>
<td>src/rsrv</td>
<td>src/ioc/rsrv <a href="#rsrv">1</a></td>
</tr>
<tr>
<th colspan="2">Standard Record Definitions</th>
</tr>
<tr>
<td>src/dev/softDev</td>
<td>src/std/dev</td>
</tr>
<tr>
<td>src/rec</td>
<td>src/std/rec</td>
</tr>
<tr>
<td>src/softIoc</td>
<td>src/std/softIoc</td>
</tr>
<tr>
<th colspan="2">Channel Access</th>
</tr>
<tr>
<td>src/ca</td>
<td>src/ca/client</td>
</tr>
<tr>
<td>src/catools</td>
<td>src/ca/client/tools</td>
</tr>
<tr>
<td>src/cap5</td>
<td>src/ca/client/perl</td>
</tr>
<tr>
<td>src/gdd</td>
<td>src/ca/legacy/gdd</td>
</tr>
<tr>
<td>src/cas</td>
<td>src/ca/legacy/pcas</td>
</tr>
<tr>
<td>src/excas</td>
<td>src/ca/legacy/pcas/ex</td>
</tr>
<tr>
<th colspan="2">User Templates</th>
</tr>
<tr>
<td>src/makeBaseApp</td>
<td>src/template/base</td>
</tr>
<tr>
<td>src/makeBaseExt</td>
<td>src/template/ext</td>
</tr>
<tr>
<th colspan="2">Dispersed</th>
</tr>
<tr>
<td rowspan="3">src/util <a href="#util">2</a></td>
<td>src/ca/client</td>
</tr>
<tr>
<td>src/ca/client/test</td>
</tr>
<tr>
<td>src/libCom/log</td>
</tr>
<tr>
<td rowspan="2">src/as <a href="#as">3</a></td>
<td>src/libCom/as</td>
</tr>
<tr>
<td>src/ioc/as</td>
</tr>
</tbody></table>
<p><a name="rsrv">1</a>
RSRV is built as part of dbCore due to its tight (bidirectional) coupling
with the other database code.</p>
<p><a name="util">2</a>
The contents for src/util/ moved to three locations. The caRepeater init script
was moved to src/ca/client/. ca_test is now in src/ca/client/test/.
The iocLogServer was moved into the same directory (src/libCom/log) as
the log client code.</p>
<p><a name="as">3</a>
The Access Security code has been divided, with the parts not related to the
database (lexer/parser and trap registration) becoming part of libCom.
The remaining components are included in the dbCore library</p>
<h3>
Moved src/RTEMS/base directory</h3>
<p>
These files are now found under src/RTEMS.</p>
<h3>
Removed 3.13 compatibility</h3>
<p>
Removed the 3.13 &lt;top&gt;/config directory and build compatibility rules and
variables, and various conversion documents.</p>
</body>
</html>