This release adds a possibility to implement an agent as hierarchical state machine. Version 5.5.15 supports such features for agent's states as composite states, shallow- and deep-history, on_enter/on_exit handlers, time limits, transfer_to_state (a kind of deferring of events) and suppression of events.

Just a short example of new features: an agent which implements blinking of LED indicator. This agent receives turn_on_off signal for turning blinking on and off. When blinking is turned on then agent switches LED indicator on for 1.5s then switches it off for 0.75s then switches on again and so on until the agent receives next turn_on_off signal. A statechart for that agent can be represented as:



A code for such agent can look like:

class blinking_led final : public so_5 :: agent_t { state_t off { this }, blinking { this }, blink_on { initial_substate_of { blinking } }, blink_off { substate_of { blinking } }; public : struct turn_on_off : public so_5 :: signal_t {}; blinking_led ( context_t ctx ) : so_5 :: agent_t { ctx } { this >>= off ; off . just_switch_to < turn_on_off > ( blinking ); blinking . just_switch_to < turn_on_off > ( off ); blink_on . on_enter ( []{ /* some device-specific code */ } ) . on_exit ( []{ /* some device-specific code */ } ) . time_limit ( std :: chrono :: milliseconds { 1500 }, blink_off ); blink_off . time_limit ( std :: chrono :: milliseconds { 750 }, blink_on ); } };

For more details please look to the corresponding Wiki section: [so-5.5 In-depth - Agent States]

There is also updated version of second part of "Deep Dive into SObjectizer-5.5" presentation which gives an overview of agent's states in SObjectizer.

The v.5.5.15 can be obtained from the corresponding Files section or can be checked out from Subversion repository, or from mirror on GitHub.

There are the following archives in the Files section:

so-5.5.15 (zip) -- this is source code of SObjectizer core (with sources of samples and tests);

so-5.5.15--bin-msvs2015-x86 (zip) -- the full source code with 32-bit binaries for Windows (compiled by MS Visual Studio 2015 Express Update1);

so-5.5.15--bin-msvs2015-x86_amd64 (zip) -- the full source code with 64-bit binaries for Windows (compiled by MS Visual Studio 2015 Express Update1).

Please note that since v.5.5.10 there are no archives with Doxygen-generated docs and binaries created by MS Visual Studio 2013. Those archives can be created and uploaded by request (if someone needed them).