Welcome to CaChannel’s documentation!


CaChannel.CaChannel wraps the low level ca functions into a Python class. It provides methods to operate on the remote process variable over channel access connection.

It was developed in 2000 by Geoff Savage using caPython extension Later on the CA library becomes multi-threaded with EPICS base 3.14. The original developer did not address this change however.

In 2008 during the transition to EPICS 3.14, a new implementation of CaChannel interface, version 2.x, was developed based on PythonCA extension from Noboru Yamamoto. It was highly backwards compatible with the original implementation based on caPython.

In 2014, package caffi was created in place of caPython or PythonCA extension to expose the Channel Access API using cffi. It aimed to create a Pythonic API of one-to-one map to the counterpart C functions. After that has been accomplished, CaChannel interface was re-implemented using the caffi.ca module, versioned 3.x.

In 2015-16, with all previous experiences, the CaChannel.ca module was rewritten from scratch using Python/C API. The new CaChannel.ca module has a compatible API with caffi.ca. Because of that, the CaChannel interface can use caffi.ca by setting environment variable CACHANNEL_BACKEND=caffi. This is also the fallback backend if no EPICS installation exists or the C extension fails to import.

Indices and tables