Hello,
At the moment I am experimenting with StreamDevice, while connecting it
to a custom asynPortDriver (instantiated with ASYN_MULTIDEVICE,
ASYN_CANBLOCK).
According to the documentation, each protocol command blocks the device
for the duration of the protocol, which makes sense.
But an access to two devices on two different addresses should be possible:
http://epics.web.psi.ch/software/streamdevice/doc/processing.html
* /"The first |out| command in the protocol locks the device for
exclusive access. That means that no other record can communicate
with that device. This ensures that replies given by the device
reach the record which has sent the request. _On a bus with many
devices on different addresses, this normally locks only one
device_. The device is unlocked when the protocol terminates.
Another record trying to lock the same device has to wait and might
get a |LockTimeout|." /
However, I noticed that if I process two records with stream device, for
addresses #1 and #2, it first runs all callbacks for address #1, and
only after to #2.
This is contrary to my expectation, which would be to see callbacks to
both devices being executed interleaved.
Is there a way to tell StreamDevice to block only on the address level,
allowing to different addresses to be processes simultaneously?
Thanks,
Joao Afonso
CERN TE-EPC-CCS