Release 1.0.0
This release contains a number of bugfixes and new features.
Features:
- Process variables of types
int64
anduint64
and are now supported by both the ControlSystemAdapter and the DeviceAccess backends. Such process variables can be used with all records that support numeric types except for theaai
andaao
record. - Support for the
int64in
andint64out
records has been added (when compiling against EPICS Base 3.16 or newer). Those record types are primarily useful for process variables of typesstd::int64_t
andstd::uint64_t
, but they can be used with other numeric types as well. - Process variables of type
string
are now supported by both the ControlSystemAdapter and the DeviceAccess backends. Such process variables can be used with theaai
, andaao
records as well as with the newly introducedlsi
,lso
,stringin
, andstringout
records. Please refer to the documentation for details. - Mutiple input records can now be created for the same process variable without losing value updates when using the ControlSystemAdapter backend. This includes records that are polled (instead of using the
I/O Intr
mode), but settingSCAN
toI/O Intr
is still strongly recommended for input records using the ControlSystemAdapter backend. - Bidirectional process variables are now directly supported by output records (when using the ControlSystemAdapter backend). This means that if such a process variable is changed by the application side, the record's value is updated to reflect the new value coming from the device. This behavior can selectively be disabled on a per-record basis. Please refer to the documentation for details.
- The ControlSystemAdapter backend now uses a new mechanism for receiving update notifications from the device. This mechanism is blocking, meaning that there is no need to periodically poll for changes any longer. For this reason, the update mechanism now has a smaller latency and is more efficient.
Bugfixes:
- The backend for DeviceAccess had a bug that caused the both the success and the error callback to be called when there was an I/O error. This lead to problems with record processing in case of an error.
- If an exception is thrown during record processing, the record is now marked with an
INVALID
severity and aREAD_ALARM
orWRITE_ALARM
where before only an error message would be printed to the console without marking the record as invalid. - The DeviceAccess backend incorrectly signaled that I/O operations had finished synchronously, even when working in asynchronous mode. This could cause problems with record processing when using the asynchronous mode.
- The DeviceAccess backend did not use version numbers (and thus time stamps) coming from DeviceAccess and created new version numbers instead. Now, the backend correctly passes the original version numbers to the record device support code.
- The initialization routines for output records now correctly clear the initial
INVALID
alarm when the record's value can be initialized successfully.
Changes breaking backwards compatibility:
- Due to the new notification mechanism, the syntax of the
chimeraTKConfigureApplication
IOC shell command has changed. This command now takes the application name as its single parameter, where before it would take the polling interval as a second parameter. - This release uses new APIs introduced in version 01.01.00 of ChimeraTK Device Access, so it will not compile against older versions of Device Access.