Project Settings (DATAFLOW Designer)

by Marco Wuelser

 

The Project Settings contain all settings for a single project inside a DATAFLOW Solution. These settings will stored inside the solution and will be the same for all users.

Note: When a user changes any project setting, this will affect all other users of the same project.

 

Open Project Settings Dialog

The Dialog to edit the Project Settings can be shown in the following ways:

icons8-ctrl-48.pngicons8-alt-48.pngicons8-l-key-48.png

Press Ctrl + Alt + L on the Keyboard

mceclip0.png

Select 'Project settings' from the Project context menu shown when the Project entry is right clicked in the Explorer Window.

Note: The Project Setting dialog is always opened for the current project. This is determined by the current editor opened in the DATAFLOW Designer.

 

Dialog Actions

mceclip0.png

icons8-esc-48.png The Dialog can be closed by pressing the ESC key on the keyboard, the Cancel button or the Cross Button in the top right corner. This will discard all changes.
mceclip1.png
mceclip3.png
mceclip2.png The Confirm button will save all changes and close the dialog.
mceclip4.png

The Apply button will save all changes, but the dialog will not be closed.

 

 

Project Setting Pages

The dialog is organized in pages. The following pages are shown for a System Project:

  • Project Info
  • Validation
  • Build
  • Toolchain
  • Path macros
  • Document Export

For a Library project, the available pages are limited to:

  • Project Info
  • Path macros

In this section, all settings for each page are explained.

 

Project Info Page

The Project Info page shows read only information on the current project.

Required Module: DATAFLOW Designer

mceclip0.png

Name This field shows the name of the project. To change this, rename the project in the Explorer Window.
Type This field indicates the project type. This can be a system or library project. The project type can not be changed once a project is created.
Storage Format This field shows the storage format of the project (single file or multi file). This is based on the Solution Storage Format. In V2.0, projects can not have another storage format as the solution.
Created This field shows the time stamp when the project has been created.
Created By This field shows the name of the user that has created the project.
Last Changed This field shows the time stamp when the project has been last saved.
Changed By This field shows the name of the user that has last saved the project.

 

Path Macro Page

The path macro page allows the user to view and edit path macros for the Project.

Group: Environment

Required Module: DATAFLOW Designer

mceclip1.png

This page works exactly as the same Page as documented in the Application Options reference article. In addition to the Application Macros, this page will also show the Macros defined for the whole Solution and for the Project.

 

Validation Page

The validation page allows to disable validation messages (except errors).

mceclip1.png

Message Checkbox For every message on Warning and Info level, a checkbox is shown. When this checkbox is unchecked, this type of message will not been reported on model validation for any build configuration in this project.

Model validation is explained in detail in the Model Validation article.

 

Build Configuration Page

The Build Configuration Page shows all Build Configurations defined in the Project.

mceclip3.png

Build Configuration List This list shows all build configurations in the project. This allows to select the build configuration to be edited.

 

Define Build Configurations is explained in detail in the Build Configuration article.

 

This page contains the following sub pages:

  • General
  • Platform
  • Configuration
  • Deployment
  • Language
  • Generator
  • Coding Style
  • Unit Test

 

General Page

On the General Page, the code generation can be enabled/disabled and the name of the build configuration can be changed.

mceclip3.png

mceclip1.png

Code Generation When this checkbox is unchecked, no code is generated for this build configuration. This also disables all toolchains that have been assigned to the build configuration.
Type Indicates the type of build configuration. This depends on the element the build configuration has been created on and can be Component or Library.
Display Name The Display Name of the Build Configuration can be changed in this dialog at any point. It is only used in the Designer to identify a build configuration. It is recommended to use unique names for all build configurations in a system.
Referenced Build Configs

When there are multiple build configurations in the same project, there will be a checkbox shown for each of them in this group. Checking a build configuration will add a dependency from the current build configuration to the checked build configuration.

