YAKINDU, Statecharts, Embedded, State Machine, english

YAKINDU Statechart Tools January release 2019 – new and noteworthy

Today we released YAKINDU Statechart Tools Standard and Professional Editions in version 3.5.0. In total, 146 issues (Standard and Professional Edition) were fixed during the last 3 months. Moreover, we added a rich set of new and noteworthy features:

  • Deep Java integration (YAKINDU Professional Edition)
  • Tracing callbacks for C++ and Java (YAKINDU Standard Edition)
  • Qt C++ code generator (YAKINDU Labs)
  • In-event queue for C++ code generator (YAKINDU Standard Edition)

Eclipse platform

We upgraded the underlying Eclipse platform to the new Eclipse 09-2018 release. This will be the last release of YAKINDU Statechart Tools that supports 32-bit versions since the Eclipse Foundation decided to drop 32-bit with the 12-2018 release.

However, you will still be able to install YAKINDU Statechart Tools into an older 32-bit Eclipse version via our update site – only the bundled products won’t support 32-bit in the future.

Deep Java integration (beta)

YAKINDU Statechart Tools Deep Java Integration beta

 

After more than a year of work, we are proud to present the first beta release of deep Java integration in YAKINDU Statechart Tools. It allows you to directly access Java APIs in your statechart, and it hence facilitates an incorporation of state machine modeling in your Java development process. The beta version contains the following features:

  • You can import Java classes, interfaces and enums in your statechart and use them for your statechart variables.
  • You can access all public and static members, like variables and methods directly from the statechart. This avoids lots of boilerplate code.
  • Java methods that are used in your statechart will be called during simulation. This avoids the cumbersome mocking of return values in the simulation view.

You can read more and watch a video in the following blog post:
https://blogs.itemis.com/en/statechart-modeling-for-java-development.

If you are interested in testing the beta version, you can register as a beta tester here:
https://info.itemis.com/en/yakindu/state-machine/beta/deep-java-integration.

Tracing callbacks for C++ and Java

The tracing feature enables the generation of tracing callback functions for Java and C++. We added a new feature to the generator model where you can configure the tracing events you are interested in:

feature Tracing {
    enterState = true
    exitState  = true
}

 

The enterState parameter specifies whether to generate a callback function that is used to notify about state-entering events, and the exitState parameter specifies whether to generate a callback that is used to notify about state-exiting events.

Qt C++ code generator

With the SCXML domain, we already have a powerful and flexible way to integrate YAKINDU Statechart Tools into Qt applications. But there are still use cases where you can’t use the Qt SCXML Interpreter. That is why we started the development of a Qt C++ code generator and released a first version via our YAKINDU labs update site.

The Qt specific flavor of the C++ code generator makes use of Qt signals and slots. So the generated state machine can easily be integrated into Qt applications using this mechanism.

The generated statemachine inherits from QObject. A QTimer-based implementation of a timer service is generated, if the statechart makes use of time triggers.
An example of the Qt C++ code generator together with a simple QML user interface is available via our example wizard.

In-event queue support for C++ code generator

The C++ code generator now also supports an additional event queue for incoming events if the statechart is event-driven. To enable it, set the inEventQueue option of the GenerationOptions feature to true.

If an operation callback or function is executed by the state machine and that functions raises an event, this event will be appended to the in-event queue. The state machine's API will remain unchanged. After processing of the origin event is completed, all events in the in-events queue will be processed automatically in the order they were raised.

To enable the in-event queue, add the following generator option to your .sgen file:

feature GeneratorOptions {
    inEventQueue = true
}

Miscellaneous

  • We improved the generated code in terms of readability and removed superfluous parts (see issues #295 and #227).
  • For the C code generator, the definition of sc_null changed in sc_types.h since the existing definition clashes with certain C compilers. You will have to regenerate the sc_types.h file in your workspace to remove compile errors (see issue #2555).
  • We fixed several bugs in the SCXML domain and added a detection for endless loops for invalid models that contain dead locks.

 

You can update your existing version of YAKINDU Statechart Tools via Help → Check for updates or download the latest version of YAKINDU Statechart Tools here:

Download-YAKINDU-Statechart-Tools

   
About Andreas Mülder

Andreas Mülder works as a principal software engineer at itemis in Lünen since 2007. He is project lead of YAKINDU Statechart Tools and YAKINDU Solidity Tools. For more information, visit http://www.statecharts.org