/*! \page page_coding Coding to the API

\tableofcontents

\section coding_api Various API interfaces

\subsection coding_api_hilevel High-Level: The Multi-USRP

The Multi-USRP class provides a high-level interface to a single USRP device
with one or more channels, or multiple USRP devices in a homogeneous
setup. See the documentation for uhd::usrp::multi_usrp.

\subsection coding_api_hilevel_rfnoc High-Level: The RFNoC API

This is a more granular API than the Multi-USRP API, and can directly interact
with RFNoC blocks in a device, and the RFNoC graph. This is available for all
Generation-3 USRPs and above.

For more information on RFNoC, see \ref rfnoc_docs.

\subsection coding_api_hilevelclock High-Level: The Multi-USRP-Clock

The Multi-USRP-Clock class provides a high-level interface to a single clock
device or set of clock devices, from which the time can be queried. See the
documentation for uhd::usrp_clock::multi_usrp_clock.

\subsection coding_api_hilevelc High-Level: The C API

Both USRP and clock devices can be interacted with using a C API wrapper included
by default in all UHD builds. More information can be found \subpage page_c_api "here".

\subsection coding_api_lowlevel Low-Level: The device API

This is an older API for pre-RFNoC devices (N2xx, B2xx, B100, USRP1).

A device is an abstraction for hardware that is connected to the host
system. For a USRP device, this means that the motherboard and
everything on it would be considered to be a "device". For a clock device, the
device itself would be considered a "device" in software. The device API
provides ways to:

-   Discover devices that are physically connected to the host system.
-   Create a device object for a particular device identified by
    address.
-   Register a device driver into the discovery and factory sub-system.
-   Streaming samples with metadata into and out of the device.
-   Set and get properties on the device object.
-   Access various sensors on the device.

See the documentation for uhd::device.

*/
// vim:ft=doxygen:
