Nominal Device Support v3
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

NDS v3


NDS (Nominal Device Support) is a library that allows to write device supports for a variety of control systems (CS) by hiding the details of the chosen CS and focusing on device functionalities.

NDS provides the following features:

  • organizes your device in a tree-like structure, containing one or more devices, channels, attributes (PVs), state machine, etc.
  • provides the data pull mode (passive scanning on EPICS, polling on Tango) and the push mode (Interrupt on EPICS, push on Tango)
  • your code uses standard C++ types and Unix EPOCH timing to communicate with the library
  • on EPICS there is no need to supply separate db files (but you still can if you want)
  • supplies an hierarchical state machine
  • supplies a specialized data acquisition module
  • guaranteed binary compatibility between minor versions allow to easily upgrade existing installations without recompiling the device support

Build Status Coverage Status


  • Online Reference
  • Build doxygen reference with make doc. Requires doxygen and latex. The generated documentation is then found at doc/api/html/index.html and doc/api/hlatex/refman.pdf.

Developer Dependencies

cmake 2.8.2+ required to run unit tests. Included in RHEL 6.6, Debian Wheezy, Ubuntu Trusty.

GCC 4.9+ is recommended because of GCC 57869.

Package Installation

Packages are not available yet.

Manual Installation

Using cmake

mkdir build
cd build
cmake ../CMake
make install

Using make

make install

Run unit tests

  • Build NDS3 with CMake
  • Build and run tests
    mkdir tests/build
    cd tests/build
    cmake ../CMake -DLIBRARY_LOCATION=../../build

Build example drivers

  • Build NDS3 with CMake
  • Build examples
    mkdir doc/examples/build
    cd doc/examples/build
    cmake ../CMake -DLIBRARY_LOCATION=../../../build