.. _controller_channels:
Controller Communication Channels
==================================
Communication between the controller and the host computer shall occur over four
abstract communication channels:
#. :ref:`data-rd-chan`: Read-only, high-bandwidth stream of device output
:ref:`frames` from controller to host.
#. :ref:`data-wr-chan`: Write-only, high-bandwidth stream of device input
:ref:`frames` from mhost to controller.
#. :ref:`sig-chan`: Read-only stream of short-messages and asynchronous hardware
events from controller to host.
#. :ref:`conf-chan`: Bidirectional, addressed access to device registers.
These channels are implemented by the combination of the controller hardware and
the :term:`Driver Translator`.
Concurrent access to a single channel by the host (e.g., by multiple threads of
execution or applications) is NOT permitted. However, individual channels MUST
be able to be accessed independently.
.. note:: Concurrent access requirements relate only to the hardware
implementation. Functions in a high-level :term:`API` MAY introduce their own
access dependencies and concurrency limitations.
The required characteristics of the controller channels are described in the
following sections.
.. toctree::
:hidden:
data_frames
read_channel
write_channel
signal_channel
configuration_channel