Skip to main content

[Pro] Coffee Machine with C++ integration

This is a example for the deep C++ integration of CREATE statecharts. It shows how C++ classes can be used as variables and is based on the C example:

Model

The statechart consists of two major states "ON" and "OFF". The "ON" state is a composite state with several substates and substate machines for the different modes.

Using deep C++ integration​

Imported classes can be referenced by declaring a variable and using the class as the type of it. Within the example two classes are referenced:

  • var cm : Coffee_Machine
  • var hmi : CM_HMI

They can be used to access members of the class, like functions, variables, typedefs, etc. For example the class Coffe_Machine, which is declared as the variable cm, includes a function called stop heating: Functions

Simulation​

The declared variables can be used and changed in the simulation view.SimulationView

Generate state machine code​

If you have changed the model you can generate state machine code by right-click on 'CoffeeMachine.sgen' and choose 'Generate Code Artefacts'. This will generate:

  • CoffeeMachineCpp.hpp
  • CoffeeMachineCpp.cpp

Get this example​

The complete project — statechart models, sources and build files — lives in the itemis CREATE examples repository. Inside itemis CREATE for Eclipse you can import it directly with the example wizard.