This is used to add files generated by the other build configuration to generated IDE projects.

See the Guide for Code Generation for more information.

 

Platform Page

On the Platform Page the target platform for the generated code can be configured. Changes on this page will impact other settings for this build configuration.

mceclip4.png

Runtime Architecture

This field defines the type of runtime that is used for the generated application code. This will have impact on the following:

  • Available Runtime Features
  • Generated Startup Code
  • Deployed Runtime Packages

When this field is set to Custom, no Runtime package will be deployed or added to generated IDE projects. The developer must add these manually.

Runtime Version

This field defines the version of runtime that is used for the generated application code. This will have impact on the following:

  • Available Runtime Features
Target Platform

This field defines the target platform. This will have impact on the following:

  • Available Runtime Features
  • Generated Startup Code
  • Deployed HAL / OS Wrapper Packages

When this field is set to Custom, no HAL or OS wrapper package will be deployed or added to generated IDE projects. The developer must add these manually.

Imt.Base Packages This field is used to select wether the generated code shall use binary or source code packages for all Imt.Base dependencies. This will impact the project generator.
Optional Packages When a checkbox next to an optional package is checked, this package will be included in deployment. If the package requires configuration, this will be shown in the configuration page.

Note: The active license must support code generation for the selected target platform. If an un-licenced  configuration is selected, the code generation will fail with a license error.

Note: The runtime packages for the selected runtime and target platform as well as all optional libraries must be installed in the Application Options in order for the Project generator to deploy these. If packages are missing, source code can still be generated, but the generated IDE projects will not compile due to missing dependencies.

 

Configuration Page

On the Configuration Page, the configuration for each Imt.Base package can be customized. The available settings and packages on this page depend on the configured runtime type, version and the selected optional packages.

mceclip6.png

 

Platform Group

mceclip10.png

Custom Defines

All code that is added to this field will be written to the PlatformConfigApp configuration header file without any changes. This can be used to add custom defines or constants.

Note: This field must contain valid code in the configured target language.

Note: See the Imt.Base API Documentation for more details.

 

Diagnostics Group

mceclip11.png

Register Custom Assert Handlers

When this checkbox is checked, the code generator will add a Custom assert handler to the callback folder (see Source Code Paths). This allows the developer to define custom assert handling.

See the Imt.Base API Documentation for more details.

Custom Defines

All code that is added to this field will be written to the DiagnosticsConfigApp configuration header file without any changes. This can be used to add custom defines or constants.

This field must contain valid code in the configured target language.

See the Imt.Base API Documentation for more details.

 

Math Group

This group is only shown for runtime versions of 3.0 or newer. This package is not available for older runtime versions.

mceclip12.png

Override Math Operator This group provides check boxes to add a custom implementation for a group of math operators. When checked, the user code must contain an implementation for the given operators. When unchecked, the implementation proviced by the Imt.Base.Core.Math package is used.

 

Runtime Group

mceclip13.png

Use Runtime Statistics

When this checkbox is checked, the code generator will add a FreeRunningTimer and StatisticsCalibration file to the Statistics folder (See Source Code Paths). This allows the developer to add the required user code to use the Statistics Feature of the DATAFLOW runtime.

In addition, the project generator will add a Statistics configuration to the generated IDE project.

Use Small Event Buffer When this checkbox is checked, the small event buffer is enabled in the runtime configuration.
Custom Idle Callback

When this checkbox is checked, a Idle Callback is generated to the Callbacks folder (see Source Code Paths). This allows the developer to implement a custom behaviour when the Runtime has no work to do.

For more information see the DATAFLOW Runtime API Documentation.

Custom Event Pool Capacity Callback

When this checkbox is checked, an Event Capacity Callback is generated to the Callbacks folder (see Source Code Paths). This allows the developer to discard events when the event pool reaches a high water mark.

For more information see the DATAFLOW Runtime API Documentation.

