State machines are a common formalism to express reactive behavior that needs to react on some events, correlate events, and produce some new events. A state machine-based programming language is thus a good candidate to implement Kevoree components and write the logic that orchestrates the different ports of this component.
ThingML is developed as a domain-specific modeling/programming language which includes concepts to describe both software components and communication protocols. The formalism used is a combination of architecture models, state machines and an imperative action language.
The ThingML toolset includes text editors to create and edit ThingML models, a set of transformations to create diagrams from ThingML models and a set of code generators to compile ThingML to C, Java and Scala.
The work described in this section "Make a Component with ThingML" has beed funded by the FP7 EU Project HEADS