Experimental Physics and
Within my Asyn IOC I need sometime to modify some PV from other IOC.
I did try to do this using the .db but the task was too complex and I am now trying to setup my own CA client inside Asyn.
As I am using Asyn I have also linked all the callback from CA to the one from Asyn...
This seems to work more or less but I have some problems with the ca_put.
quick resume of what I am doing
--------------- # Part 1 (OK)
At the setup of the IOC I call:
and at the end of the setup I call
This work fine and after some seconds I enter callback_coHaAr() for each of the CA created.
--------------- # Part 2
Then at some point in my code, changes of value my internal PV, I modify external PV.
status=ca_put_callback (DBR_DOUBLE, pvext_write1->chan_id, &(pvext_write1->val.float64),callback_put,pvext_write1);
status=ca_put_callback (DBR_DOUBLE, pvext_write2->chan_id, &(pvext_write2->val.float64),callback_put,pvext_write2);
status=ca_put_callback (DBR_DOUBLE, pvext_writeN->chan_id, &(pvext_writeN->val.float64),callback_put,pvext_writeN);
And after all my writes has been put, I call
And this is when sometime my hook callback_put() is correctly called back (Almost 90% the first time)
callback_put() > chid:0x949a3a0 usr:0x94c86a8 (status:x1)
But then if I make succesive call, the hook callback_put() might be called back some more time.. and then never
However If I shutdown the remote IOC, all my callback appears
If only one was missing, I get on my epicConsole:
callback_put() > chid:0x95074c8 usr:0x9535860 (status:xc0)
If 4 were missing:
callback_put() > chid:0x98623f8 usr:0x9890790 (status:xc0)
I think I am missing something while mixing the epicsThread of asyn and ca, but I really don't know what to try more and I don't find any good examples of ChannelAccess client with thread.
|ANJ, 21 Dec 2017||
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·