Papyrus-RT is an open-source industrial-grade, complete modeling environment for the development of complex, software intensive, real-time, embedded, cyber-physical systems.
This presentation discusses the motivations for the project, the UML-RT language, the tool and the code generation.
This presentation was given in the Open-Source Software for Model Driven Engineering workshop (OSS4MDE'15) collocated with the MODELS'15 conference, Ottawa, Canada, September 29, 2015.
When we generate code we generate a main file that spawns these controllers.
Why xtUMLrt? (1) common core with xtUML (sort of); not final, but a starting point towards unification. (2) simpler than UML2 => simplified transformations. (3) issolate from the tool.
Why C++ model? (1) avoid regeneration of source C++ files (reduce target build times) (2) automatic synch of header/implementaiton files.
More on xtUMLrt: far from a unified language; work on real unification of UML-RT and xtUML is ongoing (= not finished); work on PSCS is ongoing), but we needed something to work with; we couldn’t wait until that work was finished, so we (Zeligsoft, IncQuery, Ericsson Budapest) develop this to get the ball rolling.
Create plugin project
Add dependencies to
org.eclipse.papyrusrt.codegen.cpp
org.eclipse.papyrusrt.xtumlrt.common
org.eclipse.papyrusrt.codegen.lang.cpp
Add extension to
org.eclipse.papyrusrt.codegen.cpp.generator
Define a subclass of
oep.codegen.cpp.AbstractCppGenerator
implement AbstractCppGenerator.Factory
The generator extension:
Type: ClassGenerator, CapsuleGenerator, etc.
Class: your AbstractCppGenerator.Factory
Dealing with inter-element dependencies
Incremental generation
Code for an element depends on code generated for another element