git-svn-id: https://subversion.xor.aps.anl.gov/synApps/areaDetector/trunk@14918 dc6c5ff5-0b8b-c028-a01f-ffb33f00fc8b
947 lines
59 KiB
HTML
Executable File
947 lines
59 KiB
HTML
Executable File
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>areaDetectorReleaseNotes.html</title>
|
|
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
|
|
</head>
|
|
<body>
|
|
<h1 style="text-align: center">
|
|
areaDetector Release Notes</h1>
|
|
<h2 style="text-align: center">
|
|
Release 1-8 (XX-March-2012)</h2>
|
|
<ul>
|
|
<li>Drivers
|
|
<ul>
|
|
<li>New Andor driver. Orginal version by Matt Pearson from Diamond Light Source. This
|
|
driver supports both USB and PCI cameras from Andor. It runs on 32-bit and 64-bit
|
|
Linux and 32-bit and 64-bit Windows.</li>
|
|
<li>Perkin Elmer driver. Many new features:
|
|
<ul>
|
|
<li>Added support for detectors with Gigabit Ethernet interfaces (e.g. model 0822).</li>
|
|
<li>Added support for 64-bit Windows.</li>
|
|
<li>Added support for binning. The allowed binning modes (X,Y) are (1,1), (2,2), (4,4),
|
|
(1,2), and (1,4).</li>
|
|
<li>Added shutter control for EPICS shutter. Shutter opens and closes automatically
|
|
when collecting gain images or normal images, and always closes before collecting
|
|
offset images.</li>
|
|
<li>Added new records (PECurrentOffsetFrame, PECurrentGainFrame) to provide operator
|
|
feedback when acquiring offset and gain images. The PEAcquireOffset and PEAcquireGain
|
|
records have been changed to "busy" records so that clients can use ca_put_callback
|
|
to wait for the operation to complete.</li>
|
|
<li>Added an additional ImageMode="Average". In this mode NumImages frames are averaged
|
|
in the Perkin Elmer driver. This is useful for long acquisition times, because the
|
|
maximum acquisition time that the hardware supports in Internal trigger mode is
|
|
5 seconds. NOTE: There is a bug in the current Perkin Elmer SDK library which causes
|
|
a memory leak if the number of frames to average is 2^N (2,4,8,16, etc.) on optical
|
|
interface frame grabbers. This problem can be worked around by average a different
|
|
number of frames (7 rather than 8 for example). It will be fixed in the next release
|
|
of their SDK.</li>
|
|
<li>Removed the maxSizeX, maxSizeY, and dataType arguments from the PerkinElmerConfig()
|
|
command. These values are now determined automatically. This means that startup
|
|
scripts need to be modified.</li>
|
|
<li>Improved performance of driver, eliminated unneeded copying of data, reduced lines
|
|
of code by 10%.</li>
|
|
<li>Demonstrated ability to stream data continuously to local disk at 15 frames/s
|
|
at 2048x2048 (120 MB/s) and 30 frames/s at 1024x1024 (60 MB/s). These tests were
|
|
done on a Windows 7 64-bit machine with 2 disk drives (SAS, 15K RPM, RAID 0).</li>
|
|
</ul>
|
|
</li>
|
|
<li>Pilatus driver. Thanks to Matt Pearson from Diamond Light Source for most of these
|
|
changes.
|
|
<ul>
|
|
<li>New records for detector temperature and humidity, and a driver thread to poll
|
|
these values.</li>
|
|
<li>Read back the actual value of the threshold.</li>
|
|
<li>Read the Tau value when setting the exposure time.</li>
|
|
<li>New record with TVX version number, read at startup.</li>
|
|
<li>Disabled unused records from ADBase.template.</li>
|
|
<li>Fixed 2 minor bugs. It was reporting a read timeout error from camserver each
|
|
time an image was acquired. Fixed a problem if the user aborted an acquisition twice
|
|
in a row.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Prosilica driver. Added support for the following:
|
|
<ul>
|
|
<li>FrameStartTriggerDelay: Delay between trigger signal and actual frame start.</li>
|
|
<li>FrameStartTriggerEvent: Edge or level of signal to use for trigger.</li>
|
|
<li>FrameStartTriggerOverlap: Trigger handling when the previous frame is incomplete.</li>
|
|
<li>FrameStartTriggerSoftware: Software trigger when TriggerMode=Software.</li>
|
|
<li>PacketSize: When connecting to the camera the driver has always automatically
|
|
found the largest packet size that the camera and IOC computer support. This new
|
|
read-only record provides the actual packet size.</li>
|
|
<li>Fixed bug which arose if MinX + SizeX was greater than MaxSizeX (same for Y).
|
|
This is an invalid geometry, but their library does not return an error status,
|
|
and silently reduces SizeX. However, it has a subtle bad side-effect; subsequent
|
|
attempts to change the AcquireTime or AcquirePeriod do not return errors, but they
|
|
do not take effect until the IOC is rebooted! Fixed the problem by reducing SizeX
|
|
or SizeY if the requested region would be larger than the chip.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Firewire Windows driver. Added READOUT_TIME parameter. The sum of the AcquireTime
|
|
plus the READOUT_TIME controls how long to wait before a frame timeout occurs. Previously
|
|
a hardcoded value of 1.0 second was used, which was too short for some slow cameras.</li>
|
|
<li>URL driver. Bug fix to prevent infinite loop if there is an error reading the
|
|
image. Thanks to Wang Xiaoqiang from PSI for finding this problem.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Plugins
|
|
<ul>
|
|
<li>NDPluginFile.
|
|
<ul>
|
|
<li>Added 2 new records, WriteStatus and WriteMessage to display status of file writing
|
|
operations. Write status is a bi record with values "WriteOK" (0) and "WriteError"
|
|
(1). WriteMessage is a waveform record containing a string with any error messages.
|
|
The NDFilePlugin base class now updates these records for each file open or file
|
|
write operation. All of the file plugin medm screens have been updated to display
|
|
these new PVs.</li>
|
|
</ul>
|
|
</li>
|
|
<li>NDFileTIFF.
|
|
<ul>
|
|
<li>Previously TIFF files were being written without the SampleFormat TIFF tag. This
|
|
meant that the file did not distinguish between signed and unsigned integers, and
|
|
floating point TIFF files were not supported. Some readers, notably the Python Imaging
|
|
Library (PIL), do not recognize 32-bit TIFF files unless they contain the SampleFormat
|
|
tag.</li>
|
|
<li>Added the SampleFormat TIFF tag, and added support for 32-bit and 64-bit floating
|
|
point arrays. The plugin can now write TIFF files with any NDArray type (Int8, UInt8,
|
|
Int16, UInt16, Int32, UInt32, Float32, and Float64). IDL can read TIFF files with
|
|
all of these data types. ImageJ can read all except Float64. PIL can read all except
|
|
Int8, UInt32, and Float64.</li>
|
|
</ul>
|
|
</li>
|
|
<li>NDFileNexus.
|
|
<ul>
|
|
<li>Fixed a bug which caused the plugin to crash with the example iocSimDetector/NexusTemplate.xml
|
|
template file. It could use a null object pointer in some circumstances.</li>
|
|
<li>Fixed a bug which cause the plugin to use stale attributes when creating files
|
|
in Stream or Capture modes. Thanks to Kevin Peterson for this fix.</li>
|
|
<li>Fixed a bug that caused it to ignore the NDArrayPort PV, so the array source could
|
|
not be changed from that in the startup script (i.e. change to ROI1, etc.).</li>
|
|
<li>Increased the stack size for this plugin in iocBoot/commonPlugins.cmd, because
|
|
it was crashing with a stack overflow on windows-x64.</li>
|
|
</ul>
|
|
</li>
|
|
<li>NDPluginProcess
|
|
<ul>
|
|
<li>Renamed the filter type "RecursiveSum" to "Average", which is a more accurate
|
|
description.</li>
|
|
<li>Added new filter type "Sum" which is a true sum of NumFilter arrays.</li>
|
|
<li>Added new bo record, AutoResetFilter. If enabled then when NumFiltered=NumFilter
|
|
the filter automatically resets. This can be very useful when using the Average
|
|
or Sum filter modes. As soon as N sums or averages have been performed the filter
|
|
resets so the next sum or average is computed.</li>
|
|
<li>Added new bo record, FilterCallbacks with choices "Every array" and "Array N only".
|
|
"Every array" selects the previous behavior, where the plugin does callbacks for
|
|
every incoming array it receives. "Array N only" causes the plugin to only do callbacks
|
|
when NumFiltered=NumFilter. This can be very useful when using the Sum or Average
|
|
filter modes. Callbacks are then done only when N sums or averages have been performed.
|
|
If used with AutoResetFilter then as input arrays arrive the plugin will continually
|
|
output one summed or averaged array after every N incoming arrays.</li>
|
|
<li>Improved the logic of the SaveBackground and SaveFlatField parameters. Previously
|
|
they saved the <i>next</i> frame received after the Save request as the background
|
|
or flat field. This behavior was not what was documented, expected or desired. The
|
|
documented behaviour is to save the <i>current frame</i> when the SaveBackground
|
|
or SaveFlatField is done, and the driver has been changed to do this.</li>
|
|
<li>Set default values for the recursive filter coefficients in the template file
|
|
for recursive filter with scale factors of 1.0. The previous defaults were 0.0 for
|
|
all coefficients, which produced all zero output arrays. Selecting a predefined
|
|
filter did not fix this problem, because that does not set the values of OScale
|
|
and FScale.</li>
|
|
<li>Fixed errors in the template file for the readback values of the filter coefficients.
|
|
They had DTYP=asynInt32, corrected to asynFloat64.</li>
|
|
</ul>
|
|
</li>
|
|
<li>NDPluginStats
|
|
<ul>
|
|
<li>Time-series arrays
|
|
<ul>
|
|
<li>Changed code so that time series are collected internally in the plugin, rather
|
|
than using callbacks to the fastSweep device support for the mca record. This is
|
|
more efficient, and eliminates the dependence of the areaDetector module on the
|
|
mca module. </li>
|
|
<li>NOTE: This change is not backwards compatible. Clients that are collecting time-series
|
|
data with the mca record will need to be modified to use the new PVs that are now
|
|
provided in this plugin.</li>
|
|
<li>Time series data is now available for all basic statistics and centroid statistics.
|
|
Previously it was only available for Total, Net, and Max.</li>
|
|
<li>New PVs to control time series collection and provide status on it.</li>
|
|
<li>New medm screen, NDTimeSeries.adl, to display time series data.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Fixed bug that degraded driver performance in some circumstances. The plugin was
|
|
not releasing the lock during come computationally expensive operations, which would
|
|
cause the driver to wait when queueing the next array during a callback.</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>Support libraries. The static Linux support libraries provided in R1-7 were built
|
|
on a Fedora Core 9 system (gcc 4.3.0) for 32-bit linux-x86, and on a Fedora Core
|
|
14 system (gcc 4.5.1) for 64-bit linux-x86_64. Problems arose when trying to build
|
|
with these libraries or to run the pre-built binaries on older Linux systems, e.g.
|
|
those with gcc 4.1.2. These were fixed as follows:
|
|
<ul>
|
|
<li>The Prosilica libPvAPI.a file had been taken from the AVT gcc 4.3 directory. This
|
|
was replaced with the one from the gcc 4.1 directory because the 4.3 version requires
|
|
a newer version of GLIBCXX.</li>
|
|
<li>The HDF5 library had been built with the default -std=c99. This caused the function
|
|
isoc99_sscanf() to be called instead of sscanf(), and the former function does not
|
|
exist on older Linux systems. The HDF library was rebuilt with -std=gnu89 on 32-bit
|
|
and 64-bit Linux.</li>
|
|
<li>libGraphicsMagic++.a on 64-bit was invoking std::_List_mode_base functions that
|
|
do not exist in earlier versions of GLIBCXX. GraphicsMagick was rebuilt on an older
|
|
Linux system (gcc 4.2.1) for 64-bit Linux.</li>
|
|
<li>All of the prebuilt 64-bit binaries were recompiled and relinked on an older Linux
|
|
system (gcc 4.2.1).</li>
|
|
</ul>
|
|
</li>
|
|
<li>Renamed netCDFSrc/include to netCDFSrc/inc to work around a bug in make 3.82 on
|
|
Cygwin. </li>
|
|
<li>medm screens
|
|
<ul>
|
|
<li>New medm screen, commonPlugins.adl. This screen provides an overview of the status
|
|
of all the common plugins, and allows one to enable/disable and change the asyn
|
|
source port. ADPlugins.adl which is included on all the detector medm screens now
|
|
contains an "All" button to load commonPlugins.adl.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Miscellaneous
|
|
<ul>
|
|
<li>Fixes to commonDriverMakefile to build on Darwin (OS X).</li>
|
|
<li>Removed dependence of areaDetector on the synApps mca module. The mca module was
|
|
being used only to collect time-series data of the statistics in the NDPluginStats
|
|
plugin. NDPluginStats has been changed to collect this time-series itself, using
|
|
only standard waveform records with asyn device support.</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<h2 style="text-align: center">
|
|
Release 1-7 (09-August-2011)</h2>
|
|
<ul>
|
|
<li>General
|
|
<ul>
|
|
<li>Added support for Mac OS X (Darwin). Thanks to Eric Norum and Lewis Muir for this.</li>
|
|
<li>Added support for 64-bit Windows, windows-x64.</li>
|
|
<li>Replaced FTVL=UCHAR with FTVL=CHAR in all waveform records, so they can be written
|
|
to with dbpf from the IOC shell.</li>
|
|
<li>Improved XML files for NDArray attributes and Nexus template files. Added a shell
|
|
script to validate XML files. <strong>Note</strong>: the attribute values for datatype
|
|
and dbrtype have been case-insensitive in the past. In the next release of areaDetector
|
|
this will be changed to <strong>require</strong> uppercase for these values. The
|
|
next release will also change the syntax of the <code>Attribute</code> element by
|
|
moving the content of the <code>type</code> attribute to become the element name.
|
|
For example the line:<br />
|
|
<code><Attribute name="AcquireTime" type="EPICS_PV" source="13SIM1:cam1:AcquireTime"
|
|
dbrtype="dbr_native" description="Camera acquire time"/></code><br />
|
|
must be changed to<br />
|
|
<code><EPICS_PV name="AcquireTime" source="13SIM1:cam1:AcquireTime" dbrtype="DBR_NATIVE"
|
|
description="Camera acquire time"/></code><br />
|
|
and<br />
|
|
<code><Attribute name="CameraManufacturer" type="PARAM" source="MANUFACTURER" datatype="string"
|
|
description="Camera manufacturer"/></code><br />
|
|
must be changed to<br />
|
|
<code><PARAM name="CameraManufacturer" source="MANUFACTURER" datatype="STRING"
|
|
description="Camera manufacturer"/></code><br />
|
|
This change will make it much easier to validate the XML files. Thanks to Pete Jemian
|
|
for these changes.</li>
|
|
<li>On Windows if NDFilePath has a trailing '\' then preserve it, else add a '/' character
|
|
if one is not present.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Drivers
|
|
<ul>
|
|
<li>New URL driver which reads images from any URL, including Web cameras and Axis
|
|
video servers. This driver uses GraphicsMagick to read the images, and can thus
|
|
handle a large number of image formats (JPEG, TIFF, PNG, etc.).</li>
|
|
<li>New driver for Bruker BIS (Bruker Instrument Service) detectors. There was a preliminary
|
|
version of this driver in the apex2Src directory in R1-6. It is now fully functional.
|
|
and should work with any BIS detector, not just the Apex2.</li>
|
|
<li>New driver for Photonic Sciences Ltd. (PSL) detectors. This driver currently can
|
|
do everything except read the data back from the detector. That capability needs
|
|
to be added, which requires access to a PSL detector for development and testing.</li>
|
|
<li>Simulation driver. Added additional simulation mode for Gaussian peaks. John Hammonds
|
|
added this feature.</li>
|
|
<li>Changed the setShutter() function in ADDriver.h to be a virtual function, which
|
|
it should have been all along. The base-class implementation for an EPICS shutter
|
|
is now used by default. Changed the drivers to use the virtual function.</li>
|
|
<li>Initialized ADAcquire to 0 in ADDriver::ADDriver. In R1-6 ADAcquire was not initialized,
|
|
and if it had a non-zero value at iocInit then the IOC could crash with some drivers,
|
|
e.g. simDetector.</li>
|
|
<li>Pilatus driver.
|
|
<ul>
|
|
<li>Added support for camserver saving data in the CBF file format, which is ~4X smaller
|
|
than TIFF, and for additional header information in the files for crystallography.
|
|
Thanks to Lewis Muir for these additions. </li>
|
|
<li>Set FullFilename_RBV for each file in a multi-image sequence, which was not previously
|
|
being done.</li>
|
|
<li>Several changes from Emma Shepherd at DLS to improve error handling.</li>
|
|
<li>Added GapFill record to control what value camserver puts in the data files in
|
|
the gaps between modules in multi-element Pilatus detectors.</li>
|
|
<li>Added ThresholdAutoApply and ThresholdApply records. These allow only sending
|
|
the gain and threshold energy once to camserver, rather than each time either is
|
|
changed. This can speed operations significantly on larger detectors. For example,
|
|
on the 6M it takes 78 seconds for camserver to execute the SetThreshold command.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Prosilica driver.
|
|
<ul>
|
|
<li>Added support for opening cameras by IP address or IP DNS name, in addition to
|
|
UniqueID. This allows communicating with cameras that are not on the local subnet.
|
|
The change is backwards compatible with existing iocsh startup scripts.</li>
|
|
<li>Added new records PSByteRate and PSByteRate_RBV that control and read the StreamBytesPerSecond
|
|
parameter in the Prosilica PvAPI driver. This allows limiting the bandwidth that
|
|
a camera uses. It also allows operation of GigE cameras on non-Gigabit Ethernet
|
|
networks.</li>
|
|
<li>Added new parameter, maxPvAPIFrames, to the prosilicaConfig command in the startup
|
|
script. This parameter controls how many frame buffers are allocated in the PvAPI
|
|
driver. This is the last parameter in the prosilicaConfig command, and if it is
|
|
absent the default value of 2 is used, which is sufficient in most circumstances.
|
|
However, with very high frame rates or busy IOCs increasing this value can reduce
|
|
dropped frames. </li>
|
|
<li>Removed support for writing TIFF files using the driver library. This was a problem
|
|
because their driver uses an incompatible version of libtiff that conflicts with
|
|
the new version used by GraphicsMagick. The driver TIFF writer had no advantage
|
|
over using the NDFileTIFF and NDFileMagick plugins, which have more features and
|
|
can run in their own threads.</li>
|
|
<li>Fixed a bug that could cause a blue-screen crash on Windows 7. The new version
|
|
of their library requires clearing a structure to 0 before using it.</li>
|
|
<li>Send command to stop acquistion when first connecting to a camera. This fixes
|
|
a problem when connecting to CMOS cameras that were left in the acquiring state
|
|
when the IOC exited.</li>
|
|
<li>Upgraded to version 1.24 of the AVT SDK, and 1.20 of the Windows filter driver.
|
|
Users should install the latest Sample Viewer and filter driver 1.20 on Windows
|
|
machines so that the areaDetector application can use the filter driver. The filter
|
|
driver version in areaDetector must match the one installed on Windows in order
|
|
to use it.</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>Plugins
|
|
<ul>
|
|
<li>NDPluginFile: Added a new record called DeleteDriverFile. This record allows the
|
|
file writing plugins to delete the "original" file that the driver created for that
|
|
array. This can be useful for detectors that must write the data to disk in order
|
|
for the areaDetector driver to read it back. Once a file-writing plugin has rewritten
|
|
the data in another format it can be desireable to then delete the original file.
|
|
The file is only deleted if the following are all true:
|
|
<ol>
|
|
<li>The DeleteDriverFile record is "Yes".</li>
|
|
<li>The file plugin has successfully written a new file.</li>
|
|
<li>The array contains an attribute called "DriverFileName" that contains the full
|
|
file name of the original file. The driver attributes XML file should contain a
|
|
line like the following:<br />
|
|
<tt><Attribute name="DriverFileName" type="PARAM" source="FULL_FILE_NAME" datatype="string"
|
|
description="Driver file name"/></tt><br />
|
|
</li>
|
|
</ol>
|
|
</li>
|
|
<li>NDPluginFile: Added support for getting the file name and file number from array
|
|
attributes rather than from the normal EPICS PVs. Having the file information come
|
|
from the array allows the driver to control which plugin saves a particular array.
|
|
For example, there may be two file writing plugins active; the first saves the flat
|
|
field files for a tomography experiment, and the second saves the normal projections,
|
|
each streaming data to a separate file. The driver knows which files are flat fields
|
|
and which are normal projections, and adds the appropriate attributes to control
|
|
which plugin saves each array. Thanks to Ulrik Pedersen for this addition.</li>
|
|
<li>NDPluginFile: Added XML Schema file (<tt>iocBoot/attributes.xsd</tt>) to allow
|
|
syntax validation of an NDArray driver attributes XML file.</li>
|
|
<li>New file writing plugin, NDFileHDF5. This plugin writes HDF5 files with the native
|
|
HDF5 API, unlike the NeXus plugin which uses the NeXus API. It supports 3 types
|
|
of compression. Thanks to Ulrik Pedersen at Diamond Light Source for providing this
|
|
plugin.</li>
|
|
<li>New file writing plugin, NDFileMagick. This uses GraphicsMagick to write files,
|
|
and can write in dozens of file formats, including JPEG, TIFF, PNG, PDF, etc.</li>
|
|
<li>Fixed problem with NDPluginTransform. It was holding the lock while it did computationally
|
|
intensive tasks. This slowed down the driver from which the plugin was getting its
|
|
data, because the driver was forced to wait to queue the next frame until the plugin
|
|
was done processing. The new version behaves correctly, dropping frames when the
|
|
plugin cannot keep up, rather than slowing down the driver.</li>
|
|
<li>NDPluginColorConvert. Added support for false color when converting 8-bit mono
|
|
to RGB1, RGB2, or RGB3. Thanks to Tom Cobb for this addition.</li>
|
|
<li>NDPluginStats. Removed duplicate record for MeanValue_RBV from NDStats.template.</li>
|
|
<li>NDFileNetCDF. Upgraded from netCDF 3.6.2 to netCDF 4.1.3. Fixed bug which was
|
|
causing crashes when when writing files >2GB on win32-x86. netCDF files of any size
|
|
can now be written on all platforms.</li>
|
|
<li>NDFileNexus. This is now built from the NeXus source code on all platforms, rather
|
|
than including prebuilt binaries in nexusSupport. Upgraded from Nexus 4.2.0 to 4.2.1,
|
|
which fixes a stack overflow problem with the default stack size on win32-x86. Removed
|
|
support for HDF4 and XML files, only HDF5 is now supported. Thanks to Jeff Gebhardt
|
|
for initially doing this.</li>
|
|
<li>NDFileNexus: Added Schematron file (<tt>iocBoot/template.sch</tt>) to allow syntax
|
|
validation of a NeXus template XML file.</li>
|
|
<li>NDFileNexus: Now recognizes all current NeXus base class names (was missing some
|
|
newer base classes such as <tt>NXcollection</tt>).</li>
|
|
</ul>
|
|
</li>
|
|
<li>Viewers
|
|
<ul>
|
|
<li>ImageJ EPICS_AD_Viewer. Additional sanity check in code to see if EPICS PVs are
|
|
connected, prevent dereferencing a null pointer. Thanks to Lewis Muir for this.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Internals
|
|
<ul>
|
|
<li>Greatly simplified the Makefiles in each driver source directory by having them
|
|
each include a common Makefile.</li>
|
|
<li>Greatly simplified the dbd files in each driver source directory by having them
|
|
each include a common dbd file.</li>
|
|
<li>Renamed pluginSupport.dbd to NDPluginSupport.dbd, and made individual DBD files
|
|
for each plugin to make it easy for external software to use only a subset of the
|
|
plugins.</li>
|
|
<li>Removed nexusSupport directory, which had previously contained prebuilt versions
|
|
of the NeXus library, as well as prebuilt versions of the HDF5 support library.
|
|
This was replaced with a NeXusSrc directory which builds the NeXus library from
|
|
source code on all platforms. This is currently version NeXus 4.2.1. A new support
|
|
directory, hdf5Support, was added which contains the header files and prebuilt libraries
|
|
for HDF5. This is currently version 1.8.7 of HDF5.</li>
|
|
<li>Use CYCGWIN_RPC_LIB variable when building on Cygwin to allow either Cygwin 1.5.x
|
|
or 1.7.x.</li>
|
|
<li>Minor changes to many drivers and plugins to allow building dynamically (DLLs)
|
|
on WIN32.</li>
|
|
<li>Added methods to the NDArray class to provide access to maxBuffers, numBuffers,
|
|
etc.</li>
|
|
<li>Removed JPEG and TIFF libraries on win32-x86, they are not needed because the
|
|
libraries are part of GraphicsMagick.</li>
|
|
<li>Changed Makefiles so they will work correctly with the -debug variant on the target
|
|
archs.</li>
|
|
<li>Install ADApp/Db/*.template files as part of build process.</li>
|
|
<li>Changed NDArrayPool so that it will free the memory in NDArrays in the pool to
|
|
permit allocating one with sufficient memory to satisfy an alloc() request. Thanks
|
|
to Tim Madden for the initial version of this.</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<h2 style="text-align: center">
|
|
Release 1-6 (20-May-2010)</h2>
|
|
<ul>
|
|
<li>General
|
|
<ul>
|
|
<li>Converted to be compatible with asynPortDriver in asyn R4-13, which changes parameter
|
|
handling.</li>
|
|
<li>Changes to support 64-bit architectures, including linux-x86_64. This also required
|
|
changes to the synApps modules on which areaDetector applications depend (autosave,
|
|
busy, etc.)</li>
|
|
<li>Changes in Makefiles to support the win32-x86-debug architecture.</li>
|
|
<li>Added status parameter to indicate if the specified file path (NDFilePath) exists.
|
|
Added a record to NDFile.template and a status indicator to all medm file saving
|
|
screens.</li>
|
|
<li>Append a trailing '/' character to file path (NDFilePath) if one is not present.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Drivers
|
|
<ul>
|
|
<li>Fixed a bug in the Roper driver. There was a buffer overflow problem in the function
|
|
that converts C strings to Windows BSTR strings. This would cause the IOC to crash
|
|
when saving SPE files with Comment PVs longer than 40 characters.</li>
|
|
<li>Many fixes to Windows Firewire driver:
|
|
<ul>
|
|
<li>Added dropped frame counter.</li>
|
|
<li>Fixed timeout problem with acquire times > 1 second.</li>
|
|
<li>Fixed logic when acquisition was turned off</li>
|
|
<li>Fixed problem with constructor when it encountered a minor error; was causing
|
|
capture thread not to be started for some cameras.</li>
|
|
<li>Implemented AcquireTime parameter, previously the time could only be changed via
|
|
a Firewire feature.</li>
|
|
<li>Fixed bug when setting a feature value in non-absolute mode after it was set in
|
|
absolute mode.</li>
|
|
<li>Removed the ability to change video modes, formats or rates when acquiring because
|
|
it is too complex to stop and wait for it to be done.</li>
|
|
<li>Report details for all supported Firewire "features" in report() function, called
|
|
by asynReport() and dbior().</li>
|
|
</ul>
|
|
</li>
|
|
<li>pvCam driver. Fixed problem with exposure time being rounded to integer. Add PVs
|
|
to provide version information for software and firmware where possible. Add PVs
|
|
to provide serial numbers where possible. Perform checks on parameters that are
|
|
not available for all cameras. </li>
|
|
<li>ADSC driver. Fixed a bug where it would not correctly load the per-image parameters
|
|
for the first image in a dataset if they were changed after the acquisition was
|
|
started but before the first image was taken. Added ability to write simulated data
|
|
to disk in the simulation driver.</li>
|
|
<li>Pilatus driver. Increased the timeout for the SetThreshold command to camserver
|
|
from 3 seconds to 90 seconds, because it takes almost this long to execute on the
|
|
Pilatus 6M.</li>
|
|
<li>marCCD driver. Added support for baseline stabilization, which is done with the
|
|
"set stability" and "get stability" remote commands. Baseline stabilization is an
|
|
extra-cost option for marCCD, so this command only has any affect if that option
|
|
is present. But all versions of marCCD understand the command remote command syntax,
|
|
so there is no problem if the option is not installed.<br />
|
|
Changed the TwoTheta record from a stringout to ao, and this value is now always
|
|
sent with the "header" remote command. This requires that the string "theta_display_name
|
|
TwoTheta" be present in one of the marCCD configuration files that gets loaded,
|
|
typically in goniostat_none.conf or goniostat_sw.conf.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Plugins
|
|
<ul>
|
|
<li>NDPluginROI. Major rewrite. Previously the ROI plugin supported multiple ROIs,
|
|
performed statistics calculations, and highlighted the ROIs. The new version is
|
|
much simpler; it supports only a single ROI, and does not calculate statistics or
|
|
do highlighting. Those functions have been moved to new plugins. One new function
|
|
has been added, the ability to divide the array by a scale factor, which is useful
|
|
for avoiding overflow when binning. Fixed problem when a single color is extracted
|
|
from a color image; it now removes the unused dimension and changes the colorMode
|
|
to mono.</li>
|
|
<li>NDPluginColorConvert. Added conversions from mono to RGB1, RGB2, and RGB3, and
|
|
from RGB1, RGB2, and RGB3 to mono. Previously this plugin only built on Linux and
|
|
WIN32. Now it builds and does all conversions except Bayer on all architectures.
|
|
Bayer conversion is restricted to Linux and WIN32.</li>
|
|
<li>Added new NDPluginStats plugin. This plugin calculates statistics on an array.
|
|
It replaces the statistics calculations that were previously performed in the ROI
|
|
plugin. It adds new statistics, including the centroid position and width. It also
|
|
computes X and Y profiles, including average profiles, profiles at the centroid
|
|
position, and profiles at a user-defined cursor position. Thanks to Stephen Mudie
|
|
from the Australian Synchrotron, John Dobbins from Cornell, and Huijuan Xu from
|
|
Brookhaven National Lab for the initial versions of these calculations.</li>
|
|
<li>Added new NDPluginProcess plugin. This plugin does arithmetic processing on arrays:
|
|
<ul>
|
|
<li>Background subtraction.</li>
|
|
<li>Flat field normalization.</li>
|
|
<li>Offset and scale.</li>
|
|
<li>Low and high clipping.</li>
|
|
<li>Recursive filtering in the time domain.</li>
|
|
<li>Conversion to a different output data type.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Added new NDPluginOverlay plugin. This plugin adds graphic overlays to an image.
|
|
It replaces the "Highligh ROIs" function that was previously provided in the ROI
|
|
plugin. But it is much more general, and can be used to display not only ROIs, but
|
|
multiple cursors, user-defined boxes, etc.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Example IOCs
|
|
<ul>
|
|
<li>Greatly simplified the st.cmd and auto_settings.req files for each IOC. This was
|
|
done by creating two new files: iocBoot/commonPlugins.cmd and iocBoot/commonPlugin_settings.req.
|
|
These files define a common set of plugins that are loaded for all example IOCs.
|
|
They load all of the plugins except the NDPluginStdArrays plugin, because that plugin
|
|
needs to have its data type and waveform size matched to the specific detector.</li>
|
|
</ul>
|
|
</li>
|
|
<li>medm screens
|
|
<ul>
|
|
<li>Created medm screen "components" which are used in actual screens via the "composite
|
|
file" mechanism wherever possible. This simplifies the maintenance of the medm screens
|
|
for detectors and plugins.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Viewers
|
|
<ul>
|
|
<li>Fixed a bug in the ImageJ EPICS_AD_Viewer.java that required restarting the plugin
|
|
if it was told to start displaying before any frames had been acquired by the IOC.</li>
|
|
<li>Fixed bugs in the ImageJ EPICS_AD_Viewer.java that caused an exception when trying
|
|
to deference a null window pointer. Some of these bugs only became apparent when
|
|
running the latest version of ImageJ (1.43U) which will not work with previous releases
|
|
of EPICS_AD_Viewer.java.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Internals
|
|
<ul>
|
|
<li>Added new form of NDArrayPool::convert that only changed data type, does not take
|
|
dims argument.</li>
|
|
<li>Added more fields to the NDArrayInfo_t structure and the NDArray::getInfo method
|
|
to simplify handling color images.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Known problems. This release of areaDetector exposed two bugs in EPICS 3.14.11.
|
|
Links to the required patches can be found on the <a href="http://www.aps.anl.gov/epics/base/R3-14/11-docs/KnownProblems.html">
|
|
EPICS 3.4.11 Known Problems page</a>.
|
|
<ul>
|
|
<li>The epicsThreadOnceOsd problem can cause crashes with an "assert" error on IOC
|
|
initialization on Win32 systems.</li>
|
|
<li>The macLib problem can cause crashes or memory corruption when the commonPlugins.cmd
|
|
script expands lines with macros longer than 256 characters.</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<h2 style="text-align: center">
|
|
Release 1-5 (23-August-2009)</h2>
|
|
<ul>
|
|
<li>General
|
|
<ul>
|
|
<li>Added "attributes" to NDArray. Attributes are used to contain metadata about the
|
|
array. Each attribute has a name, description, datatype and value. Attributes can
|
|
be added by drivers or plugins, and travel with the array through the plugin chain,
|
|
and can ultimately be written with the array data to a file. Attributes can come
|
|
from driver or plugin parameters, or from EPICS PVs anywhere on the network.</li>
|
|
<li>Separated parameters and functions which are general to NDArray data (asynNDArrayDriver
|
|
base class) from those which are specific to areaDetector data (ADDriver base class).
|
|
This makes it easy and clean to use asynNDArray driver for future applications beyond
|
|
areaDetector, such as drivers for the XIA xMAP digital spectroscopy system.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Drivers
|
|
<ul>
|
|
<li>New driver for mar345 online image plate detector. This driver communicates via
|
|
a TCP/IP socket with the mar345dtb program, which must be used to control the detector.</li>
|
|
<li>New driver for Firewire IIDC/DCAM cameras under Windows. This driver uses the
|
|
Windows 1394 camera driver from Carnegie Mellon University.</li>
|
|
<li>New driver for the Perkin-Elmer amorphous silicon flat panel detectors. Thanks
|
|
to Brian Tieman and John Hammonds for this driver.</li>
|
|
<li>New driver for the Roper Scientific detectors using the PVCAM library. Thanks
|
|
to Brian Tieman for this driver.</li>
|
|
<li>Added support for color to the simulation detector driver. It now supports color
|
|
modes Mono, RGB1, RGB2 and RGB3.</li>
|
|
<li>Fixed 2 serious bugs in the Roper driver. It was not selecting ROI mode correctly.
|
|
When NumAcquisitions was > 1 it was only collecting the first frame correctly,
|
|
subsequent frames were the same as a first one. This has been isolated to a bug
|
|
in the WinView COM interface, and a workaround for the problem has been implemented.</li>
|
|
<li>Solved problem of Prosilica driver crashing on Linux. The problem was with the
|
|
SIGALARM signal handlers in EPICS base (R3.14.10 and earlier). There is a patch
|
|
for base to fix this problem, and this fix will be included in EPICS base 3.14.11.</li>
|
|
<li>Added an additional state, "Initializing" to DetectorState_RBV record.</li>
|
|
<li>Added support for ADTriggerMode=External in marCCD driver. In this mode the AcquireTime
|
|
is not used to stop acquisition; acquisition must be stopped by external software
|
|
settings Acquire=0. The AcquireTime PV is written to the marCCD TIFF file header
|
|
as usual. This allows an external timing control of the shutter but with the actual
|
|
exposure time written to the header. Fixed minor problem with marCCD driver. If
|
|
Acquire was set to Stop when it was not acquiring then the next time acquisition
|
|
was started it would stop immediately.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Plugins
|
|
<ul>
|
|
<li>Changed NDPluginFile from directly supporting netCDF to be a base class from which
|
|
actual file plugins derive.</li>
|
|
<li>Changed netCDF file support to be derived class inheriting from NDPluginFile.
|
|
Added support for writing NDArray attributes to the netCDF file.</li>
|
|
<li>New file plugin for TIFF files. The TIFF support includes 8, 16 and 32-bit integers.
|
|
It supports monochrome and color images, including all 3 color interleave modes
|
|
(RGB1, RGB2 and RGB3. areaDetector contains all required support files to build
|
|
and run the TIFF file plugin on win32-x86, cygwin-x86 and Linux. To build on other
|
|
operating systems it is necessary to install the libtiff and libtiffstatic packages.
|
|
Thanks to John Hammonds for the initial work on this plugin.</li>
|
|
<li>New file plugin for JPEG files. The JPEG support is limited to 8-bit integers,
|
|
but it supports monochrome and color images, including all 3 color interleave modes
|
|
(RGB1, RGB2 and RGB3). Control is provided for the JPEG quality (compression) on
|
|
a scale of 0 (worst) to 100 (best). areaDetector contains all required support files
|
|
to build and run the JPEG file plugin on win32-x86, cygwin-x86, and Linux. To build
|
|
on other operating systems it is necessary to install the libjpeg and libjpegstatic
|
|
packages. </li>
|
|
<li>New file plugin for NeXus HDF files written by John Hammonds. The NeXus support
|
|
has not been extensively tested, and is currently limited to writing a single array
|
|
per file. Support for multiple arrays per file will be added in a future release.
|
|
areaDetector contains all required support files to build and run the NeXus file
|
|
plugin on win32-x86, cygwin-x86 and Linux. To build on other operating systems it
|
|
is necessary to install the Nexus, HDF4, HDF5, and MXML packages. </li>
|
|
<li>Fixed bug in NDPluginFile: was not closing file properly when stream mode was
|
|
stopped before the requested number of frames.</li>
|
|
<li>Fixed logic problem with FileNumber record in NDFile.template database. The previous
|
|
logic that kept the ao record in sync with the ai record was causing the ao record
|
|
to process when it should not have been, causing an extra call to the driver.</li>
|
|
<li>Added an additional record to NDPluginBase.template, PluginType_RBV. All plugins
|
|
set this to a unique string to identify the plugin type.</li>
|
|
</ul>
|
|
</li>
|
|
<li>medm displays
|
|
<ul>
|
|
<li>Added new top-level detector-specific displays for Prosilica (prosilica.adl),
|
|
Firewire (firewire.adl), and simDetector (simDetector.adl). ADBase.adl should no
|
|
longer be used for these cameras.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Viewers
|
|
<ul>
|
|
<li>Added new ImageJ plugin viewer. This was begun by Tim Madden from APS, and now
|
|
includes support for all NDArray data types and color modes, i.e. Mono, RGB1 (pixel
|
|
interleave), RGB2 (row interleave) and RGB3 (plane interleave). The plugin directory
|
|
includes a plugin written elsewhere for reading and writing netCDF files, so ImageJ
|
|
can be used to display images and image sequences (movies) saved with the NDFileNetCDF
|
|
plugin. It also includes a dynamic profile plugin written elsewhere for line profiles
|
|
that update in real time as new images are displayed.</li>
|
|
<li>Improved IDL epics_ad_display viewer. The last image is now stored in the program,
|
|
and it is now redisplayed if the view mode is changed (TVSCL to iimage, etc.) or
|
|
if the display parameters are changed (autoscale, flip Y, minimum, maximum, etc.).</li>
|
|
</ul>
|
|
</li>
|
|
<li>Documentation
|
|
<ul>
|
|
<li>Documented the source code with comments that doxygen can process to produce HTML
|
|
documentation directly from the source. This provides documentation for each class,
|
|
as well as the class inheritance tree. Thanks to John Hammonds for starting this.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Internals
|
|
<ul>
|
|
<li>Moved the asynPortDriver base C++ class from the areaDetector module to the asyn
|
|
module. The asynPortDriver base class was modified slightly to make it more general.
|
|
In particular the constructor no longer hardcodes ASYN_CANBLOCK, ASYN_MULTIDEVICE,
|
|
epicsThreadPriorityMedium, and epicsThreadStackMedium. This requires that asyn R4-11
|
|
or later be used, and requires 2 additional arguments to the constructor (priority
|
|
and stackSize) for all areaDetector drivers and plugins.</li>
|
|
<li>Removed mutexId from asynPortDriver base class, and added lock() and unlock()
|
|
methods. This hides the implementation of the locking, since we might want to implement
|
|
these with asynManager->lockPort in the future.</li>
|
|
<li>Removed the file ADStdParams.h. Moved the definition of parameters that are general
|
|
to NDArray drivers into asynNDArrayDriver.h, and those that are specific to areaDetector
|
|
drivers into ADDriver.h.</li>
|
|
<li>Added an XML parser which is used for attribute definition files.</li>
|
|
<li>Fixed Makefiles to instantiate templates on vxWorks.</li>
|
|
<li>Moved createFileName() from ADDriver and NDPluginDriver to their base class, asynNDArrayDriver.</li>
|
|
<li>Changed colorMode and bayerPattern from being properties of NDArray to being attributes,
|
|
since they are not general to NDArray but are specific to areaDetector.</li>
|
|
<li>Added new method asynPortDriver::drvUserCreateParam, which simplifies drvUserCreate
|
|
code in all drivers and plugins.</li>
|
|
<li>Reduced number of files for all plugins and drivers. Previously there was an XXX.cpp,
|
|
drvXXX.h, and drvXXXEpics.c. The .h and .c files were used to keep the drivers and
|
|
plugins independent of EPICS IOC code. It was decided that that extra 2 files per
|
|
driver and plugin were not worth the added complexity. If it is desired to run drivers
|
|
and plugins outside of an IOC it could be done with conditional compilation of the
|
|
IOC dependent code, which is all at the end of the .cpp file. The iocsh commands
|
|
to create plugins have been changed from drvNDxxxConfigure to NDxxxConfigure, for
|
|
example drvNDStdArraysConfigure was changed to NDStdArraysConfigure. This requires
|
|
changes to all st.cmd files.</li>
|
|
<li>Renamed a few parameters and the drvInfo strings to logically separate things
|
|
that are general to NDArrays and things that are specific to area detectors. For
|
|
example, the drvInfo fields IMAGE_SIZE_xxx were renamed to ARRAY_SIZE_xxx, and IMAGE_COUNTER
|
|
was renamed to ARRAY_COUNTER.</li>
|
|
<li>Added call to epicsExit() to all driver IOC main programs. This is important for
|
|
allowing EPICS to exit cleanly. Without this on Linux it was often necessary to
|
|
kill the IOC with ^C, rather than just typing "exit".</li>
|
|
<li>NDStdArrays.template had the DTYP field of the waveform record changed from asynInt$(SIZE)ArrayIn
|
|
to asyn$(TYPE)ArrayIn. This was needed to allow it to be used with asynFloat32 and
|
|
asynFloat64 data types. This requires a change to all iocBoot st.cmd files that
|
|
load this template file.</li>
|
|
<li>Plugins can now add attributes to an NDArray, which means they can modify the
|
|
array and hence need to make a copy of it. This requires that NDArray->release()
|
|
must be called in the plugin itself, rather than in the NDPluginDriver base class
|
|
as was done previously.</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<h2 style="text-align: center">
|
|
Release 1-4 (30-January-2009)</h2>
|
|
<ul>
|
|
<li>Added a driver for Roper Scientific (i.e. Princeton Instruments and Photometrics)
|
|
detectors. It uses the Microsoft COM interface to control the WinView or WinSpec
|
|
programs. The previous support in the "ccd" module used a Visual Basic socket server
|
|
and an SNL program to accomplish this. It was hard to maintain, because Visual Basic
|
|
changed incompatibly from one release of Visual Studio to the next, and because
|
|
it could not be built with the EPICS build system. The new driver is written in
|
|
C++, and is built entirely with the EPICS build system. It also supports more WinView
|
|
features than the ccd version, and makes the detector data available via callbacks.
|
|
This allows detector data to be displayed with EPICS clients, permits ROI or other
|
|
plugin calculations, and allows saving in other file formats if desired. </li>
|
|
<li>Added support for color:
|
|
<ul>
|
|
<li>Added NDColorMode_t and NDBayerPattern_t to NDArray.h. Added new fields colorMode
|
|
and bayerPattern to NDArray structure to indicate the color mode.</li>
|
|
<li>Added new parameter ADColorMode to ADStdDriverParams.h and new record ColorMode
|
|
to ADBase.template.</li>
|
|
<li>Added new parameter NDColorMode and NDBayerPattern to NDPluginBase.h and new records
|
|
ColorMode and BayerPattern to NDPluginBase.template. Added these records to all
|
|
plugin medm screens.</li>
|
|
<li>Added a new plugin NDPluginColorConvert to convert colors. It currently converts
|
|
Bayer to RGB1, RGB2 or RGB3, RGB1 to RGB2 or RGB3 and RGB3 to RGB1 or RGB2.</li>
|
|
<li>The Prosilica driver now supports color. It supports RGB1 and Bayer directly,
|
|
and RGB2 and RGB3 through the NDPluginColorConvert plugin.</li>
|
|
<li>The NDPluginFile driver now saves the ColorMode and BayerPattern to the netCDF
|
|
files.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Added a Viewers directory. This contains an IDL viewer for displaying images.
|
|
The viewer supports color and several different viewing modes. It can be run for
|
|
free under the IDL Virtual Machine, and should work on any platform with a version
|
|
of ezcaIDL.so or ezcaIDL.dll built with EPICS 3.14. This directory also contains
|
|
IDL class libraries for accessing areaDetector. These classes are used by the viewers,
|
|
but can also be used for other IDL applications.</li>
|
|
<li>Added new parameters in ADStdDriverParams.h
|
|
<ul>
|
|
<li>ADTemperature</li>
|
|
<li>ADReadStatus</li>
|
|
<li>ADImageSizeZ</li>
|
|
<li>ADNumExposuresCounter</li>
|
|
<li>ADColorMode</li>
|
|
<li>ADPortNameSelf</li>
|
|
</ul>
|
|
</li>
|
|
<li>Pilatus driver
|
|
<ul>
|
|
<li>Send the imgpath command to camserver when the ADFilePath parameter is changed.
|
|
camserver will then create directories if they do not exist, whereas specifying
|
|
a path with non-existant directories in the "exposure" or acquire commands will
|
|
not create directories. </li>
|
|
</ul>
|
|
</li>
|
|
<li>Prosilica driver
|
|
<ul>
|
|
<li>Added support for color. </li>
|
|
<li>Added support for the external sync in, sync out and strobe signals. The sync
|
|
signals can also be used for general-purpose digital I/O.</li>
|
|
<li>Made minor changes to the code and to the build system to add support for running
|
|
the driver under Linux. There are some issues with this drivers use of SIGARLM via
|
|
Posix Timer library and EPICS signal handlers. I have made some minor modifications
|
|
to EPICS base 3.14.10 to allow the IOC to run. Prosilica is working on a new version
|
|
of their driver that should fix these issues, but it is not yet working. The prebuilt
|
|
binary version of this release of areaDetector includes the fixes to EPICS base
|
|
and does work satisfactorily.</li>
|
|
</ul>
|
|
</li>
|
|
<li>NDPluginROI
|
|
<ul>
|
|
<li>Fixed bug with missing roi argument to setIntegerParam call, some parameters not
|
|
updating correctly.</li>
|
|
<li>Added maxBuffers argument to constructor and to iocsh configuration command. This
|
|
was a serious oversight in the previous versions. maxROIs was being used where the
|
|
missing maxBuffers parameter should have been used. Unfortunately it requires a
|
|
new argument to the iocsh drvNDROIConfigure command, which is not backwards compatible
|
|
with previous startup scripts.</li>
|
|
</ul>
|
|
</li>
|
|
<li>NDArray
|
|
<ul>
|
|
<li>Changed the NDArray::copy() methods to NDArrayPool::copy(). Previously the copy
|
|
was being allocated from the NDArrayPool of the copy source, rather than from the
|
|
caller's array pool.</li>
|
|
<li>Added colorMode and bayerPattern fields to NDArray class.</li>
|
|
<li>Fixed a bug in the NDArray::convertDim function that could cause an array bounds
|
|
error if a dimension was reversed.</li>
|
|
</ul>
|
|
</li>
|
|
<li>asynPortDriver
|
|
<ul>
|
|
<li>Renamed the pasynUser member to pasynUserSelf. This avoids a name conflict with
|
|
the local variable pasynUser used in many derived classes. Unfortunately this requires
|
|
changes to derived class code where this->pasynUser was used.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Added simulation code to ADSC driver. This allows it to be built and tested on
|
|
systems that do not have the ADSC hardware or software installed.</li>
|
|
<li>Added $(P)$(R)AutoSave to the save/restore settings in NDFile_settings.req so
|
|
it will be restored on reboot. This requires care when using drivers such as the
|
|
Prosilica which can rapidly save very large data files, since file saving may be
|
|
resumed on reboot. </li>
|
|
<li>Removed abusy record, replaced with new version of busy record from new busy module.</li>
|
|
<li>Renamed ADPlugin library to NDPlugin, because it is really N-dimensional.</li>
|
|
<li>Renamed marCCD library to marCCD_AD, because marCCD is already used in the ccd
|
|
module, and it conflicts. Changed marCCDSupport.dbd to marCCD_ADSupport.dbd, name
|
|
of register command, etc.</li>
|
|
<li>Added PortName_RBV record to ADBase.template and NDPluginBase.template and to
|
|
all driver and plugin medm screens. This allows the user to see the asyn port name
|
|
of the driver or plugin, which is useful when switching the NDArray callback source.</li>
|
|
<li>Modified the detector medm screens to contain links to the plugins that are normally
|
|
loaded for that driver, e.g. a single instance each of NDStdArrays, NDROI, NDFile
|
|
and NDColorConvert (for detectors that support color).</li>
|
|
</ul>
|
|
<h2 style="text-align: center">
|
|
Release 1-3 (24-November-2008)</h2>
|
|
<ul>
|
|
<li>Added a driver for MarCCD detectors. Compared to the previous support in the "ccd"
|
|
module, this driver uses the faster Version 1 protocol for the Mar server. It also
|
|
makes the detector data available via callbacks (by reading the TIFF files as soon
|
|
as they are written). This allows detector data to be displayed with EPICS clients,
|
|
and for ROI calculations.</li>
|
|
<li>Added support for shutter control. Supports shutters that are driven directly
|
|
from the detector hardware, as well as shutters controlled by EPICS records. Shutter
|
|
support is implemented for the MarCCD, Pilatus, and simulation detectors.</li>
|
|
<li>Added new methods for shutter support to the detector base class ADDriver.cpp
|
|
<ul>
|
|
<li>ADDriver::setShutter()</li>
|
|
<li>ADDriver::writeInt32</li>
|
|
</ul>
|
|
</li>
|
|
<li>Reorganized the file I/O parameters, template files and medm screens
|
|
<ul>
|
|
<li>Moved the file capture parameters from NDPluginFile.h and NDPluginFile.cpp to
|
|
ADStdDriverParams.h. This allows a detector driver to use these capture parameters
|
|
if desired.</li>
|
|
<li>Removed all of the file I/O records from ADBase.template and ADBase_settings.req.
|
|
These previously duplicated the records in NDFile.template and NDFile_settings.req,
|
|
which was hard to maintain. IOCs for detector drivers that can do file I/O now need
|
|
to load NDFile.template, while those that cannot no longer need to load these records.
|
|
They also need to have NDFile_settings.req added to auto_settings.req. This does
|
|
not effect the file plugin support, only drivers that directly do file I/O.</li>
|
|
<li>Removed the file I/O PVs from ADBase.adl. Added a related display link to NDFile.adl.</li>
|
|
<li>NDFile.adl now contains only the file related PVs, not the plugin related PVs.
|
|
The new file NDPluginFile.adl replaces the previous version of NDFile.adl, and contains
|
|
both the file PVs and the plugin PVs.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Added new enums in ADStdDriverParams.h
|
|
<ul>
|
|
<li>ADFrameType_t</li>
|
|
<li>ADShutterMode_t</li>
|
|
<li>ADFileMode_t</li>
|
|
</ul>
|
|
</li>
|
|
<li>Added new parameters in ADStdDriverParams.h
|
|
<ul>
|
|
<li>ADShutterControl (replaces ADShutter)</li>
|
|
<li>ADShutterControlEPICS</li>
|
|
<li>ADShutterStatus</li>
|
|
<li>ADShutterMode</li>
|
|
<li>ADShutterOpenDelay</li>
|
|
<li>ADShutterCloseDelay</li>
|
|
<li>ADTimeRemaining</li>
|
|
<li>ADNumImagesCounter</li>
|
|
<li>ADFrameType</li>
|
|
<li>ADArrayCallbacks</li>
|
|
<li>ADFileWriteMode</li>
|
|
<li>ADFileNumCapture</li>
|
|
<li>ADFileNumCaptured</li>
|
|
<li>ADFileCapture</li>
|
|
</ul>
|
|
ADArrayCallbacks can be set to 0 to disable callbacks with detector data. For the
|
|
MarCCD and Pilatus detectors setting this to 0 will disable reading the disk files
|
|
after collection. This can be used to reduce overhead when EPICS is being used just
|
|
for control, rather than to access the data. </li>
|
|
<li>Added variant of NDPluginDriver::createFileName that returns the filePath and
|
|
fileName separately, rather than a complete file name including the path.</li>
|
|
</ul>
|
|
<h2 style="text-align: center">
|
|
Release 1-2 (24-October-2008)</h2>
|
|
<ul>
|
|
<li>Major update to documentation</li>
|
|
<li>Significant enhancement to ROI plugin. Added net counts, ROI highlighting.</li>
|
|
<li>Added driver for Pilatus detectors. This has undergone limited testing.</li>
|
|
<li>Added driver for ADSC detectors (done by Lewis Muir, IMCA-CAT)</li>
|
|
<li>Removed separate readback parameters in drivers and template files</li>
|
|
<li>Changed from mbbi/mbbo records to bi/bo records where possible now that the asynInt32
|
|
interface supports bi/bo records.</li>
|
|
<li>Internals
|
|
<ul>
|
|
<li>Renamed asynParamBase to asynPortDriver.</li>
|
|
<li>Renamed NDArrayBase to NDArrayDriver</li>
|
|
<li>Renamed NDPluginBase to NDPluginDriver</li>
|
|
<li>Renamed NDArrayBuff to NDArrayPool, now in NDArray.cpp.</li>
|
|
<li>Renamed ADDriverBase to ADDriver</li>
|
|
<li>Removed ADUtils</li>
|
|
<li>The asynHandle interface in asyn was renamed to asynGenericPointer, many changes
|
|
to incorporate this.</li>
|
|
<li>Base class constructor no longer initializes all asyn interfaces, only the selected
|
|
ones.</li>
|
|
<li>NDArray pool is no longer global, each server creates its own pool if needed.</li>
|
|
<li>Implemented real routines for writeInt32, writeFloat64, and writeOctet in asynPortDriver.cpp,
|
|
removed them from ADDriver.cpp where they were not needed.</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<h2 style="text-align: center">
|
|
Release 1-1 (10-May-2008)</h2>
|
|
<ul>
|
|
<li>Major rewrite. Converted device drivers and plugins from C to C++ with C++ base
|
|
classes that handle many of the details of asyn and of callbacks and threading for
|
|
plugins.</li>
|
|
<li>Everything except device drivers and top-level EPICS databases and channel access
|
|
clients are now fully N-dimensional, not restricted to 2-D.</li>
|
|
<li>NDPluginFile now uses netCDF format, which is a portable self-describing binary
|
|
file format.</li>
|
|
<li>Added NDPluginROI which implements region-of-interest.</li>
|
|
</ul>
|
|
<h2 style="text-align: center">
|
|
Release 1-0 (11-Apr-2008)</h2>
|
|
<ul>
|
|
<li>Initial release, still many things remaining to be done.</li>
|
|
</ul>
|
|
<address>
|
|
Suggestions and Comments to:
|
|
<br />
|
|
<a href="mailto:rivers@cars.uchicago.edu">Mark Rivers </a>: (rivers@cars.uchicago.edu)
|
|
<br />
|
|
</address>
|
|
</body>
|
|
</html>
|