Tick Length The tick length is used to show the correct timer length in the DATAFLOW Designer. All timers intervals in the model are defined as number of ticks. The displayed value in milliseconds is based on this value.
Event Pool Size

This field defines the number of events allocated in the static event pool.

This value must be defined based on the developed application and can not be automatically determined.

Event Size

This field defines the number of bytes allocated for each event in the event pool.

Note: This value can be automatically generated from the model when the checkbox is set. To set a manual value, uncheck the checkbox.

The automated value is defined by the largest protocol size in the generated model.

Small Event Pool Size

This field defines the number of events allocated in the static small event pool.

This value must be defined based on the developed application and can not be automatically determined.

Small Event Pool Threshold

This value defines the threshold for events to be added to the small event pool. All events above this threshold will use the regular event pool.

Note: This value can be automatically generated from the model when the checkbox is set. To set a manual value, uncheck the checkbox.

The automated value is defined by the smallest protocol size in the generated model.

Executable Pool Size

This field defines the maximal number of active parts (executables) the application can use.

Note: This value can be automatically generated from the model when the checkbox is set. To set a manual value, uncheck the checkbox.

The automated value is defined by the number of active parts in the generated model.

Timer Pool Size

This field defines the maximal number of timers the application can use.

Note: This value can be automatically generated from the model when the checkbox is set. To set a manual value, uncheck the checkbox.

The automated value is defined by the number of timers in the generated model.

Default Stack Size

This value defines the default stack size allocated for an active part. An individual stack size can be defined for each active part in the model. This value is only used for runtime that do not use a single stack (RTOS Runtime).

This value must be defined based on the developed application and can not be automatically determined.

 

Remoting Group

This group is only shown when the Imt.Base.Lib.Remoting optional package is selected on the Platform page.

mceclip14.png

Frame Pool Size

This value defines the number of remote frames in the frame pool. The required number of frames must be adjusted to the user code. Each remoting stack used requires 2 frames (one for send, one for received) per layer. A typical value for one active part with send and receive on 3 layers (physical, framing, CRC) would be 6.

Note: See Imt.Base API Documentation for more details.

Frame Size This field defines the number of bytes allocated for a single data frame. This must contain the remote object and all additional data sent over the serial connection. This is defined by the added layers. A typical value is remote object size + 5 bytes (2 byte CRC, 2 Byte Message Identifier, 1 byte message delimiter)
Remote Object Size

The field defines the maximal size for a remote object sent over the serial connection.

Note: This value can be automatically generated from the model when the checkbox is set. To set a manual value, uncheck the checkbox.

The automated value is defined by the largest protocol size that has the 'Is Remote Object' property checked.

Remote Object Registry Size

This field defines the maximal number of remote objects that can be registred.

Note: This value can be automatically generated from the model when the checkbox is set. To set a manual value, uncheck the checkbox.

The automated value is defined by the sum of protocols that have the 'Is Remote Object' property checked.

 

Footprint Group

This group shows an estimated static memory footprint for the generated application.

Note: This is not possible for the Windows runtime, because dynamic memory will be used.

mceclip15.png

R/W Data This field shows the estimated size of the generated application in read/write memory. This is typically placed in RAM. It is calculated based on the configured data pool sizes and adds a constant value based on the configured runtime type. It does not account for any user code.
RO Data This field shows the estimated size of the generated application in read only memory. This is typically placed in Flash. It is calculated based on the configured data pool sizes and adds a constant value based on the configured runtime type. It does not account for any user code.
Total Footprint The sum of the above values.

 

Deployment Page

mceclip8.png

Imt.Base Directory This field defines the path to the Imt.Base packages. This is used by the project generator to deploy packages (see below) and also added to the generated IDE project configuration.
Extract Libraries When this checkbox is checked, the project generator will deploy the Imt.Base packages required for the Build Configuration.
Extract Documentation

When this checkbox is checked, the project generator will include PDF files in the deployed packages. When unchecked, no PDF files will be deployed.

