Integrate Applications with PHENOM & CinC

From PHENOM Portal Knowledgebase
Revision as of 14:20, 20 January 2026 by Chris (talk | contribs)
Jump to navigation Jump to search

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


Load this model into a new project in PHENOM. If you need help loading the project file, please view this tutorial: Creating a Project from an Existing Model.

Export a CinC Package

In PHENOM, 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 and v2.3.1)
  • 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 update

apt install make
apt install g++
apt install cmake
apt install unzip

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

Build CinC

Return to the main cinc folder cinc-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/Robot_Demo/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.