The edm display manager uses EPICS channel access though a generic process variable facility. This provides the ability to access other types of process variables. Currently supported types include EPICS, local, and calculation. Future versions may support other toolkits and products.
Functionally, a widget interacts with a process variable (pv) as illustrated by the following narrative.
When the widget is executed, a pv connection request is initiated. When the connection request completes, the widget begins monitoring the pv's value, alarm state, and connect state. Monitoring is achieved by booking events, not by polling. Whenever the pv value changes, a callback is invoked which causes the widget to update an image or the contents of text to reflect the pv's new value. If the pv disconnects, a callback is invoked which causes the widget to update an image or the contents of text to reflect the disconnected state of the pv. If the pv reconnects, a callback is invoked which causes the widget to update an image or the contents of text to reflect the connected state of the pv (i.e. the disconnected indication is removed). If the pv alarm state changes, a callback is invoked which causes the widget to update an image or the contents of text to reflect the pv's new alarm state. For control widgets, user actions may cause the widget to change the value of the pv. When the widget is destroyed, pv events are cleared and the pv is released.
The example code illustrates the above in detail.