EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: asyn R4-21 available
From: Mark Rivers <[email protected]>
To: "[email protected]" <[email protected]>
Cc: "'Beamline Controls and Data Acquisition'" <[email protected]>
Date: Thu, 21 Feb 2013 02:11:44 +0000
Folks,

asyn R4-21 is now available.  Links to the new documentation, release notes and tar file can be found here:

http://www.aps.anl.gov/epics/modules/soft/asyn/

asyn is also available via the APS Subversion repository here:

https://svn.aps.anl.gov/epics/asyn/

This is from the R4-21 release notes:

- asynDriver

Restored the original versions of pasynManager->lockPort and unlockPort that were used in asyn prior to R4-14. These versions just call epicsMutexLock and epicsMutexUnlock. In R4-14 these versions were replaced with versions that queued requests to lock the port. The R4-14 versions fixed a problem with the interfaces/asynXXXSyncIO functions, but it has become clear that the original versions are useful in some circumstances. The change was done as follows:

The lockPort and unlockPort functions in R4-20 were renamed to pasynManager->queueLockPort and queueUnlockPort.
The interfaces/asynXXXSyncIO functions were all changed to call the queueLockPort and queueUnlockPort, so they function identically to how they have since R4-14.
The versions of lockPort and unlockPort that existed prior to R4-14 were restored to pasynManager.
Changed the report() function so that if details<0 then asynManager does not print information for each device (address). It calls pasynCommon->report(-details) in this case so driver report functions will not be affected.

Changed the asynTrace print, printIO, vprint, vprintIO functions so they use EPICS_PRINTF_STYLE. This causes the GCC (version 3.0 and higher) and clang compilers to check the agreement of format strings with function arguments when using asynPrint() and asynPrintIO(), just as they do with printf(). This is very helpful in finding errors, and uncovered a number in asyn itself, which have been fixed.

- devGpib

Changed event code readback to support both the original 'short' VAL field (EPICS 3.14 and earlier) and the new 'string' VAL field (EPICS 3.15 and later).

Added support for DSET_AIRAW and DSET_AORAW definitions.

Replace strcpy with strncpy in devCommonGpib.c to reduce possibility of errors. Use NELEMENTS macro in devSkeletonGpib.c rather than hardcoding. Thanks to Andrew Johnson for these.

- devEpics

Improved the initMbboDirect function in devAsynUInt32Digital.c. If an initial value is read successfully from the driver it now sets the .Bn fields in the record. It also sets VAL rather than RVAL and returns 2 rather than 0. Thanks to Andrew Johnson for this.

Fixed a bug in devAsynUInt32Digital.c, which was missing a call to epicsMutexLock in interruptCallbackInput. Thanks to Angus Gratton for this fix.

Fixed a bug in devAsynXXXArray.h to handle case of multiple interrupt callbacks between record processing. Previously this would result in a call to the asynXXXArray->read() in the driver, which is not correct. The asynXXXArray device support does not have a ring buffer, so multiple interrupt callbacks between processing results in data being "lost", i.e. the record processes more than once with the same data. This is not really an error, but we now issue an ASYN_TRACEIO_DEVICE warning. This is analogous to ring buffer overflow for non-array data types.

Changed the "ring buffer overflow" messages from "ASYN_TRACE_ERROR" to "ASYN_TRACEIO_DEVICE", for devAsynFloat64. This was done for other device support in R4-20, but float64 was overlooked.

- Interfaces

Added writeRead and writeReadOnce functions to the asynGenericPointer interface. Thanks to Florian Feldbauer for this addition.

Fixed a bug in asynCommonSyncIO that could cause a crash if the connect() function returned an error.

- asynPortDriver

Added support for the asynOption interface. Added code to demonstrate and test this to the testErrors test application.

Added new method asynPortDriver::flushOctet(), which implements asynOctet::flush(). The base class implementation reproduces the behavior of asynOctetBase.c::flushIt, i.e. it calls pasynOctet->read() repeatedly with a timeout of 0.05 seconds until it gets no data back. But now drivers can implement their own version of flush() if a different behavior is desired, which was not previously possible.

Changed the code so that the length of string parameters returned in readOctet and octetCallback is now strlen(string)+1, rather than strlen(string). The length thus now includes the terminating nil. This fixes problems with clients that request long strings or subscribe to monitors with a length of 0, but don't check for a nil terminator.

Changed the meaning of the "details" argument in the asynPortDriver::report() function. The new meaning is:

0 = no details
>=1: print details for parameter list (address) 0
>=2: print details for all parameters lists (addresses)
>=3: print interrupt callback information
Changed the connect() and disconnect() methods to return an error if the device address specified by the pasynUser is invalid (i.e. <-1 or >MAX_ADDR-1).

Fixed problem that was causing dynamic builds (e.g. SHARED_LIBRARIES=YES) to fail on Windows.

- asynPortDriver/exceptions

Changes to allow compiling with the old vxWorks Tornado 2.0.2.1 compiler. Thanks to Dirk Zimoch for this fix.

- Other

Many minor changes to avoid compiler warnings on Linux, vxWorks, and WIN32. Thanks to Dirk Zimoch for many of these.

Mark



Navigate by Date:
Prev: Re: trying to compile snmp for Wiener PL512 crate application James F Ross
Next: Re: gateway: strange configuration Martin L. Smith
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: EDM Text Control Widget Motif behavior Isadoro Carlino
Next: Rounding in conversion of ao record haquin
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 20 Apr 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·