The Imt.Base packages can contain Datasheets and Reference manuals for the target hardware as PDF files.

This is ignored when Extract Libraries is not checked.

 

Language Page

mceclip9.png

Target Language This field defines the target language for the code generator. This must be supported by all toolchains used to compile the generated code to avoid compiler errors.
Constructor Arguments This field defines the maximal number of arguments for a custom constructor. The code generator will not generate custom constructors for data types (e.g. protocols) with more fields.
Directory for Root Namespace When this checkbox is checked., the code generator will create a folder for the root namespace. When unchecked, the root namespace is still added to all generated files, but not folder is created.
Export Types to Global Namespace

When this checkbox is checked, the code generator will add an using statement to all generated header files for each type defined in this header. This allows to use any generated type from the global namespace.

This is not recommendet. It is provided for backwards compatibility reasons because older versions of the Imt.Base packages did require this. Do not enable this for new projects bcause it will lead to the code smell 'global namespace pollution'.

Trailing Return Types

This is available for C++11 or newer only.

When checked, this will use the trailing return type for all generated methods.

Static Code Checker This field defines the static code checker suppression format to be used.
Language Rulesets This field allows to select all language rule-sets for which the code generator must generate static code checker suppressions. This is a multi select field. To disable generation of suppressions, this field must be empty.
Documentation Style This field defines the format of all generated documentation comments in C++ header files.

 

Generator Page

mceclip14.png

Source Paths Group

mceclip15.png

Root Path

This field defines the root path for all generated source code of this build configuration.

This path must not overlap with any other build configuration in this project or solution to avoid source code to be overwritten or deleted by the code generator.

Components

This field defines the sub folder for all component source code. This includes active parts, active interrupts and active containers.

The generated files will be placed in sub folders based on the namespace of the component.

Data Types

This field defines the sub folder for all data type source code. This includes protocol identifiers, protocols, structs, enumerations and custom types.

The generated files will be placed in sub folders based on the namespace of the data type (type groups).

Startup Code

This field defines the sub folder for all startup source code. This includes the startup controller and handler.

Callbacks This field defines the sub folder for all callback source code. This includes the generated idle callback, event capacity callback and custom assert handlers.
Buffers This field defines the sub folder for all static buffer source code. This includes the generated data pools.
Statistics This field defines the sub folder for all statistics source code. This includes the free running timer and calibration.

Sub folders can be set to an empty values of the generated code shall be placed in the root folder. Additional folders may be created based on the namespace even if all sub folders are empty.

 

Source Code Group

mceclip16.png

Generate Components
When this field is checked, the code generator will generated source code for components. This include active parts, active interrupts and active containers.
Generate Data Types
When this field is checked, the code generator will generate source code for all data types defined in the same project. This includes identifiers, protocols, structs, enumerations and custom types.
Generate Referenced Data Types
When this field is checked, the code generator will generate source code for all data type defined in referenced projects.
Generate Startup Code
When this field is checked, the code generator will generated startup code for the application. This includes the startup controller, callbacks, buffers and staticstics code.
Overwrite AP Handlers

When this field is checked, the code generator will overwrite all existing handler and callback files. This will overwrite user code.

When the field is not checked, any existing user code file will be preserved.

Protect Generated Files When this file is checked, all generated files that are not meant to be changed by the developer will have the read only flag set in the local file system.
Header File Template This field allows to define the file header for all generated header files. To edit, click the [...] button on the right of the field. This shows a dialog to edit the header. All available placeholders are shown. These will be replaced by the code generator.
Source File Template This field allows to define the file header for all generated source files. To edit, click the [...] button on the right of the field. This shows a dialog to edit the header. All available placeholders are shown. These will be replaced by the code generator.

 

Generator Group

mceclip0.png

Executable

This field defines the path to the binary of the code generator to be used for this build configuration.

Only change this field when instructed to do so by IMT.

