source: trunk/FACT++/MAINPAGE.md@ 20020

Last change on this file since 20020 was 19866, checked in by tbretz, 5 years ago
Updated
File size: 12.5 KB
Line 
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
41FACT++ 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
47it includes a dim version which is automatically compiled.
48
49Installation instructions can be found at
50- <A HREF="https://trac.fact-project.org/wiki/InstallingFACT++">TRAC:InstallingFACT++</A>.
51
52WARNING - Some infomration here migzt be outdated. Please refer to the
53TRAC for up-to-date information.
54
55
56@subsection packages Required packages
57
58The following section gives a list of packages which were necessary after
59a fresh Ubuntu 11.04 installation. In addition to all the development
60packages the corresponding package with the library is needed.
61
62Note that a recent C++ compiler is needed supporting the latest C++0x
63standard.
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
120If you intend to change only Makefile.am but not configure.ac the \b automake
121package 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<!--
145VIEWER
146libqwt5-qt4-dev
147libqwt5-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>
155cd /usr/local
156sudo 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
186First start the two dserver2s. Then start a dclient5 (if you want it
187with console use one of the -c options) and a test3 console (with one
188of the console options if you like) you can now control the hardware
189boards with the START, STOP and TIME commands or stop (Ctrl-C) and
190start one of the programs to see what's happening. In the test3 case
191you first have to \e cd to the server to which you want to talk by \b
192DATA_LOGGER. Don't forget to start \b dns if you want to control dclient5
193from test3 via Dim.
194
195@section dimremarks Remarks about Dim usage
196
197To be able to write all received data directly to the FITS files,
198padding has been disabled calling dic_diable_padding() and
199dis_disable_padding(). This is done in our own error handler
200DimErrorRedirecter. Since this should be one of the first
201objects created in any environment it is quite save. However, every
202Dim client or server in our network which does not use the
203DimErrorRedirecter \b must call these two functions as early as
204possible.
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
214At startup most programs try to resolve the name of the dim-dns
215as well as their local IP address. After this Dim is initialized
216and tries to contact the dns. These are so far the only blocking operations.
217Be patient at program startup. They will usually timeout after a while and
218give you proper informations.
219
220
221@section addtab How to add a new tab in the gui?
222
223Do 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
232Each program has an extensive help text (except the examples). This
233help text can be displayed with the \b --help option. For each program
234a man-page is automatically created (from the help-output), which (at
235the moment) can be accessed with <B>man ./program.man</B> (Don't forget
236the ./ 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
238from the man-page.
239
240With <B>make doxygen-doc</B> the HTML documentation as well as a pdf
241with the whole code documentation can be created.
242
243@subsection FACT++ programs
244
245Each documentation is also available with <B>program --help</B> or
246<B>man ./program.man</B>.
247
248In 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&auml;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
324There 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**/
Note: See TracBrowser for help on using the repository browser.