David Brooks
President - Embedded Medical Devices

Finally, an inexpensive and lightweight tool seemingly perfectly designed for embedded software. I've used OOSMOS in three medical devices thus far, one of which obtained FDA clearance and went on the market in April 2019. I'm super excited about OOSMOS and will use it regularly in the future. So, I thought I would share my perspective with you.
OOSMOS is low cost and poses no threat to your budget. Even if you decide it's not the best tool for your project, give it a try. Unlike other lightweight state machine tools on the market:

  • You don't need to pay for a tool-specific graphical modeler. OOSMOS uses the free and popular open-source UML tool called UMLet for drawing state charts. The workflow results in clean and extremely readable state charts. If you understand UML and state charts, you will find UMLet and OOSMOS easy to use. Open UMLet and you are ready to draw.
  • Expensive training is not required to use OOSMOS. The OOSMOS website covers all the details, including a section on Coding Conventions used within OOSMOS and also intended for your application. The website is complete and chocked full of example state charts and generated code.
  • For large state machines, multiple developers can work on their own piece of the machine, and it can all be brought together, as intended, in a single file.
  • And for those in regulated industries, the framework includes a simple means for tracing requirements to states, transitions and code without clutter.

And talk about lightweight, in my application OOSMOS itself compiled to about 2.2KB of executable Flash code and only a dozen bytes of RAM, all the while supporting hierarchical state machines, the simultaneous existence of object threads, state threads and non-blocking microsecond delays.
As the name indicates, the OOSMOS framework is object-oriented and uses C, still the most widely used language in embedded systems. The framework provides encapsulation better than C++, employing a typedef of an incomplete type to expose only a pointer to the object to the outside world.
And, of course, OOSMOS includes a code generator. Since OOSMOS is object-oriented, the code associated with a given object and its state chart belongs in a single C file. Other so-called lightweight modelers and generators take full ownership of the generated files, forcing you to enter your code right in the modeler. OOSMOS uses a simple tagging technique to wrap the generated code. You can then add your own code to the file within your own editor.
OOSMOS even provides an expanding list of reusable classes. Yes, the reusable classes mean you don't need to write the code yourself. Give it a try and let me know what you think.

David Brooks
Embedded Medical, LLC
February 9, 2020
Copyright © 2014-2020  OOSMOS, LLC