Custom Arguments

This field allows to send command line arguments to the code generator. Add one argument per line.

Only change this field when instructed to do so by IMT.

Intermediate Path

This file contains the path the intermediate files for code generation will be written to.

These files will be overwritten whenever code is generated and are not required to be saved with the project. Therfore a temporary folder can be used.

Model Files The sub folder for all generated model files for the code generator.
Config Files The sub folder for all generated config files for the code generator.
Meta Files

The sub folder for all generated meta files by the code generator.

These files are used by the Project Generator to locate all generated files.

Intermediate File Template This field allows to define the file header for all generated modle files. To edit, click the [...] button on the right of the field. This shows a dialog to edit the header. All available placeholders are shown. These will be replaced by the code generator.

 

Coding Style Page

mceclip12.png

Whitespaces Group

mceclip17.png

Brace Style

This field defines the brace style for all generated code. Available options are:

  • K&R
  • Allman
  • IMT (Modified K&R)
Indent Symbol When this field is checked, all generated indents will use tabs instead of spaces.
Number of Symbols per Indent This field defines the number of spaces (or tabs) used for a single indent.
Line Endings This field defines the line ending format (UNIX or Windows) used for all generated code files.

 

Indent Levels Group

mceclip18.png

Indent The indent level indicates how many indent levels are added for a certain code section. Each indent level is equal to the number of white spaces configured above.

 

Padding Group

mceclip19.png

Padding

Defines the padding for the given code symbol. Padding adds spaces before and/or after the symbol. For lists, adding a space before, inbetween and after arguments can also be enabled.

The code generator will merge multiple spaces into one, e.g. when there is a space after an open parentheses and one before the first argument.

 

Unit Test Page

mceclip13.png

mceclip11.png

Test Framework
This field defines the test framework used to run the generated test code. In V2.0 the only option is MS Test.
Generate Component Tests
When this field is checked, the code generator will generated unit test code for all generated components. This include active parts, active interrupts and active containers.
Generate Data Type Tests
When this field is checked, the code generator will generate unit test code for all generated data types (see Generator configuration). This includes protocols, structs and custom types.
Generate Custom Test Base Class
When this field is checked, a TestBase.cpp file is generated. This can be used to clean up static mocks between each test case and is recommended to be enabled.
Overwrite AP Test Cases

When this field is checked, the code generator will overwrite all existing Active part and active interrupt test files. This will overwrite user code.

When the field is not checked, any existing user code file will be preserved.

Tests for active containers and data types is always overwritten because no user code shall be added to these.

Test File Template This field allows to define the file header for all generated unit test files. To edit, click the [...] button on the right of the field. This shows a dialog to edit the header. All available placeholders are shown. These will be replaced by the code generator.
Test Root Path

This field defines the root path for all generated test code of this build configuration.

This path must not overlap with any other build configuration in this project or solution to avoid code to be overwritten or deleted by the code generator.

Component Path

This field defines the sub folder for all component test code. This includes active parts, active interrupts and active containers.

The generated files will be placed in sub folders based on the namespace of the component.

Data Type Path

This field defines the sub folder for all data type test code. This includes  protocols, structs and custom types.

The generated files will be placed in sub folders based on the namespace of the data type (type groups).

Test Case Categories
For each type of unit test, the test category can be defined. This will be written to the attribute of each unit test method of the given type.

 

Toolchain Page

mceclip4.png

Build Configuration List This list shows all build configurations in the project. A toolchain is always assigned to a build configuration.
Toolchain Drop Down This field allows to select the toolchain inside the selected build configuration to be edited.
Add Button When this button is clicked, a new Toolchain is added to the selected build configuration.
Remove Button When this button is clicked, the selected Toolchain is removed from the selected build configuration.

Define Toolchain Configurations is explained in detail in the Toolchain Guide article.

 

General Page

mceclip5.png

