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:
- "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