Process variable access concepts

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.