IDE Project Generation When unchecked, no project files will be generated for this toolchain configuration.
Display Name The Name of the Toolchain Configuration can be changed in this field at any point. It is only used in the Designer to identify a toolchain configuration. It is recommended to use unique names for all toolchain  configurations in a system.
Root Component This field shows the name of the component the toolchain is assigned to, defined by the build configuration. (Read Only)
Name This field shows the name of the template used to create the toolchain (read only).
Type This field shows the type of the project generator (read only).
IDE This field shows the target IDE of the project generator (read only).
Version This field shows the version of the project generator (read only).

 

IDE Page

mceclip6.png

mceclip10.png

mceclip9.png

Workspace/Solution Location

This field defines the path for the generated IDE configuration files.

This must not overlap with any other toolchain in the project.

Create Subdirectory per Project
When this field is checked, each project inside the generated IDE workspace/solution will be placed in its own sub folder.
Workspace/Solution Name The name of the generated IDE workspace/solution. When this field is empty, the name of the Build Configuration is used instead.
Windows SDK
For Windows based builds, the Windows SDK must be configured. The developer must ensure that this SDK is available, otherwise building the generated solution will not be possible.
Config Header Location

For a Non IDE Toolchain the path to the folder the configuration files will be generated is configured.

Note: The Headers will be placed in a sub folder called 'Config' at the given path. This matches the behavior of the other toolchains, where the config files are always in a sub folder relative to the workspace/solution location.

 

Configurations Page

This page shows all build configurations that will be added to the created IDE project. This is based on the toolchain template and build configuration.

Target Templates will add Debug and Release. Unit Test Templates will add UnitTest. If the Runtime Statistics is enabled, a Statistics configuration is added for the Target template.

mceclip7.png

Copy Configuration Headers When this field is checked, the project generator will create Imt.Base configuration header files with the configuration defined in the Build Configuration and place them in a Config subfolder inside the configured Workspace/Solution folder.
Preprocessor Definitions This field shows all pre-processor definitions added to the IDE project by the project generator. These are based on the configured target platform and build configuration.
Custom Preprocessor Definitions This field allows to add custom pre-processor definitions to the generated IDE configurations. It is possible to add a definition to all or only to a specific configuration settings for the Imt.Base packages.

 

Packages Page

This page shows which Imt.Base packages are used for deployment and allows to check if all dependencies are fullfilled.

mceclip8.png

Imt.Base Directory The target directory for the deployment as defined in the build configuration (read only).
Used Packages All Imt.Base packages used for the deployment of this toolchain.
Missing Packages Imt.Base packages that could not be found. When such packages are displayed, the build will fail and no deployment will be performed. Source Code will still be generated.
Install Missing Packages

When this button is clicked, the Application Options dialog is opened, so that the user can install missing packages.

Note: Based on the build configuration there may be a combination of package platform, version and type (source/binary) that is not avaliable or for which you do not have a valid license. Please contant IMT for details.

Deployed Packages This field lists all Imt.Base projects that will be deployed to the Imt.Base folder.

 

Document Export Page

mceclip2.png

Orientation This field defines the orientation of all pages in the exported document.
Size This page defines the page size used for all pages in the exported document.
Margin This page defines the margin on all 4 borders used for all pages in the exported document.
Even Page Margin When checked, a second set of margin is used for all event pages instead of the margin above.
Table of Contents When checked, a table of contents is added as first page of the exported document.
Logo Path This field defines the path of a logo file used in the exported document. An empty path means that the document does not contain a logo.
Logo Location This field defines where the logo is placed in the document header.
Header and Footer Text

Header and Footer are divided in 3 areas: Left, Center and Right. For each of these 6 areas, a text can be defined. This text allows certain placeholders.

Note: The logo is placed in one of these position. For this, no text can be defined.

 

This Article has been written based on V2.0.1 of the DATAFLOW Designer software. 
Latest update 2022-04-09 by WUE.

Go back