Hi Kay,
Thanks for the input. I was looking at the waveform record process()
routine and found that BUSY is used there. The following is the relevant
part of the code:
if ( pact && pwf->busy ) return(0);
status=readValue(pwf); /* read the new value */
/* check if device support set pact */
if ( !pact && pwf->pact ) return(0);
pwf->pact = TRUE;
[do housekeeping stuff]
pwf->pact = FALSE;
return (0);
Suppose that we have asynchronous device support. The first time the
record processes PACT is FALSE and readValue() is called. If the device
is not ready to send data the device support routine sets PACT=TRUE and
sets a watchdog timer to call process() in the future. Now, if for any
reason BUSY=TRUE as well, the next time process() is called it won't
call readValue(), and PACT and BUSY will remain TRUE forever. Since
readValue() is not called, no timer is set to call process again. Thus,
the record will remain in active state, but not executing. This is
exactly what I saw when I set BUSY=TRUE in my device support routine.
Regards,
Pedro.
Kay-Uwe Kasemir wrote:
Hi:
They are both "private" for your device support routine.
As far as I know, there is no predefined meaning.
You can e.g. use "busy" so that your device support
can indicate to users that it's armed, waiting for a trigger
but hasn't received one, yet.
RARM = re-arm can be used to tell your device support
that it should re-arm (wait for another trigger)
once it got data.
If you don't use them because it doesn't make
sense for your device: fine.
Thanks,
-Kay
At 03:05 PM 4/9/2002, pedro wrote:
Hi,
Could someone give me an explanation on how to use the RARM and BUSY
fields in the waveform record? Why do we need a BUSY field if we already
have PACT? I'm writing a device support routine to read a serial port
using the waveform record and I'm not sure how to use these fields. I
found that about half of the device support routines in the EPICS
distribution doesn't use them at all. The documentation doesn't say much
either.