/** \addtogroup GRAS_API
\section GRAS_funct Offered functionnalities
- - <b>Communication facilities</b>: Exchanging messages between peers
+ - <b>\ref GRAS_comm</b>: Exchanging messages between peers
- \ref GRAS_dd : any data which may transit on the network must be
described beforehand so that GRAS can handle the platform
heterogeneity and convert them if needed.
- \ref GRAS_timer : this is how to program repetitive and delayed
tasks, not unlike cron(8) and at(1). This cannot be used to timeout
a function (like setitimer(2) or signal(2) games could do).
- - <b>Virtualization</b>: Running both on top of the simulator and on
+ - <b>\ref GRAS_run</b>: Running both on top of the simulator and on
top of real platforms, and portability support.
- \ref GRAS_virtu : You naturally don't want to call the
gettimeofday(2) function in simulation mode since it would give
- \ref GRAS_emul : Support to emulate code excution (ie, reporting
execution time into the simulator and having code sections specific
to simulation or to real mode).
- - <b>Project management tools</b>: Here are some tools which may help
+ - <b>\ref GRAS_code</b>: Here are some tools which may help
you setting up a GRAS project.\n
Setting up and building a GRAS application is complicated by the
library schizoid. The code to setup the environment differs
- \ref GRAS_ex_ping
- \ref GRAS_ex_mmrpc
- \ref GRAS_ex_timer
-
+
+ @{ */
+ /** @defgroup GRAS_comm Communication facilities */
+ /** @defgroup GRAS_run Virtualization */
+ /** @defgroup GRAS_code Project and code management */
+ /** @defgroup GRAS_ex Examples */
+/** @} */
+#####################################################################
+/** @addtogroup GRAS_comm
+
+ Here are the communication facilities. GRAS allows you to exchange
+ <i>messages</i> on <i>sockets</i> (which can be seen as pipes between
+ processes). On reception, messages start <i>callbacks</i> (that's the
+ default communication mode, not the only one). All messages of a given
+ type convey the same kind of data, and you have to describe it
+ beforehand.
+
+ Timers are also seen as a mean of communication (with yourself). It
+ allows you to run a repetitive task ("do this every N second until I tell
+ you to stop"), or to deffer a treatment ("do this in 3 sec").
+
@{ */
/** @defgroup GRAS_dd Data description */
/** @defgroup GRAS_sock Sockets */
/** @defgroup GRAS_msg Messages */
/** @defgroup GRAS_timer Timers */
+
+/** @} */
+#####################################################################
+/** @addtogroup GRAS_run
+
+ Virtualization facilities allow your code to run both on top of the simulator or in real setting.
+
+ @{ */
/** @defgroup GRAS_globals Globals */
/** @defgroup GRAS_emul Emulation support */
/** @} */
+#####################################################################
+/** @addtogroup GRAS_code
+
+ Here is how to setup your code when you want to use GRAS. You will also
+ learn how to get the most repetitive parts of your code generated
+ automatically.
+
+ (use the tabs on top of the page to navigate)
+
+ \htmlonly <!--
+ DOXYGEN_NAVBAR_LABEL="Project management"
+ DOXYGEN_NAVBAR_CHILD "main() and GRAS"=GRAS_main_generation.html
+ DOXYGEN_NAVBAR_CHILD "Compiling your GRAS project"=GRAS_compile.html
+ --> \endhtmlonly
+*/
+
+#####################################################################
+/** @addtogroup GRAS_ex
+
+ There is for now rather few examples of GRAS, but it's better than
+ nothing, isn't it?
+
+ - \ref GRAS_ex_ping
+ - \ref GRAS_ex_mmrpc
+ - \ref GRAS_ex_timer
+
+ \htmlonly <!--
+ DOXYGEN_NAVBAR_CHILD "Ping-Pong"=GRAS_ex_ping.html
+ DOXYGEN_NAVBAR_CHILD "RPC"=GRAS_ex_mmrpc.html
+ DOXYGEN_NAVBAR_CHILD "Timers"=GRAS_ex_timer.html
+ --> \endhtmlonly
+
+ There is some more examples in the distribution, under the directory
+ <tt>examples/gras</tt>.
+*/
+
#####################################################################
######################### EXTRA PAGES ##############################
#####################################################################
--------------------- main() generation -----------------------------
---------------------------------------------------------------------
-/** \page GRAS_main_generation main() and GRAS
-
- <center>[\ref GRAS_API]</center>
+/** \page GRAS_main_generation main function
\section GRAS_maingen_toc Table of content
------------------------- Compiling ---------------------------------
---------------------------------------------------------------------
-/** \page GRAS_compile Compiling your GRAS project
-
- <center>[\ref GRAS_API]</center>
+/** \page GRAS_compile Compiling your project
As explained in section \ref GRAS_main_generation, the
gras_stub_generator tool can be used to generate the system
/** \page GRAS_ex_ping The classical Ping-Pong in GRAS
- <center>[\ref GRAS_API]</center>
-
This example implements the very classical ping-pong in GRAS. It
involves a client (initiating the ping-pong) and a server (answering to
client's requests).
/** \page GRAS_ex_mmrpc A simple RPC for matrix multiplication
- <center>[\ref GRAS_API]</center>
-
This example implements a remote matrix multiplication. It involves a client
(creating the matrices and sending the multiplications requests) and a server
(computing the multiplication on client's behalf).
/** \page GRAS_ex_timer Some timer games
- <center>[\ref GRAS_API]</center>
-
This example fools around with the GRAS timers (\ref GRAS_timer). It is
mainly a regression test, since it uses almost all timer features.