// **************************************************************************
/** @mainpage

@brief FACT++ - The FACT slow control software

@author thomas.bretz@epfl.ch et al.
@version 1.0
 
@section install_sec Installation

FACT++ can be downloaded from the svn by

\verbatim
   svn checkout https://fact.isdc.unige.ch/svn/trunk/FACT++ [localdir]
\endverbatim

it includes a dim version which is automatically compiled.

For compilation use

\verbatim
   ./configure
   make
\endverbatim

In principle configure also supports

\verbatim
   make install
\endverbatim

which would install the package and the libraries in your system,
although at the moment this is not recommended

@subsection packages Required packages

If you find a new package needed for installation please don't
hesitate to report it, so that it can be added to the list below.

Packages known to be needed to configure and compile FACT++

<B>Dim:</B>
- lesstif2, lesstif2-dev (Xm.h)

<B>Libraries:</B>
- boost-dev (>=V1.40, all)
- mysql++-dev

<B>Documentation:</B>
- doxygen
- graphviz
- [global] optional (if htags should be used in Doxyfile)

<B>Only for maintainers:</B>
- autoconf (automake, autotools-dev, m4)
- autoconf-archive
- libtool (contains libtoolize

@section Demo Current demonstration programs

- \b dserver2: A virtual board (A TCP/IP server). It is sending a
  "hello" message after accepting a communication and then in 3s
  intervals the current UTC time. The board can be set to state 1 or back
  to state 0 (just as a demonstration)
- \b dclient5: A control program. It accesses two viratual boards (start them
  with 'dserver2 5000' and 'dserver2 4001') If both boards are connected the START
  command can be issued to get them to state 'Running'. In this state
  an asynchronous time stamp can be requested sending the TIME command.
  to get back from Running to Connected use STOP. 
- \b test3: a dim console which allows to control all dim servers
  by sending commands via the dim network.
- Both, \b dclient5 and \b test3 accept the command line options -c0, -c1, -c2
  to switch between different console types (or no console in the case of
  \b dclient5). In the console you get help with 'h' and the available
  command with 'c' You get the avilable command-line options with --help

First start the two dserver2s. Then start a dclient5 (if you want it
with console use one of the -c options) and a test3 console (with one
of the console options if you like) you can now control the hardware
boards with the START, STOP and TIME commands or stop (Ctrl-C) and
start one of the programs to see what's happening. In the test3 case
you first have to \e cd to the server to which you want to talk by \b
DATA_LOGGER. Don't forget to start \b dns if you want to control dclient5
from test3 via Dim.


@section References

@subsection generalref General references
- <A HREF="http://www.cplusplus.com/reference">The C++ reference</A>
- <A HREF="http://www.boost.org">boost.org: The boost C++ libraries</A>
- <A HREF="http://www.highscore.de/cpp/boost/titelseite.html">Boris Sch&auml;ling: Die Boost C++ Bibliotheken</A>
- <A HREF="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">GNU Readline</A>
- <A HREF="http://www.gnu.org/software/ncurses">GNU Ncurses</A>
- <A HREF="http://dim.web.cern.ch/">Distributed Information Management (DIM)</A>
- <A HREF="http://dim.web.cern.ch/dim/cpp_doc/DimCpp.html">Distributed Information Management (DIM) - C++ reference</A>

@subsection boostref Boost references
- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html">boost::bind (V1.45.0)</A>
- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio.html">boost asio (V1.45.0)</A>
- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/date_time.html">boost date_time (V1.45.0)</A>
- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/program_options.html">boost program_options (V1.45.0)</A>
- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/filesystem/v3/doc/index.htm">boost filesystem (V1.45.0)</A>
- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/regex/doc/html/index.html">boost regex (V1.45.0)</A>
- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/system/doc/index.html">boost system (error codes) (V1.45.0)</A>
- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/thread.html">boost thread (V1.45.0)</A>
- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/conversion/lexical_cast.htm">boost lexical_cast (V1.45.0)</A>

@section Available programs

- dns: Dim's domain-name-server (needed for any communication between Dim servers and clients)
- did: A simple graphical interface to analyse everything in a Dim network

@section Examples

There are a few example programs
- \b ./argv: Example for usage of the class Configure (command line options, configuration file)
- \b ./time: Example for the usage of the class Time (time input/output, conversion)
- \b ./log, \b ./logtime: A simple Dim-Service/-Client combination using MessageDimRX/MessageDimTX

**/
// **************************************************************************
