At the EPICS Core workshop last week I made a comment that one limitation of Channel Access was that OPI clients are not informed when enum strings or values change, and
so OPI displays don’t update to reflect these changes. I said that one needs to close the display and re-open it in order to see the changes.
You said this was because I was using a very old OPI client, i.e. medm. You said that modern clients handle this correctly, by having 2 subscriptions to the PV, one for
the value and one for the metadata. You said that Phoebus is one of the clients that handles this correctly.
I just tested this with Phoebus. I used the asyn/testAsynPortClient application. In that application when the VerticalGain record is changed the enum choices for the VoltsPerDivSelect
and VoltsPerDivSelect_RBV fields are changed.
When I change the vertical Gain in Phoebus I observe exactly the same thing as in medm. The enum menu choices for VoltsPerDivSelect mbbo and the enum string for the selected
VoltsPerDivSelect_RBV do not update automatically. They only update when I close the Phoebus window and re-open it.
I presume the behavior I observe with Phoebus must be due to one of the following 3 reasons:
The asyn code for updating enum values is incorrect.
The fact that the .bob file is autoconverted from medm rather than created natively in Phoebus is causing the undesired
behavior.
Phoebus cannot in fact update the screen when enum values change.