A framework for real-time software
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
- Shared objects.
- Commands.
- Doxygen generated documentation. (See Generating the documentation to build or re-build this part of the 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 beyes
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.