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  <20082009  2010  2011  2012  2013  2014  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  <20082009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: ASYN R4.10 Release
From: Eric Norum <[email protected]>
To: epics Techtalk <[email protected]>
Date: Fri, 19 Sep 2008 10:59:22 -0500
The latest release of ASYN is now available at http://www.aps.anl.gov/epics/modules/soft/asyn/


asynOctet
=========
The asynOctet writeRaw and readRaw methods have been removed. In most cases, if your code now calls readRaw or writeRaw it should be safe to simply change these calls to their non-Raw equivalent. If you're paranoid about someone interposing the end-of-string processing layer you could add something like the following to ensure that there is no end-of-string to match:
pasynOctet->setInputEos(asynOctetPvt,pasynUser,NULL,0);
If you need to switch to 'raw' mode for a while and then back to 'eos mode', you can use code similar to that in devGpib.c:readArbitraryBlockProgramData:


char saveEosBuf[5]; int saveEosLen; . . . status = pasynOctet- >getInputEos(asynOctetPvt,pasynUser,saveEosBuf,sizeof saveEosBuf,&saveEosLen); if (status != asynSuccess) { epicsSnprintf(pasynUser->errorMessage,pasynUser- >errorMessageSize,"Device EOS too long!"); return -1; } if (saveEosLen) pasynOctet->setInputEos(asynOctetPvt,pasynUser,NULL, 0); . . . . if (saveEosLen) pasynOctet- >setInputEos(asynOctetPvt,pasynUser,saveEos,saveEosLen);

When compiling your code against this new version of asyn you should pay particular attention to warning messages of the form "warning: initialization from incompatible pointer type". These are a good indication that you're initializing an asynOctet structure with the old-style I/O methods.


asynManager =========== Add a strStatus method to convert an asynStatus code to a string.


drvAsynIPPort =========== Cleaned up timeout handling. Fix memory leak (one epicsAtExit entry was allocated for every connect).

asynReport no longer reports as connected a port which has successfully disconnected.

Improved diagnostic messages.



drvAsynIPServerPort
================
Fixed bugs that caused the thread that listened for new connections to exit when errors occurred. Such errors included too many simultaneous connections.



Interfaces
========
Added three new array interfaces, asynInt8Array, asynInt16Array, and asynFloat32Array. asynInt8Array and asynInt16Array are the same as asynInt32Array except that the data types are for epicsInt8 and epicsInt16 respectively. asynFloat32Array is the same as asynFloat64Array except that the data type is for epicsFloat32.
Added asyn(XXX)ArraySyncIO for synchronous I/O to all array interfaces.


Added new asynGenericPointer interface. The datatype for this interface is void*, so it can be used to pass a pointer to anything. Includes asynGenericPointerSyncIO for synchronous I/O.

Added asynStandardInterfaces.h and asynStandardInterfacesBase.c to simplify driver initialization when using the standard asyn interfaces defined in asyn/interfaces (common, octet, int32, etc.)



devEpics
=======
Undid the change that was done in R4-9 with direct calls to dbScanLock and process in the interrupt callback functions. This could lead to deadlocks in some circumstances. The original reason for changing from scanIoRequest to (dbScanLock, process) was because callback values would be lost if the callbacks came so close together in time that the single callback value stored in device support was overwritten before scanIoRequest could process the record. This problem has been fixed by adding a FIFO (ring buffer) to the device support for the scalar interfaces asynInt32, asynUInt32Digital, and asynFloat64. The ring buffer is only created when the record is put into I/O Intr scan, so the storage is not allocated for records that are not I/O Intr scanned. The ring buffer default size is 10 values, but this can be changed on a per-record basis using the dbInfo string "FIFO" with a value such as "100".
Added support for bi and bo records for asynInt32 interface. Previously these records were only supported for the asynUInt32Digital interface.


Added waveform record device support for the asynInt8Array, asynInt16Array, and asynFloat32Array interfaces. These are the same as devAsynInt32Array and devAsynFloat64Array with changes to the data types.



asynShellCommands
=================
Remove duplicate windows function decorations.


asynInterposeEos ============== Improved diagnostic messages.


testIPServerApp/ipSNCServer.st
=========================
Fixed timeout bug introduced in R4-6 when timeouts of 0.0 and -1.0 were defined.
--
Eric Norum <[email protected]>
Advanced Photon Source
Argonne National Laboratory
(630) 252-4793




Replies:
RE: ASYN R4.10 Release Rees, NP (Nick)

Navigate by Date:
Prev: Looking for Ortec Trump 2K ISA board! [SEC=UNCLASSIFIED] WANG, Jian
Next: Modbus Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  <20082009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Looking for Ortec Trump 2K ISA board! [SEC=UNCLASSIFIED] WANG, Jian
Next: RE: ASYN R4.10 Release Rees, NP (Nick)
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  <20082009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 02 Sep 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·