| 1 | /** @mainpage
|
|---|
| 2 |
|
|---|
| 3 | @brief FACT++ - The FACT slow control software
|
|---|
| 4 |
|
|---|
| 5 | @author thomas.bretz@phys.ethz.ch et al.
|
|---|
| 6 | <!--@version 1.0-->
|
|---|
| 7 |
|
|---|
| 8 | <hr width="100%">
|
|---|
| 9 |
|
|---|
| 10 | @section toc Table of contents
|
|---|
| 11 | <table border='1' bgcolor=#FAFAFA width='100%'>
|
|---|
| 12 | <tr>
|
|---|
| 13 | <td>
|
|---|
| 14 | <ul>
|
|---|
| 15 | <li> @ref install_sec
|
|---|
| 16 | <ul>
|
|---|
| 17 | <li> @ref rootwarning
|
|---|
| 18 | <li> @ref packages
|
|---|
| 19 | <li> @ref installroot
|
|---|
| 20 | </ul>
|
|---|
| 21 | <li> @ref demos
|
|---|
| 22 | <li> @ref dimremarks
|
|---|
| 23 | <li> @ref addtab
|
|---|
| 24 | <li> @ref Documentation
|
|---|
| 25 | <li> @ref References
|
|---|
| 26 | <ul>
|
|---|
| 27 | <li> @ref generalref
|
|---|
| 28 | <li> @ref boostref
|
|---|
| 29 | <li> @ref fitsref
|
|---|
| 30 | <li> @ref qtroot
|
|---|
| 31 | </ul>
|
|---|
| 32 | <li> @ref availableprograms
|
|---|
| 33 | <li> @ref Examples
|
|---|
| 34 | </ul>
|
|---|
| 35 | </tr>
|
|---|
| 36 | </td>
|
|---|
| 37 | </table>
|
|---|
| 38 |
|
|---|
| 39 | @section install_sec Installation
|
|---|
| 40 |
|
|---|
| 41 | FACT++ can be downloaded from the svn by
|
|---|
| 42 |
|
|---|
| 43 | \verbatim
|
|---|
| 44 | svn checkout https://www.fact-project.org/svn/trunk/FACT++ [localdir]
|
|---|
| 45 | \endverbatim
|
|---|
| 46 |
|
|---|
| 47 | it includes a dim version which is automatically compiled.
|
|---|
| 48 |
|
|---|
| 49 | Installation instructions can be found at
|
|---|
| 50 | - <A HREF="https://trac.fact-project.org/wiki/InstallingFACT++">TRAC:InstallingFACT++</A>.
|
|---|
| 51 |
|
|---|
| 52 | WARNING - Some infomration here migzt be outdated. Please refer to the
|
|---|
| 53 | TRAC for up-to-date information.
|
|---|
| 54 |
|
|---|
| 55 |
|
|---|
| 56 | @subsection packages Required packages
|
|---|
| 57 |
|
|---|
| 58 | The following section gives a list of packages which were necessary after
|
|---|
| 59 | a fresh Ubuntu 11.04 installation. In addition to all the development
|
|---|
| 60 | packages the corresponding package with the library is needed.
|
|---|
| 61 |
|
|---|
| 62 | Note that a recent C++ compiler is needed supporting the latest C++0x
|
|---|
| 63 | standard.
|
|---|
| 64 |
|
|---|
| 65 | <i>Required (configure will fail without them)</i>
|
|---|
| 66 | - subversion
|
|---|
| 67 | - gcc
|
|---|
| 68 | - g++
|
|---|
| 69 | - make
|
|---|
| 70 | - libreadline6-dev
|
|---|
| 71 | - libboost-all-dev
|
|---|
| 72 | - libx11-dev (needed for lesstif, qt4, root)
|
|---|
| 73 |
|
|---|
| 74 | <i>FITS file support (datalogger, event builder)</i>
|
|---|
| 75 | - libccfits-dev
|
|---|
| 76 |
|
|---|
| 77 | <i>MySQL support (command line options, scheduler)</i>
|
|---|
| 78 | - libmysqlclient-dev (optional for MySQL support)
|
|---|
| 79 | - libmysql++-dev (option for MySQL support)
|
|---|
| 80 |
|
|---|
| 81 | <i>If you want 'did'</i>
|
|---|
| 82 | - lesstif2-dev
|
|---|
| 83 |
|
|---|
| 84 | <i>For JavaScrip support</i>
|
|---|
| 85 | - libv8-dev
|
|---|
| 86 |
|
|---|
| 87 | <i>To compile the GUIs</i>
|
|---|
| 88 | - libqt4-dev
|
|---|
| 89 | - root (see section about root, currently recommended versions 5.18/00b-5.26/00e)
|
|---|
| 90 |
|
|---|
| 91 | <i>To compile the raw data viewer</i>
|
|---|
| 92 | - libglu1-mesa-dev
|
|---|
| 93 |
|
|---|
| 94 | <i>To compile smartfact with astronomy support and moon</i>
|
|---|
| 95 | - libnova-dev
|
|---|
| 96 |
|
|---|
| 97 | <i>To compile tngweather</i>
|
|---|
| 98 | - libsoprano-dev
|
|---|
| 99 |
|
|---|
| 100 | <i>To compile skypeclient</i>
|
|---|
| 101 | - libdbus-1-dev
|
|---|
| 102 | - libdbus-glib-1-dev
|
|---|
| 103 |
|
|---|
| 104 | <i>To create your own documentation</i>
|
|---|
| 105 | - graphviz
|
|---|
| 106 | - doxygen
|
|---|
| 107 | - help2man
|
|---|
| 108 | - groff
|
|---|
| 109 | - ps2pdf
|
|---|
| 110 |
|
|---|
| 111 | <i>To create JavaScript documentation</i>
|
|---|
| 112 | - jsdoc-toolkit
|
|---|
| 113 |
|
|---|
| 114 | <i>For developers</i>
|
|---|
| 115 | - autoconf
|
|---|
| 116 | - autoconf-archive
|
|---|
| 117 | - libtool
|
|---|
| 118 | - qt4-designer
|
|---|
| 119 |
|
|---|
| 120 | If you intend to change only Makefile.am but not configure.ac the \b automake
|
|---|
| 121 | package instead of the \b autoconf package should be enough.
|
|---|
| 122 |
|
|---|
| 123 | <i>Some nice to have (FACT++)</i>
|
|---|
| 124 | - colorgcc
|
|---|
| 125 | - colordiff
|
|---|
| 126 |
|
|---|
| 127 | <i>Some nice to have (system)</i>
|
|---|
| 128 | - fte
|
|---|
| 129 | - efte
|
|---|
| 130 | - htop
|
|---|
| 131 |
|
|---|
| 132 | <i>Documentation (usually accessible through http://localhost/ for the tools above:</I>
|
|---|
| 133 | - autoconf-doc
|
|---|
| 134 | - gcc-doc
|
|---|
| 135 | - graphviz-doc
|
|---|
| 136 | - libboost-doc
|
|---|
| 137 | - libmysql++-doc
|
|---|
| 138 | - libtool-doc
|
|---|
| 139 | - make-doc
|
|---|
| 140 | - qt4-dev-tools [qt4-assistant]
|
|---|
| 141 | - qt4-doc-html
|
|---|
| 142 |
|
|---|
| 143 |
|
|---|
| 144 | <!--
|
|---|
| 145 | VIEWER
|
|---|
| 146 | libqwt5-qt4-dev
|
|---|
| 147 | libqwt5-doc
|
|---|
| 148 | -->
|
|---|
| 149 |
|
|---|
| 150 | @subsection installroot How to install root 5.26/00 on Ubuntu 11.04 (natty)
|
|---|
| 151 |
|
|---|
| 152 | - install gpp4.4, gcc4.4, g++4.4 (root does not compile with gcc4.5)
|
|---|
| 153 | - make links to hidden X11 libraries:
|
|---|
| 154 | <B><pre>
|
|---|
| 155 | cd /usr/local
|
|---|
| 156 | sudo ln -s x86_64-linux-gnu/libX* .
|
|---|
| 157 | </pre></B>
|
|---|
| 158 | - in the root source directory
|
|---|
| 159 | <B><pre>
|
|---|
| 160 | ./configure --enable-qt --with-cc=gcc-4.4 --with-cxx=g++-4.4 --with-xrootd-opts=--syslibs=/usr/lib/x86_64-linux-gnu --prefix=/usr/local
|
|---|
| 161 | </pre></B>
|
|---|
| 162 | - \b make
|
|---|
| 163 | - <b>sudo make install</b>
|
|---|
| 164 | - pray
|
|---|
| 165 | - don't forget to set LD_LIBRARY_PATH correctly before you try to start the fact gui
|
|---|
| 166 |
|
|---|
| 167 |
|
|---|
| 168 | @section demos Current demonstration programs
|
|---|
| 169 |
|
|---|
| 170 | - \b dserver2: A virtual board (A TCP/IP server). It is sending a
|
|---|
| 171 | "hello" message after accepting a communication and then in 3s
|
|---|
| 172 | intervals the current UTC time. The board can be set to state 1 or back
|
|---|
| 173 | to state 0 (just as a demonstration)
|
|---|
| 174 | - \b dclient5: A control program. It accesses two viratual boards (start them
|
|---|
| 175 | with 'dserver2 5000' and 'dserver2 4001') If both boards are connected the START
|
|---|
| 176 | command can be issued to get them to state 'Running'. In this state
|
|---|
| 177 | an asynchronous time stamp can be requested sending the TIME command.
|
|---|
| 178 | to get back from Running to Connected use STOP.
|
|---|
| 179 | - \b test3: a dim console which allows to control all dim servers
|
|---|
| 180 | by sending commands via the dim network.
|
|---|
| 181 | - Both, \b dclient5 and \b test3 accept the command line options -c0, -c1, -c2
|
|---|
| 182 | to switch between different console types (or no console in the case of
|
|---|
| 183 | \b dclient5). In the console you get help with 'h' and the available
|
|---|
| 184 | command with 'c' You get the avilable command-line options with --help
|
|---|
| 185 |
|
|---|
| 186 | First start the two dserver2s. Then start a dclient5 (if you want it
|
|---|
| 187 | with console use one of the -c options) and a test3 console (with one
|
|---|
| 188 | of the console options if you like) you can now control the hardware
|
|---|
| 189 | boards with the START, STOP and TIME commands or stop (Ctrl-C) and
|
|---|
| 190 | start one of the programs to see what's happening. In the test3 case
|
|---|
| 191 | you first have to \e cd to the server to which you want to talk by \b
|
|---|
| 192 | DATA_LOGGER. Don't forget to start \b dns if you want to control dclient5
|
|---|
| 193 | from test3 via Dim.
|
|---|
| 194 |
|
|---|
| 195 | @section dimremarks Remarks about Dim usage
|
|---|
| 196 |
|
|---|
| 197 | To be able to write all received data directly to the FITS files,
|
|---|
| 198 | padding has been disabled calling dic_diable_padding() and
|
|---|
| 199 | dis_disable_padding(). This is done in our own error handler
|
|---|
| 200 | DimErrorRedirecter. Since this should be one of the first
|
|---|
| 201 | objects created in any environment it is quite save. However, every
|
|---|
| 202 | Dim client or server in our network which does not use the
|
|---|
| 203 | DimErrorRedirecter \b must call these two functions as early as
|
|---|
| 204 | possible.
|
|---|
| 205 |
|
|---|
| 206 | <!--
|
|---|
| 207 | @section exitcodes Exit Code
|
|---|
| 208 | @section newcommand How to add a new command?
|
|---|
| 209 | @section description How to add help textes to services and commands?
|
|---|
| 210 | -->
|
|---|
| 211 |
|
|---|
| 212 | @section blocking Blocking programs at startup
|
|---|
| 213 |
|
|---|
| 214 | At startup most programs try to resolve the name of the dim-dns
|
|---|
| 215 | as well as their local IP address. After this Dim is initialized
|
|---|
| 216 | and tries to contact the dns. These are so far the only blocking operations.
|
|---|
| 217 | Be patient at program startup. They will usually timeout after a while and
|
|---|
| 218 | give you proper informations.
|
|---|
| 219 |
|
|---|
| 220 |
|
|---|
| 221 | @section addtab How to add a new tab in the gui?
|
|---|
| 222 |
|
|---|
| 223 | Do the following steps in exactly this order:
|
|---|
| 224 | - Insert the new page from the context menu of the QTabWidget
|
|---|
| 225 | - Copy the QDockWidget from one of the other tabs to the clipboard
|
|---|
| 226 | - Paste the copied QDockWidget and add it to the new tab (only the tab should be highlited)
|
|---|
| 227 | - Now click on the context menu of the region in the tab (QWidget) and change the layout to grid layout
|
|---|
| 228 |
|
|---|
| 229 |
|
|---|
| 230 | @section Documentation
|
|---|
| 231 |
|
|---|
| 232 | Each program has an extensive help text (except the examples). This
|
|---|
| 233 | help text can be displayed with the \b --help option. For each program
|
|---|
| 234 | a man-page is automatically created (from the help-output), which (at
|
|---|
| 235 | the moment) can be accessed with <B>man ./program.man</B> (Don't forget
|
|---|
| 236 | the ./ before the filename). With <B>make program.html</B> and
|
|---|
| 237 | <B>make program.pdf</B> a HTML page and a pdf document can be created
|
|---|
| 238 | from the man-page.
|
|---|
| 239 |
|
|---|
| 240 | With <B>make doxygen-doc</B> the HTML documentation as well as a pdf
|
|---|
| 241 | with the whole code documentation can be created.
|
|---|
| 242 |
|
|---|
| 243 | @subsection FACT++ programs
|
|---|
| 244 |
|
|---|
| 245 | Each documentation is also available with <B>program --help</B> or
|
|---|
| 246 | <B>man ./program.man</B>.
|
|---|
| 247 |
|
|---|
| 248 | In alphabetic order:
|
|---|
| 249 |
|
|---|
| 250 | - <A HREF="man/biasctrl.html">biasctrl</A> [<A HREF="pdf/biasctrl.pdf">pdf</A>]
|
|---|
| 251 | - <A HREF="man/datalogger.html">datalogger</A> [<A HREF="pdf/datalogger.pdf">pdf</A>]
|
|---|
| 252 | - <A HREF="man/dimctrl.html">dimctrl</A> [<A HREF="pdf/dimctrl.pdf">pdf</A>]
|
|---|
| 253 | - <A HREF="man/drivectrl.html">drivectrl</A> [<A HREF="pdf/drivrctrl.pdf">pdf</A>]
|
|---|
| 254 | - <A HREF="man/evtserver.html">evtserver</A> [<A HREF="pdf/evtserver.pdf">pdf</A>]
|
|---|
| 255 | - <A HREF="man/fadctrl.html">fadctrl</A> [<A HREF="pdf/fadctrl.pdf">pdf</A>]
|
|---|
| 256 | - <A HREF="man/feedback.html">feedback</A> [<A HREF="pdf/feedback.pdf">pdf</A>]
|
|---|
| 257 | - <A HREF="man/fitsdump.html">fitsdump</A> [<A HREF="pdf/fitsdump.pdf">pdf</A>]
|
|---|
| 258 | - <A HREF="man/fitscheck.html">fitscheck</A> [<A HREF="pdf/fitscheck.pdf">pdf</A>]
|
|---|
| 259 | - <A HREF="man/fitsselect.html">fitsselect</A> [<A HREF="pdf/fitsselect.pdf">pdf</A>]
|
|---|
| 260 | - <A HREF="man/fscctrl.html">fscctrl</A> [<A HREF="pdf/fscctrl.pdf">pdf</A>]
|
|---|
| 261 | - <A HREF="man/ftmctrl.html">ftmctrl</A> [<A HREF="pdf/ftmctrl.pdf">pdf</A>]
|
|---|
| 262 | - <A HREF="man/getevent.html">getevent</A> [<A HREF="pdf/getevent.pdf">pdf</A>]
|
|---|
| 263 | - <A HREF="man/gpsctrl.html">gpsctrl</A> [<A HREF="pdf/gpsctrl.pdf">pdf</A>]
|
|---|
| 264 | - <A HREF="man/lidctrl.html">lidctrl</A> [<A HREF="pdf/lidctrl.pdf">pdf</A>]
|
|---|
| 265 | - <A HREF="man/magiclidar.html">magiclidar</A> [<A HREF="pdf/magiclidar.pdf">pdf</A>]
|
|---|
| 266 | - <A HREF="man/magicweather.html">magicweather</A> [<A HREF="pdf/magicweather.pdf">pdf</A>]
|
|---|
| 267 | - <A HREF="man/mcp.html">mcp</A> [<A HREF="pdf/mcp.pdf">pdf</A>]
|
|---|
| 268 | - <A HREF="man/pfminictrl.html">pfminictrl</A> [<A HREF="pdf/pfminictrl.pdf">pdf</A>]
|
|---|
| 269 | - <A HREF="man/pwrctrl.html">pwrctrl</A> [<A HREF="pdf/pwrctrl.pdf">pdf</A>]
|
|---|
| 270 | - <A HREF="man/ratecontrol.html">ratecontrol</A> [<A HREF="pdf/ratecontrol.pdf">pdf</A>]
|
|---|
| 271 | - <A HREF="man/ratescan.html">ratescan</A> [<A HREF="pdf/ratescan.pdf">pdf</A>]
|
|---|
| 272 | - <A HREF="man/showlog.html">showlog</A> [<A HREF="pdf/showlog.pdf">pdf</A>]
|
|---|
| 273 | - <A HREF="man/smartfact.html">smartfact</A> [<A HREF="pdf/smartfact.pdf">pdf</A>]
|
|---|
| 274 | - <A HREF="man/sqmctrl.html">sqmctrl</A> [<A HREF="pdf/sqmctrl.pdf">pdf</A>]
|
|---|
| 275 | - <A HREF="man/temperature.html">temperature</A> [<A HREF="pdf/temperature.pdf">pdf</A>]
|
|---|
| 276 | - <A HREF="man/timecheck.html">timecheck</A> [<A HREF="pdf/timecheck.pdf">pdf</A>]
|
|---|
| 277 | - <A HREF="man/tngweather.html">tngweather</A> [<A HREF="pdf/tngweather.pdf">pdf</A>]
|
|---|
| 278 | - <A HREF="man/zfits.html">zfits</A> [<A HREF="pdf/zfits.pdf">pdf</A>]
|
|---|
| 279 |
|
|---|
| 280 | @section References
|
|---|
| 281 |
|
|---|
| 282 | @subsection generalref General references
|
|---|
| 283 | - <A HREF="http://www.cplusplus.com/reference">The C++ reference</A>
|
|---|
| 284 | - <A HREF="http://www.boost.org">boost.org: The boost C++ libraries</A>
|
|---|
| 285 | - <A HREF="http://www.highscore.de/cpp/boost/titelseite.html">Boris Schäling: Die Boost C++ Bibliotheken</A>
|
|---|
| 286 | - <A HREF="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">GNU Readline</A>
|
|---|
| 287 | - <A HREF="http://www.gnu.org/software/ncurses">GNU Ncurses</A>
|
|---|
| 288 | - <A HREF="http://dim.web.cern.ch/">Distributed Information Management (DIM)</A>
|
|---|
| 289 | - <A HREF="http://dim.web.cern.ch/dim/cpp_doc/DimCpp.html">Distributed Information Management (DIM) - C++ reference</A>
|
|---|
| 290 | - <A HREF="http://qt.nokia.com/">Qt homepage</A>
|
|---|
| 291 | - <A HREF="http://qt.nokia.com/downloads/">Qt downloads</A>
|
|---|
| 292 |
|
|---|
| 293 | @subsection boostref Boost references
|
|---|
| 294 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html">boost::bind (V1.45.0)</A>
|
|---|
| 295 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio.html">boost asio (V1.45.0)</A>
|
|---|
| 296 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/date_time.html">boost date_time (V1.45.0)</A>
|
|---|
| 297 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/program_options.html">boost program_options (V1.45.0)</A>
|
|---|
| 298 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/filesystem/v3/doc/index.htm">boost filesystem (V1.45.0)</A>
|
|---|
| 299 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/regex/doc/html/index.html">boost regex (V1.45.0)</A>
|
|---|
| 300 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/system/doc/index.html">boost system (error codes) (V1.45.0)</A>
|
|---|
| 301 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/thread.html">boost thread (V1.45.0)</A>
|
|---|
| 302 | - <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/conversion/lexical_cast.htm">boost lexical_cast (V1.45.0)</A>
|
|---|
| 303 |
|
|---|
| 304 | @subsection fitsref FITS references
|
|---|
| 305 | - <A HREF="http://heasarc.gsfc.nasa.gov/docs/heasarc/fits.html">The FITS data format</A>
|
|---|
| 306 | - <A HREF="http://heasarc.gsfc.nasa.gov/fitsio/">FITS homepage</A>
|
|---|
| 307 | - <A HREF="http://heasarc.gsfc.nasa.gov/fitsio/CCfits/">CCfits - A C++ wrapper to cfitsio</A>
|
|---|
| 308 | - <A HREF="http://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/">fv - A very simple viewer to FITS file contents</A>
|
|---|
| 309 | - <A HREF="http://www.star.bris.ac.uk/~mbt/topcat/">topcat - <B>T</B>ool for <B>OP</B>erations on <B>C</B>atalogues <B>A</B>nd <B>T</B>ables
|
|---|
| 310 |
|
|---|
| 311 | @subsection qtroot How to integrate root in QT?
|
|---|
| 312 |
|
|---|
| 313 | - <A HREF="http://doc.trolltech.com/4.3/designer-creating-custom-widgets.html">QT4: Creating custom widgets</A>
|
|---|
| 314 | - <A HREF="http://root.cern.ch/download/doc/26ROOTandQt.pdf">root: QT integration (pdf)</A>
|
|---|
| 315 |
|
|---|
| 316 |
|
|---|
| 317 | @section availableprograms Available programs
|
|---|
| 318 |
|
|---|
| 319 | - dns: Dim's domain-name-server (needed for any communication between Dim servers and clients)
|
|---|
| 320 | - did: A simple graphical interface to analyse everything in a Dim network
|
|---|
| 321 |
|
|---|
| 322 | @section Examples
|
|---|
| 323 |
|
|---|
| 324 | There are a few example programs
|
|---|
| 325 | - \b ./argv: Example for usage of the class Configure (command line options, configuration file)
|
|---|
| 326 | - \b ./time: Example for the usage of the class Time (time input/output, conversion)
|
|---|
| 327 | - \b ./log, \b ./logtime: A simple Dim-Service/-Client combination using MessageDimRX/MessageDimTX
|
|---|
| 328 |
|
|---|
| 329 | **/
|
|---|