EXAMPLE PURPOSE:
----------------

This example demonstrates the capacity of PragmaDev Studio to generate code that 
can be integrated in an external scheduler. The whole system only contains 2
processes: pSender, sending sPing to pReceiver, which sends back sAck to
pSender, which sends sOver to the environment. Each process is in its own PragmaDev 
Studio project, and generating the code for any of the projects will only generate 
the code for the process. The whole system is built via an external makefile,
gathering the generated code from both projects and some external code as well.


EXAMPLE CONTENTS:
-----------------

The example directory contains the following files:
+ PartialCodeGen-ADVANCED
  - all_messages.txt            File containing all message names,
                                required in the code generation profiles in
                                both projects
  - all_processes.txt           File containing all process names,
                                required in the code generation profiles in
                                both projects
  + ccg_unix                    Code generation directory for the final whole
                                system on Unix (Linux, macOS, Solaris)
    - Makefile                  Makefile for the final whole system on Unix
                                (Linux, macOS, Solaris)
  + ccg_windows                 Code generation directory for the final whole
                                system on Windows
    - Makefile                  Makefile for the final whole system on Windows
  + common                      Directory for common code and parts shared
                                between both projects
    - common.c                  Functions for custom scheduler, including
                                message sending and main for scheduler itself
    - common.h                  Common definitions for custom scheduler
    + profile                   Directory for custom profile for partial code
                                generation
      + bricks                  Bricks used in code generation
        - RTDS_Include.c        Single brick for shared includes
      - DefaultOptions.ini      Profile options
      - RTDS_ADDL_MACRO.h       Scheduler-specific macro definitions
      - RTDS_BasicTypes.h       Basic types definitions, used in RTDS_Common.h
      - RTDS_MACRO.h            General macros for profile.
    - SignalDefinitions.rdx     Project sub-tree file for package
                                containing signal definitions.
    - Signals.rdm               File containing signal definitions.
  - README.txt                  This file.
  + ReceiverProject             Directory for the project for receiver process
    + ccg_unix                  Code generation directory for receiver process
                                on Unix (Linux, macOS, Solaris)
    + ccg_windows               Code generation directory for receiver process
                                on Windows
    - depl.rdd                  Deployment diagram specifying scheduling for
                                receiver process
    - pReceiver.rdd             Diagram for receiver process
    - ReceiverProject.rdp       Project for receiver process
    - sReceiver.rdd             System for receiver process
  + SenderProject               Directory for the project for sender process
    + ccg_unix                  Code generation directory for sender process on
                                Unix (Linux, macOS, Solaris)
    + ccg_windows               Code generation directory for sender process on
                                Windows
    - depl.rdd                  Deployment diagram specifying scheduling for
                                sender process
    - pSender.rdd               Diagram for sender process
    - SenderProject.rdp         Project for sender process
    - sSender.rdd               System for sender process
  - sReceiver.rdd               System for receiver process in the whole
                                architecture as a block.
  - sSender.rdd                 System for sender process in the whole
                                architecture as a block.
  - sWholeSystem.rdd            Whole system, showing the architecture for all
                                the parts.
  - TopLevelProject-START_HERE.rdd
                                Project for whole architecture. Please note the
                                diagrams for the processes are actually the
                                diagrams used for code generation, so modifying
                                them here will modifiy the generated code.

For more information, please refer to the comments in the various files.


INSTRUCTIONS:
-------------

To make the example work, the following actions should be done:
- Run a PragmaDev Studio, and open the sender project in it.
- Select the deployment diagram 'depl', and run a code generation on it,
  selecting a code generation profile for your platform. This will just
  generate source and header files, no build will occur.
- Open the receiver project in PragmaDev Studio.
- Select the deployment diagram 'depl' and run a code generation on it. Here
  also, no build should occur.
- Close PragmaDev Studio.
- In a terminal, go to the directory:
  PartialCodeGen/ccg_<platform>
- Make sure the environment for PragmaDev Studio is correctly set. The RTDS_HOME
  environment variable must be defined correctly for the build process to work.
- Run 'make' on Unix or 'mingw32-make' on Windows

An executable called 'whole_system' ('whole_system.exe' on Windows) should be
produced by the build. Running this executable should print 'Over!' in the
terminal and exit.
