All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
RKH Reference Manual

"A behavioral description of a system specifies dynamic aspects of the entire system or of a particular function, including control and timming. It specifies the states and modes that the system might reside in and the transitions between them. It also describes what causes activities to start and stop, and the way the system reacts to various events. A natural technique for describing the dynamic of a system is to use a finite state machine. The described system of function is always in one of a finite set of states. When an event occurrs, the system reacts by performing actions. The events causing the reaction are called triggers."

David Harel


This manual includes:


RKH is a generic, flexible, modular, highly portable, ANSI-C compliant, and open-source development tool for implementing hierarchical state machines based on modern state machine concepts. This modern techniques are used to give an abstract description of the dynamic behavior of a system in a substantial manner. RKH is built based on platform-independent modules which is shown in the following figure.


The key features of the RKH framework:

Purpose and inspiration

For many years, I had been used the traditional state machine concepts based on state table strategy for modeling the dynamic behavior of several reactive-systems, in many industries. Over the years, this implementation was expanding its abilities to support system requirements increasingly complex, achieving hierarchically nested states, pseudostates, compound transitions, and more, proposed by Harel Statecharts.

The RKH not implements neither entire UML specs. nor entire Statechart specs. Instead, the RKH intention is to support just enough basic concepts of that powerful tools to facilitate the reactive-system modeling holding a solid, and efficient implementation. Broadly speaking, the RKH implementation has been designed from the ground up to be used in 8-bits platforms but can be easily adapted to 16 or 32-bits platforms.


RKH download: http://sourceforge.net/projects/rkh-reactivesys/

Other implementations

Open-source frameworks that support Statecharts.


  • M. Samek - "Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems", http://www.state-machine.com/psicc2/
  • M. Samek and P. Montgomery - "State-Oriented Programming", http://www.embedded.com/2000/0008/0008feat1.htm
  • D. Harel - "Statecharts: A Visual Formalism for Complex Systems", Sci. Comput. Programming 8 (1987), 231-274.
  • D. Harel and A. Pnueli - "On the Development of Reactive Systems", in Logics and Models of Concurrent Systems (K. R. Apt, ed.), NATO ASI Series, Vol. F-13, Springer-Verlag, New York, 1985, pp. 477-498.
  • D. Harel - "On Visual Formalisms", Comm. Assoc. Comput. Mach. 31:5 (1988), 514-530.
  • D. Harel and A. Naamad - "The STATEMATE Semantics of Statecharts", ACM Trans. on Software Engineering Method. 5:4 (October 1996), 293-333.
  • D. Harel and H. Kugler - "The Rhapsody Semantics of Statecharts", Lecture Notes in Computer Science, Vol. 3147, Springer-Verlag, 2004, pp. 325-354


Copyright (C) 2010 Leandro Francucci. All rights reserved.

RKH is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

RKH is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with RKH package. If not, see http://www.gnu.org/licenses/.

(*) Observe that, the GPLv3 can be used for research & development and educational purposes (academic purposes).
(**) When the source code of your application should not be published under the GNU GPLv3 license (closed source code), please, contact contact me. See Contact information section.

Contact information

RKH web site: http://sourceforge.net/projects/rkh-reactivesys/
e-mail: lf@vx.nosp@m.tsol.nosp@m.ution.nosp@m.s.co.nosp@m.m.ar


I would like to thank to Eduardo Martinez for introducing me to the reactive systems problems and Dario Balina for they suggestions, they time, and constructive criticism during lengthy period in which the RKH project was being developed.