Integrate Applications with PHENOM & CinC: Difference between revisions

From PHENOM Portal Knowledgebase
Jump to navigation Jump to search
No edit summary
Line 7: Line 7:


==Preparing PHENOM==
==Preparing PHENOM==
In this tutorial, you will integrate two software applications.  For the sake of simplicity, they will be integrated into a single executable.  This will allow you to see the result of the integration by running a single file.  This tutorial uses the Integration Model as shown in a previous tutorial.
In this tutorial, you will integrate two software applications, enabling them to communicate with each other.  For the sake of simplicity, they will be integrated into a single executable.  This will allow you to see the result of the integration by running a single file.  This tutorial uses the Integration Model as shown in a previous tutorial.


Start by downloading this data model: [[File:robot_model_with_integration_model.skayl]]
Start by downloading this data model: [[File:robot_model_with_integration_model.skayl]]

Revision as of 14:40, 19 January 2026

DRAFT DRAFT DRAFT This page has not yet been tested.

This tutorial will walk a user through the compilation and execution of a CinC-based application. It builds upon other tutorials in PHENOM. As such, it uses the same principles as Integration Model to CinC Generation, but the content is different.

Preparing PHENOM

In this tutorial, you will integrate two software applications, enabling them to communicate with each other. For the sake of simplicity, they will be integrated into a single executable. This will allow you to see the result of the integration by running a single file. This tutorial uses the Integration Model as shown in a previous tutorial.

Start by downloading this data model: File:Robot model with integration model.skayl

If you need help loading the project file, please view this tutorial: Creating a Project from an Existing Model.

Export a CinC Package

Log into PHENOM and click on the GENERATE icon in the vertical bar on the left-hand side of the screen.

Select the CINC tab.

Please make the following choices:

  • CinC Artifact CinC
  • CinC Version CinC 2.2.3 (note, other versions may work, this was tested with v2.2.3)
  • FACE Version 3.0
  • Language c++
  • Override namespaces? Not Selected
  • System Directory Test_System
  • Include CinC Source? Selected
  • Include Model files? Selected
  • Selection Type Mains and UoPs

There is a prompt to Select your Mains and UoPs. Since the project was setup to have both applications in a single executable, both UoPs are listed under a single main. Ensure all three elements are selected, like this:

Next, select a license. For this tutorial, you should choose Evaluation.

And finally, click GENERATE. PHENOM will start creating your source package and your browser will automatically download it once complete.

Prepare the Environment

In your Windows user folder (typically C:\Users\<username>), create (or edit) the .wslconfig file.

Make sure the file contains the following entries:

[wsl2]
networkingMode=mirrored

[experimental]
hostAddressLoopback=true

Start your WSL instance, and ensure the proper packages are installed:

apt install make
apt install g++
apt install cmake

Setup the Project

Unzip your CinC project in your user home (or other) directory. This will create a subdirectory called cinc-2.2.3.

From the wsl prompt, the command might look something like this:

username@MachineName:~$ unzip /mnt/c/users/username/downloads/RobotModelProject_face3_cinc_<timestamp>.zip

If unzip is not installed, run sudo apt install unzip.

Install Pthread4W (Pthreads for Windows)

Obtain a copy of Pthreads4W here: https://github.com/jwinarske/pthreads4w

Unzip the pthreads file and copy the pthreads4w-cmake directory into the cinc-2.2.3 directory.

Ensure the tools to build pthreads are installed:

sudo apt install automake libtool mingw-w64

Then build pthreads from the pthreads folder:

autoheader
autoconf
mkdir -p build-win64 && cd build-win64
../configure --host=x86_64-w64-mingw32 --prefix="$PWD/install"
make clean GC

Build CinC

Return to the main cinc folder cin-2.2.3 and run the following commands:

cmake .
make

Configure the Logger

Although you can run your application at this point, it will produce no visible output.

Edit Test_System/Config/DemoMain/TSS/TSS_TATS.xml file.

Find the logging_config section of the config. If it does not exist, add it as the first block inside the 'cinc' configuration. The final result should look something like the following:

<cinc>
    <logging_config>
        ...
        <logger type='uop' level='info' show_source='true' />
    </logging_config>
    ...
</cinc>

Where '...' represents other data that may be present.

Run CinC

From the cinc-2.2.3 directory, start your application using:

./Test_System/Mains/Robot_Demo/Robot_Demo

PHENOM has created a very basic implementation of each UoP. Transmitted data is populated with a constant value (typically pi). The logger indicated that information is being sent. The receiving application decodes the data type and prints the received value. If the application is printing out "3.14" along with some other information, it is working.