asyn R4-35 is now available.
asyn is available on github here:
tar and zip files are available here:
Soon you will be able to find links to the new documentation and release notes here:
These are from the R4-35 release notes:
- devAsynInt32, devAsynFloat64, devAsynUInt32Digital, devAsynOctet
- Fixed a deadlock problem when asyn:READBACK was used on output records.
In devAsynOctet there was still an isssue if asyn:READBACK=1 was used without asyn:FIFO, i.e. when ring buffers were not enabled.
The code now forces a minimum ring buffer size of 1 if asyn:READBACK=1 to avoid the deadlock.
asyn:FIFO can still be used to select a larger ring buffer size.
- Fixed a problem with the disconnectOnReadTimeout option.
Previously it would disconnect even if pasynUser->timeout was 0.
This is not logical, and meant this option could not be used with StreamDevice, because StreamDevices flushes the input by reading with a timeout of 0 to support I/O Intr scanned records.
- Updated the documentation to say that in order to receive UDP broadcast messages the localPort parameter in the hostInfo string in drvAsynIPPortConfigure must be specified.
Example: drvAsynIPPortConfigure("BD","255.255.255.255:1234:3956 UDP",0,0,0) will listen for broadcast messages on port 3956.
If the port is only to be used to receive broadcast messages then the UDP protocol should be specified.
If the port is also to be used to send UDP broadcasts then the UDP* protocol must be specified.
Example: drvAsynIPPortConfigure("BD","255.255.255.255:1234:3956 UDP*",0,0,0).
In this case it will send the broadcast messages on UDP port 1234 and listen for broadcast messages on UDP port 3956.
- Enhancement to allow using strings for the mask arguments of asynSetTraceMask, asynSetTraceIOMask, and asynSetTraceInfoMask shell functions.
The mask can be specified as an integer (previous behavior) or as symbolic names connected with + or |.
Spaces are allowed but require quotes.
The symbolic names are like the macro names in asyn.h, but not case sensitive and the prefixes ASYN_, TRACE_, TRACEIO_, and TRACEINFO_ are optional. Thanks to Dirk Zimoch for this.
- asynPortClient.h, asynPortClient.cpp
- Renamed asynPortClient base class to asynParamClient. This is the class from which asynInt32Client, asynFloat64Client, etc. are derived.
The new asynPortClient class connects to a specific asynPortDriver object.
It creates an asynParamClient derived class object for each of the parameters in that driver.
It uses the std::map class to map between the parameter name key and the asynParamClient object for that parameter.
It also defines overloaded write() and read() methods that take a paramName argument and the value to be written or pointer to read into.
The data type of the value or pointer must match the parameter type or a run-time exception will be thrown.
This new class is more convenient to use because it is no longer necessary to create the asynInt32Client, asynFloat64Client, etc. objects for each parameter to be accessed.
- Added asynPortDriver::getNumParams() method to get the number of parameters currently defined.
- New interpose driver that waits for a user-specified time after sending each character before sending the next one. Some poorly designed devices require this. Thanks to Dirk Zimoch.
- New interpose driver that waits for a device to echo each character before sending the next one. Some poorly designed devices require this. Thanks to Dirk Zimoch.