StateSmith
HFSM2
Our great sponsors
StateSmith | HFSM2 | |
---|---|---|
16 | 3 | |
443 | 434 | |
5.9% | - | |
8.4 | 5.0 | |
about 23 hours ago | 14 days ago | |
C# | C++ | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
StateSmith
-
State machine library for portable embedded application (C++11)
I wrote StateSmith to be super portable. It has zero dependencies and avoids the heap. Works great with draw.io https://github.com/StateSmith/StateSmith/
-
Generating state machines from draw.io diagrams with StateSmith - my first real C# project :) Supports C#, C99, JS right now.
No worries. If you are just getting started with state machines, here's a page with some quick guidance and typical uses: https://github.com/StateSmith/StateSmith/wiki/App-Notes
-
StateSmith supports draw.io! Embedded state machines in style :)
Great suggestion! I added this issue to track it: https://github.com/StateSmith/StateSmith/issues/101
-
Embedded Systems Weekly #120
StateSmith StateSmith is a new cross-platform, free and open source tool for generating state machines. The author explains his motivation to develop a new library with this statement: "I couldn't find a state machine code generator that was suitable for low level embedded application use, had an attractive license, and was enjoyable to use." We all hope Adam Fraser-Kruck will continue to work on StateSmith and to maintain it.
-
I wrote StateSmith with embedded devs (like me) in mind. It compiles diagrams to FSM C or C++. Below sim uses arduino, but any platform works. Would you use it? Why/not? Feedback welcome!
PlantUML input is now supported in the dev branch. Two examples are updated to use it and they generate the same .c code as the yEd diagrams so it looks to be working well. Thanks for the suggestion!
-
If you deal in state machines, you might enjoy StateSmith. It compiles diagrams to C or C++ with zero dependencies. Free & opensource.
If speed is super important to your application, feel free to open an [issue](https://github.com/StateSmith/StateSmith/issues) so that you'll know when I start work on it.
-
I just released a free/opensource project that generates state machines from diagrams! Here's an arduino laser tag menu built with StateSmith.
Lots of documentation and examples at the repo: https://github.com/StateSmith/StateSmith/
HFSM2
- State machine library for portable embedded application (C++11)
- HFSM2 development might slow down
-
Introducing FFSM2 and HFSM2 state machine libraries
Here is a gist showing a 3 level hierarchy using sml. https://gist.github.com/indiosmo/08ab24181770125d5a2448d27f6ae99f. Comparing the two, esp. when anything related to *hierarchical* state machines are involved, I strongly prefer HFSM2. Even when comparing the source code, I prefer HFSM2 https://github.com/andrew-gresyk/HFSM2/blob/master/include/hfsm2/machine.hpp to boost::sml https://github.com/boost-ext/sml/blob/master/include/boost/sml.hpp.
What are some alternatives?
PipelineC-Graphics - Graphics demos
roost-hsm - Hierarchical State Machines in C++. A (sane) alternative to Boost MSM.
tlsd - Generate (message) sequence diagrams from TLA+ state traces
sml - C++14 State Machine library
Facts-about-State-Machines - I hold the opinion that state machines are underrated
amp-embedded-infra-lib - amp-embedded-infra-lib is a set of C++ libraries and headers that provide heap-less, STL like, infrastructure for embedded software development
csv2 - Fast CSV parser and writer for Modern C++
BackportCpp - Library of backported modern C++ types to work with C++11
hsm - C++ framework library to simplify state-driven code
hfst - Helsinki Finite-State Technology (library and application suite)
entt - Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more
CppML - A concise and readable metaprogramming language for C++