Folks,
There have been several requests to support EPICS timestamps in asyn port drivers and standard asyn device support. This would be used by records
that have the TSE=epicsTimeEventDeviceTime=-2. The record support then directly uses the TIME field in the record as the timestamp. Device support must have properly set the TIME field in the record.
Setting the timestamp when the driver processes, rather than later on when the record processes can be desirable because the timestamp then
reflects more accurately the actual time that the I/O operation was performed. It is also desirable to allow for a user-defined function to provide the timestamp, rather than being restricted to simply calling epicsTimeGetCurrent(). For example, the driver
may be associated with a particular EPICS event, and the user-defined function would then call epicsTimeGetEvent() with that event ID. This can also return a site-specific time format. For example at LCLS epicsTimeGetEvent(eventId) returns a timestamp from
the EVR system where the low-order bits encode the pulse ID. They want drivers to read that timestamp as soon as possible after the I/O is complete.
I have recently implemented support for these features in asynManager and asynPortDriver. The attached document describes what I have done. It also describes what I
plan to do in the future to use this new asyn support in areaDetector.
I would appreciate any comments and suggestions before releasing this in the next version of asyn.
Cheers,
Mark