Since version 6.4 the handling of history states has been changed. It is now possible to end a transition in a history state. Only if a transition ends in a history state will the previous history be taken into account when entering the state set. Otherwise the default entry chain is used. The new parameter TransitionsCanEndInHistoryStates
has been added to enable this feature. This new feature makes history state handling more powerful and the designer's intent clearer than before. An example of the new possibilities is shown in the following figure.
This release adds another way to influence the signature of the processEvent() method in C++.
This version provides some small updates for the Python backend and fixes an issue with the C Sharp backend.
Bugfix in the C++ backend. Relevant for users who have state machines with regions and do not want event handler parameters. With previous version a msg parameter of the region code was generated. In the previous version, a msg parameter was incorrectly generated for the region handler code. This has now been corrected.
A state machine with regions can be in more than one state at a time. Previously the getInnermostActiveState() function only returned the topmost state the state machine was in. With this release, some backends can return more states to reflect the real situation.
In the case of C++11, the generated function has this signature:
auto oven::getInnermostActiveStates() const -> std::forward_list<oven::States>{ std::forward_list<oven::States> stateList; ... return stateList; }
JavaScript is now supported as new target language for the code generator
Go is now supported as new target language for the code generator
Changes:
New features:
Experimental support for DrawIO added
Small bug-fixes and several improvements in the built-in graphical state diagram editor.
Only available as jar download. Small bug-fixes in the built-in graphical state diagram editor as well as small improvements in the C-backend. It is better taking care of C89 only compilers.
Several minor improvements especially for the cbackend. With some new configuration parameters, the generated code now passes the clang-tidy checks for c++11 with ''modernise-'' checks enabled. A new example has been added to the examples folder to show how to set the parameters in a sensible way. === 1. March 2023 users.
This new version improved region handling for own instance data types. Recommended update for all C backend users. Additionally it improves XMI parsing of attributes and methods for the various supported UML tools.
This new version brings Ctemplate parameters to the event handler method. As well as the option to hand over a user defined parameter to the event handler method in C#. Both increases flexibility to hand over data together with the event to the state machine.
=== January 2022 backend now supports the ValidationCall
parameter.
Several usability improvements, bug fixes and new functions esp. in the built-in editor. Recommended for all users. A detailed change log is available in the Codegen Manual.
. Complete rewritten built-in editor. Generate state diagram within minutes. Editor has full support for regions.
This new version provides a backend for Lua. It is the first state machine code generator from UML state diagrams/machines to Lua. Lua is a lightweight, embeddable scripting language. It follows the approach described by Roberto Ierusalimschy in his book. More information is available here.
This is a bug-fix version and recommended for all users. For users of the Cadifra tool connection points were added to keep oversight in complex diagrams more easy. Connection points are a well known concept in circuit diagram drawing tools. More details can be found in the sinelabore manual (Cadifra part).
This tutorial explains the use of state machines with the PIC16F18446 Curiosity Nano board. Go on reading ...
Tests of new EA version 13 were successful. If you find any flaws using the codegen with the new version send a bug report please.
Energia is based on the Arduino IDE and is a great IDE for processors form Texas Instruments. The new example on GitHub shows the integration of code generated from the sinelabore code generator into the Energia IDE. What does the demo do: The flash frequency of the green LED on the MSP430FR5969 LaunchPad can be controlled. A minimal timer and queueing lib is used as basis to be prepared for much more challenging tasks. You will see the benefit of state machine modeling over direct coding. Take a look at the state diagrams and the generated code here! Or download the example and try it out yourself.
Recommended for all C# users and those who use the built in editor/simulator.
There is a new article in the “Designers Toolbox” explaining the special features for for High-Availability and Safety Systems offered from the C-backend.
With version 3.7 is is now possible to generate Python code. The state machine code is generated as a Python class. All relevant state machine features are available. Look into the manual for details. The fully working microwave oven code is available in the examples folder. It contains a TKinter GUI wich makes simulation and testing of the generated state machine even simpler.