Usage

This plugin implements the PV & PVFactory defined in org.csstudio.utility.pv for EPICS (Channel Access). Ordinarily, one would use org.csstudio.utility.pv.PVFactory, so refer to its javadoc. For tests or standalone programs that don't use the platform registry, one can directly use the EPICS_V3_PV as described in here. 1) Required imports import org.csstudio.utility.pv.PV; import org.csstudio.utility.pv.epics.EPICS_V3_PV; 2) Required Property Settings Ordinarily, the org.csstudio.platform.libs.epics plugin that provides the JCA/CAJ jar files will initialize the required system properties from Eclipse preference settings (and org.csstudio.platform.libs.epics.ui would offer a GUI preference page for end users to change those settings). When we're running without the platform, we need to set those properties directly: // Set system properties for Channel Access because // we're not running with the whole preferences etc. System.setProperty("com.cosylab.epics.caj.CAJContext.addr_list", "127.0.0.1 160.91.228.17"); System.setProperty("com.cosylab.epics.caj.CAJContext.auto_addr_list", "false"); 3) Create PV String name = ...; // Instead of PVFactory.create(name), use PV pv = new EPICS_V3_PV(name); 4) Usage of PV .. is just like using a PV created via the PVFactory, so see there.

Implementation Details

Uses internal reference counting. When one requests the same PV more than once from the pure java CA client library, one always receives the same channel instance.

When several plug-ins use CA, it is on one hand desired that they use the same CA client library context, but the above feature means that they receive the same channel reference without knowing.

This makes it impossible to write proper cleanup code: If the channel is left open, resources are wasted, also on the IOC. If it is closed, one might accidentally close a channel that is still used by another plugin.

If all plugins go through this PV interface, the PV interface will perform the reference counting for the one and only channel that is obtained from the CA client libraries.