Hello,
maybe this is connected to the issue at hand. I am in the process of
developing a "soft asynchronous" device support for output records. It
utilises dbPutNotify (on which ca_put_callback is built). Record
configuration interface is DTYP="Asyn Soft Channel", OUT="@name-of-pv"
(link type INST_IO). Support for additional record types will be easy
due to generic implementation with a very simple interface for record
specific device supports.
BTW, here is a question for the experts (Marty?):
The only thing i am not yet sure about is what to do if dbPutNotify
returns S_db_Blocked. Currently, i am doing
recGblSetSevr(precord, WRITE_ALARM, MAJOR_ALARM);
and then give up. The Application Developer's Guide is not very clear
about what can be done in this case. There seems to be no way to find
out when some other outstanding dbPutNotify operation completes, other
than repeatedly trying to call dbPutNotify until it succeeds. I suppose
there is a good reason why such requests aren't cached and auto
restarted later, although i can't quite figure it out.