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  2013  2014  <20152016  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  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: asyn R4-27 available
From: Mark Rivers <[email protected]>
To: "[email protected]" <[email protected]>
Date: Thu, 8 Oct 2015 16:31:18 +0000
Folks,

asyn R4-27 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 on github here:

https://github.com/epics-modules/asyn

These are the items from the R4-27 release notes:

- Repository location
The source code repository was moved from https://svn.aps.anl.gov/epics/asyn to https://github.com/epics-modules/asyn.  This will make it much easier for others to collaborate in the development of asyn.

- drvAsynSerialPort
Fix to save the previous values of the baud rate and termios structures before attempting to change them. If the change fails then the previous values are restored.  Previously if a call to setOption() failed, then subsequent calls to getOption() would return the value that failed.  Now subsequent calls to getOption() will return the previous valid option, which is presumably the one that the underlying OS driver is still using.  Thanks to Ron Sluiter for the initial fix to this problem.

- drvAsynSerialPortWin32
Fix to automatically prefix COM port names with "\\.\" unless the port name already begins with "\\.\". This is valid syntax for all COM ports and is required for all ports except COM1-COM9. Note that when passing the port string from the iocsh if the port name is in quotes then backslash characters should not be escaped, e.g. "\\.\COM10". If the port name is not in quotes then the backslash characters must be escaped, e.g. \\\\.\\COM10. Thanks to Freddie Akeroyd for the initial version of this fix.

- drvAsynIPPort
Added the option to automatically close the port when there is a read timeout. This was done by changing the syntax of the drvAsynIPConfigure command from
drvAsynIPPortConfigure("portName","hostInfo",priority,noAutoConnect,noProcessEos) to 
drvAsynIPPortConfigure("portName","hostInfo",priority,noAutoConnect,userFlags)
userFlags: bit-wise ORed:
Bit 0 is USERFLAG_NO_PROCESS_EOS. If 0 then asynInterposeEosConfig is called specifying both processEosIn and processEosOut.
Bit 1 is USERFLAG_CLOSE_ON_READ_TIMEOUT. If 1 then the (TCP) socket will be closed when read() returns a timeout.
Bit 2--31 are reserved, set to zero.
This change is backwards compatible since bit 0 is the same as the previous noProcessEos. Thanks to Torsten Bogershausen for this change.

- devEpics
Changed error reporting if pasynManager->queueRequest returned an error. Previously error messages were printed on every call, which would cause a large number of messages if the port was disconnected and records were periodically processing. Now an error message is only printed when the status return from pasynManager->queueRequest changes, so there will be single message for each record when a port disconnects and a single message when it reconnects.
Changed error handling when any of the following errors are encountered:
   -  pasynManager->queueRequest returns an error
    - The I/O call to the driver (e.g. pasynInt32->read()) returns an error.
    - The interrupt callback function is passed an error code in pasynUser->auxStatus
Previously such errors did correctly set the record alarm status and severity. However, they did not return an error code to the function that called the device support write() or read() function.  They also updated the record VAL or RVAL field when there was an error, which they should not. Now these functions return an error code and do not update VAL or RVAL when there is an error.

- asynPortDriver
Changed the status return from pasynManager->queueRequest from asynError to asynDisconnected if a port with ASYN_CANBLOCK=0 is disconnected.

- asynShellCommands
Added new command asynSetMinTimerPeriod, and corresponding C function. This command is currently only implemented on the WIN32 architectures, and simply prints an error message on all other architectures. It allows reducing the minimum time for epicsThreadSleep() from the default of 10 ms to the minimum supported Windows system value. On most systems this is 1 ms. Note that epicsThreadSleepQuantum() does not seem to report the correct value whether or not this function is called. On my system it always reports 0.0156 seconds. Note also that this function really has nothing to do with asyn, and the equivalent functionality should probably be moved into EPICS base at some time.

- Deadlock issue
There is a potential deadlock issue when using input records with SCAN=I/O Intr. This is discussed in the KnownProblems document. Thanks to Ambroz Bizjak for finding this problem.

Mark



Navigate by Date:
Prev: RE: Area Detector: ADPointGrey 2-1 and Blackfly GIGE on Linux Mark Rivers
Next: iocLogClient and atExit crash freddie.akeroyd
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: Area Detector: ADPointGrey 2-1 and Blackfly GIGE on Linux Mark Rivers
Next: iocLogClient and atExit crash freddie.akeroyd
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 16 Dec 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·