| 1 | // **************************************************************************
|
|---|
| 2 | /** @mainpage
|
|---|
| 3 |
|
|---|
| 4 | @brief FACT++ - The FACT slow control software
|
|---|
| 5 |
|
|---|
| 6 | @author thomas.bretz@epfl.ch et al.
|
|---|
| 7 | @version 1.0
|
|---|
| 8 |
|
|---|
| 9 | @section install_sec Installation
|
|---|
| 10 |
|
|---|
| 11 | FACT++ can be downloaded from the svn by
|
|---|
| 12 |
|
|---|
| 13 | \verbatim
|
|---|
| 14 | svn checkout https://fact.isdc.unige.ch/svn/trunk/FACT++ [localdir]
|
|---|
| 15 | \endverbatim
|
|---|
| 16 |
|
|---|
| 17 | it includes a dim version which is automatically compiled.
|
|---|
| 18 |
|
|---|
| 19 | For compilation use
|
|---|
| 20 |
|
|---|
| 21 | \verbatim
|
|---|
| 22 | ./configure
|
|---|
| 23 | make
|
|---|
| 24 | \endverbatim
|
|---|
| 25 |
|
|---|
| 26 | Check the \b ./configure options with \b --help. It might look
|
|---|
| 27 | confusing, but some features like FITS or QT4 can be switched off,
|
|---|
| 28 | if the necessary library is not at hand and the feature is not needed.
|
|---|
| 29 | For example, if the GUI is not needed its compilation can be switched
|
|---|
| 30 | off by disabling QT4 support with \b --without-qt4.
|
|---|
| 31 |
|
|---|
| 32 | If you use a custom built root version on your system without QT
|
|---|
| 33 | support, but have a distribution packe (e.g. debian package) with
|
|---|
| 34 | QT support available, you can give the path to root executables,
|
|---|
| 35 | for example, with <B>--with-rootsys=/usr/bin</B>. All other paths
|
|---|
| 36 | are extracted from subsequent calls to \b root-config.
|
|---|
| 37 |
|
|---|
| 38 | Hint: Sometimes installing root from packages doesn't work as
|
|---|
| 39 | expected (at least on my Ubuntu). It might be necessary to
|
|---|
| 40 | find some of the root packages with the libraries giving trouble
|
|---|
| 41 | and reinstall them after the root package was already installed.
|
|---|
| 42 |
|
|---|
| 43 | Remark: root 5.24 und root 5.26 seem to have issues. Although there
|
|---|
| 44 | are some X errors when starting, it seems to work quite nice with
|
|---|
| 45 | 5.18/00b and 5.26/00e
|
|---|
| 46 |
|
|---|
| 47 | Running \b ./configure will take some time. It tries to really check
|
|---|
| 48 | carefully that everything needed is available on your system, so that you
|
|---|
| 49 | get errors before you start compilation.
|
|---|
| 50 |
|
|---|
| 51 | If \b ./configure fails please and you send a bug report please attach
|
|---|
| 52 | the file config.log.
|
|---|
| 53 |
|
|---|
| 54 | If \b make fails please and you send a bug report please attach
|
|---|
| 55 | the complete output of <B>make V=1</B>.
|
|---|
| 56 |
|
|---|
| 57 | \b Reminder: These programs use shared libraries, i.e. whenever you re-compile
|
|---|
| 58 | part of the project some of them might be re-compiled as well. As a result
|
|---|
| 59 | already running programs might crash unexpectedly! This is \b not a bug.
|
|---|
| 60 |
|
|---|
| 61 | In principle configure also supports
|
|---|
| 62 |
|
|---|
| 63 | \verbatim
|
|---|
| 64 | make install
|
|---|
| 65 | \endverbatim
|
|---|
| 66 |
|
|---|
| 67 | which would install the package and the libraries in your system,
|
|---|
| 68 | although at the moment this is not recommended
|
|---|
| 69 |
|
|---|
| 70 | @subsection packages Required packages
|
|---|
| 71 |
|
|---|
| 72 | If you find a new package needed for installation please don't
|
|---|
| 73 | hesitate to report it, so that it can be added to the list below.
|
|---|
| 74 |
|
|---|
| 75 | Packages known to be needed to configure and compile FACT++
|
|---|
| 76 |
|
|---|
| 77 | <B>Dim:</B>
|
|---|
| 78 | - lesstif2, lesstif2-dev (Xm.h, needed to compile did)
|
|---|
| 79 |
|
|---|
| 80 | <B>Libraries:</B>
|
|---|
| 81 | - libreadline, libreadline-dev
|
|---|
| 82 | - boost, boost-dev (>=V1.40, all)
|
|---|
| 83 | - mysql++, mysql++-dev
|
|---|
| 84 | - libcfits, libcfitsio-dev
|
|---|
| 85 | - libccfits, libccfits-dev
|
|---|
| 86 |
|
|---|
| 87 | <B>For GUI support:</B>
|
|---|
| 88 | - libqt4-core
|
|---|
| 89 | - libqt4-dev
|
|---|
| 90 | - root
|
|---|
| 91 |
|
|---|
| 92 | <B>Documentation:</B>
|
|---|
| 93 | - doxygen
|
|---|
| 94 | - graphviz
|
|---|
| 95 | - help2man
|
|---|
| 96 | - groff
|
|---|
| 97 | - ps2pdf
|
|---|
| 98 |
|
|---|
| 99 | <B>Only for maintainers:</B>
|
|---|
| 100 | - autoconf (automake, autotools-dev, m4)
|
|---|
| 101 | - autoconf-archive
|
|---|
| 102 | - libtool (contains libtoolize
|
|---|
| 103 | - colorsvn (recommended)
|
|---|
| 104 | - colorgcc (recommended)
|
|---|
| 105 | - qt4-designer
|
|---|
| 106 |
|
|---|
| 107 | @section Demo Current demonstration programs
|
|---|
| 108 |
|
|---|
| 109 | - \b dserver2: A virtual board (A TCP/IP server). It is sending a
|
|---|
| 110 | "hello" message after accepting a communication and then in 3s
|
|---|
| 111 | intervals the current UTC time. The board can be set to state 1 or back
|
|---|
| 112 | to state 0 (just as a demonstration)
|
|---|
| 113 | - \b dclient5: A control program. It accesses two viratual boards (start them
|
|---|
| 114 | with 'dserver2 5000' and 'dserver2 4001') If both boards are connected the START
|
|---|
| 115 | command can be issued to get them to state 'Running'. In this state
|
|---|
| 116 | an asynchronous time stamp can be requested sending the TIME command.
|
|---|
| 117 | to get back from Running to Connected use STOP.
|
|---|
| 118 | - \b test3: a dim console which allows to control all dim servers
|
|---|
| 119 | by sending commands via the dim network.
|
|---|
| 120 | - Both, \b dclient5 and \b test3 accept the command line options -c0, -c1, -c2
|
|---|
| 121 | to switch between different console types (or no console in the case of
|
|---|
| 122 | \b dclient5). In the console you get help with 'h' and the available
|
|---|
| 123 | command with 'c' You get the avilable command-line options with --help
|
|---|
| 124 |
|
|---|
| 125 | First start the two dserver2s. Then start a dclient5 (if you want it
|
|---|
| 126 | with console use one of the -c options) and a test3 console (with one
|
|---|
| 127 | of the console options if you like) you can now control the hardware
|
|---|
| 128 | boards with the START, STOP and TIME commands or stop (Ctrl-C) and
|
|---|
| 129 | start one of the programs to see what's happening. In the test3 case
|
|---|
| 130 | you first have to \e cd to the server to which you want to talk by \b
|
|---|
| 131 | DATA_LOGGER. Don't forget to start \b dns if you want to control dclient5
|
|---|
| 132 | from test3 via Dim.
|
|---|
| 133 |
|
|---|
| 134 | @section dimremarks Remarks about Dim usage
|
|---|
| 135 |
|
|---|
| 136 | To be able to write all received data directly to the FITS files,
|
|---|
| 137 | padding has been disabled calling dic_diable_padding() and
|
|---|
| 138 | dis_disable_padding(). This is done in our own error handler
|
|---|
| 139 | DimErrorRedirecter. Since this should be one of the first
|
|---|
| 140 | objects created in any environment it is quite save. However, every
|
|---|
| 141 | Dim client or server in our network which does not use the
|
|---|
| 142 | DimErrorRedirecter \b must call these two functions as early as
|
|---|
| 143 | possible.
|
|---|
| 144 |
|
|---|
| 145 | @section exitcodes Exit Code
|
|---|
| 146 | @section newcommand How to add a new command?
|
|---|
| 147 | @section description How to add help textes to services and commands?
|
|---|
| 148 |
|
|---|
| 149 | @section addtab How to add a new tab in the gui?
|
|---|
| 150 |
|
|---|
| 151 | Do the following steps in exactly this order:
|
|---|
| 152 | - Insert the new page from the context menu of the QTabWidget
|
|---|
| 153 | - Copy the QDockWidget from one of the other tabs to the clipboard
|
|---|
| 154 | - Paste the copied QDockWidget and add it to the new tab (only the tab should be highlited)
|
|---|
| 155 | - Now click on the context menu of the region in the tab (QWidget) and change the layout to grid layout
|
|---|
| 156 |
|
|---|
| 157 |
|
|---|
| 158 | @section Documentation
|
|---|
| 159 |
|
|---|
| 160 | Each program has an extensive help text (except the examples). This help text can
|
|---|
| 161 | be displayed with the \b --help option. For each program a man-page is automatically
|
|---|
| 162 | created (from the help-output), which (at the moment) can be accessed with <B>man
|
|---|
| 163 | FILE</B>.
|
|---|
| 164 |
|
|---|
| 165 | @section References
|
|---|
| 166 |
|
|---|
| 167 | @subsection generalref General references
|
|---|
| 168 | - <A HREF="http://www.cplusplus.com/reference">The C++ reference</A>
|
|---|
| 169 | - <A HREF="http://www.boost.org">boost.org: The boost C++ libraries</A>
|
|---|
| 170 | - <A HREF="http://www.highscore.de/cpp/boost/titelseite.html">Boris Schäling: Die Boost C++ Bibliotheken</A>
|
|---|
| 171 | - <A HREF="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">GNU Readline</A>
|
|---|
| 172 | - <A HREF="http://www.gnu.org/software/ncurses">GNU Ncurses</A>
|
|---|
| 173 | - <A HREF="http://dim.web.cern.ch/">Distributed Information Management (DIM)</A>
|
|---|
| 174 | - <A HREF="http://dim.web.cern.ch/dim/cpp_doc/DimCpp.html">Distributed Information Management (DIM) - C++ reference</A>
|
|---|
| 175 | - <A HREF="http://qt.nokia.com/">Qt homepage</A>
|
|---|
| 176 | - <A HREF="http://qt.nokia.com/downloads/">Qt downloads</A>
|
|---|
| 177 |
|
|---|
| 178 | @subsection boostref Boost references
|
|---|
| 179 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html">boost::bind (V1.45.0)</A>
|
|---|
| 180 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio.html">boost asio (V1.45.0)</A>
|
|---|
| 181 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/date_time.html">boost date_time (V1.45.0)</A>
|
|---|
| 182 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/program_options.html">boost program_options (V1.45.0)</A>
|
|---|
| 183 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/filesystem/v3/doc/index.htm">boost filesystem (V1.45.0)</A>
|
|---|
| 184 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/regex/doc/html/index.html">boost regex (V1.45.0)</A>
|
|---|
| 185 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/system/doc/index.html">boost system (error codes) (V1.45.0)</A>
|
|---|
| 186 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/thread.html">boost thread (V1.45.0)</A>
|
|---|
| 187 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/conversion/lexical_cast.htm">boost lexical_cast (V1.45.0)</A>
|
|---|
| 188 |
|
|---|
| 189 | @subsection fitsref FITS references
|
|---|
| 190 | - <A HREF="http://heasarc.gsfc.nasa.gov/docs/heasarc/fits.html">The FITS data format</A>
|
|---|
| 191 | - <A HREF="http://heasarc.gsfc.nasa.gov/fitsio/">FITS homepage</A>
|
|---|
| 192 | - <A HREF="http://heasarc.gsfc.nasa.gov/fitsio/CCfits/">CCfits - A C++ wrapper to cfitsio</A>
|
|---|
| 193 | - <A HREF="http://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/">fv - A very simple viewer to FITS file contents</A>
|
|---|
| 194 |
|
|---|
| 195 | @subsection qtroot How to integrate root in QT?
|
|---|
| 196 |
|
|---|
| 197 | - <A HREF="http://doc.trolltech.com/4.3/designer-creating-custom-widgets.html">QT4: Creating custom widgets</A>
|
|---|
| 198 | - <A HREF="http://root.cern.ch/download/doc/26ROOTandQt.pdf">root: QT integration (pdf)</A>
|
|---|
| 199 |
|
|---|
| 200 |
|
|---|
| 201 | @section Available programs
|
|---|
| 202 |
|
|---|
| 203 | - dns: Dim's domain-name-server (needed for any communication between Dim servers and clients)
|
|---|
| 204 | - did: A simple graphical interface to analyse everything in a Dim network
|
|---|
| 205 |
|
|---|
| 206 | @section Examples
|
|---|
| 207 |
|
|---|
| 208 | There are a few example programs
|
|---|
| 209 | - \b ./argv: Example for usage of the class Configure (command line options, configuration file)
|
|---|
| 210 | - \b ./time: Example for the usage of the class Time (time input/output, conversion)
|
|---|
| 211 | - \b ./log, \b ./logtime: A simple Dim-Service/-Client combination using MessageDimRX/MessageDimTX
|
|---|
| 212 |
|
|---|
| 213 | **/
|
|---|
| 214 | // **************************************************************************
|
|---|