Skip to content
Snippets Groups Projects

A framework for real-time software

License Build Status

TAO was initially designed as a software framework to carry the real-time processing needed by adaptive optics (AO) systems.

For remote control and fast exchanges of data, TAO uses shared objects whose contents is stored in shared memory. For fast synchronization, TAO provides semaphores, exclusive locks (mutex) with condition variables, and read/write locks.

Documentation

Compiling and linking with TAO (dynamic) libraries

To limit the dependencies, TAO is split in several parts. Depending on which part(s) of TAO is used in your software, you have to include different headers and link with different libraries. This is summarized by the following table.

Headers Link flags Description
<tao.h> -ltao -lpthread -lm Basic TAO
<tao.h> -ltao -ltao-proc -lm TAO Processing
<tao-fits.h> -ltao-fits -ltao -lcfitsio -lpthread -lm TAO + FITSIO
all of the above -ltao-fits -ltao -lcfitsio -lpthread -lm All parts

Installation

Generating the documentation

The HTML documentation can be (re-)generated by running doxygen from the top directory of TAO software suite (packages doxygen, doxygen-doc, doxygen-gui and graphviz must be installed):

sudo apt-get install doxygen doxygen-doc doxygen-gui graphviz
cd "$TAO_SRC_DIR"
doxygen

where $TAO_SRC_DIR is the top directory of the TAO source files (where is this README.md file).

Compilation and installation of TAO software

You'll need GIT, a C compiler supporting C99 standard (GCC is perfect for that!) and GNU autotools. If they are missing, install the relevant packages with your package manager. On Ubuntu that is done by:

sudo apt-get install git build-essential autoconf automake libtool autotools-dev

If all required tools are installed:

git clone (https://git-cral.univ-lyon1.fr/tao/tao-rt "$TAO_SRC_DIR"
cd "$TAO_SRC_DIR"
./bootstrap

where $TAO_SRC_DIR is the directory of the TAO source files (where is this README.md file). To build TAO runtime library into its source directory:

cd "$TAO_SRC_DIR"
./configure ...
make
make install

To build TAO runtime libraries into a specific build directory, say $BUILD_DIR, just do:

mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
"$TAO_SRC_DIR"/configure ...
make
make install

Support for FITS files

TAO can use the CFITSIO library to implement support for FITS files. By default, the configure script attempts to automatically guess whether CFITSIO is installed. This behavior can be tuned via the options --enable-fits, --with-fits-defs and --with-fits-libs described below.

  • Use --with-fits-defs=$DEFS to specify the C pre-processor flags, like -I/usr/local/include, needed to compile with CFITSIO headers. No specific pre-processor flags are assumed by default.

  • Use --with-fits-libs=$LIBS to specify the linker flags, like -L/usr/local/lib -lcfitsio, needed to link with CFITSIO library. The linker flags -lcfitsio are assumed by default.

  • Use --enable-fits=$ARG where $ARG can be yes to automatically find installed CFITSIO library and headers and fail if it cannot be found, no to disable FITS support, check (the default) to compile FITS support if the corresponding headers and libraries can be automatically found, force to compile FITS support without checking the validity of the related settings, or a directory, say $DIR, to behave like if options

    --with-fits-defs="-I$DIR/include" \
    --with-fits-libs="-L$DIR/lib -lcfitsio" \
    --enable-fits

    have been specified. Note that option --enable-fits (with no argument) is the same as --enable-fits=yes, while --disable-fits is the same as --enable-fits=no.

Support for ActiveSilicon framegrabbers

TAO can use cameras connected to an ActiveSilicon framegrabber providing ActiveSilicon Phoenix software has been installed. By default, the configure script attempts to automatically guess whether ActiveSilicon Phoenix software is installed. To change this behavior, the --enable-phoenix option may be used:

"$TAO_SRC_DIR"/configure ... --enable-phoenix=$ARG ...

where $ARG can be yes to automatically find installed ActiveSilicon Phoenix software and fail if it cannot be found, no to disable ActiveSilicon Phoenix support, check (the default) to compile ActiveSilicon Phoenix support if the corresponding headers and libraries can be automatically found, the directory where the header include/phx_api.h and the dynamic library lib64/libphxapi-x86_64.so can be found. Note that option --enable-phoenix (with no argument) is the same as --enable-phoenix=yes, while --disable-phoenix is the same as --enable-phoenix=no.

Support for Andor cameras

TAO can use Andor cameras providing the Andor SDK (Software Development Kit) has been installed. By default, the configure script attempts to automatically guess whether Andor SDK is installed. To change this behavior, the --enable-phoenix option may be used:

"$TAO_SRC_DIR"/configure ... --enable-andor=$ARG ...

where $ARG can be yes to automatically find installed Andor SDK and fail if it cannot be found, no to disable Andor support, check (the default) to compile Andor support if the headers and libraries of the Andor SDK can be automatically found, the directory where the header include/atcore.h and the dynamic library lib/libatcore.so can be found. Note that option --enable-andor (with no argument) is the same as --enable-andor=yes, while --disable-andor is the same as --enable-andor=no.

Bindings

Various interfaces to TAO real time framework are available.

Yorick

tao-rt-yorick is a plugin to manipulate TAO shared objects (arrays, cameras, etc.) in Yorick scripts.

Julia

TaoBindings.jl is the official Julia interface to TAO real time framework.