release date: 18.11.2022 We now also provide EmbeddedEngineer Automation. A CLI tool to bring code generation directly into your CI/CD landscape. * We are currently migrating the help page to a new format which will soon become availableWhat's New
General See Added Support for Enterprise Archtiect 16 x32 & x64
Added
no code generation
stereotype
to interfaces
* Added support for multidimensional arrays
* Added support for
define
in interfaces
Added support to persist user code on disabled sync
* Updated to WebView2 (EmbeddedEngineer & UmlDebugger)
* Removed Enterprise Architect check on installation
Updated model reading layer
Updated CLang code style to lateste stable version 15.0.2
Updated
Tagged Value
inherritance throughout the model Extended
Preprocessor Directives
functionality to allow e.g.: extern "C"
* Updated support for
volatile
types Updated
out
parameters to generate pointers Consolidated comment generation
Updated
Primtives
to predefined & reuse const
, volatile
,... model type definitions* Options Added option to seperate implementation and declaration files into seperate folders
* Added option to restrict include generation to explicitly defined includes only
* Added option to
suppress operation prefix
during generation* Added option to
Use Element Alias as Tag Name
for struct
, union
& enum
* Added comment templates
* Added validation for
strict data typing
* Bug fixes Updated examples to latest
Stereotypes
and Tagged Values
Updated examples to eapx (Enterprise Architect 16)
Fixed multiple license checkouts
Cleaned up tailing empty lines in generated code
Fixed generation for
public const
Attributes
Fixed post setup COM registration issue with regasm
Version 3.4
release date: 12.10.2021What's New
General
See
Support for MagicDraw 2021X Added Added ObjectFlow check, to find missing code parst/not generated ObjectFlows Added Removed auto numbering for function internal fields. Added Removed Operation Notes/Comments from CallOperation as fallback. Changed Function pointer implementation to allow usage for every typed element. Changed Operations Interface internal generation order to closer reflect the same order as the one from class generator. Changed Bug fixes
Missing "const" keyword for "public read-only" attributes Fixed Missing Preprocessor Directives for "private static" operation declaration. Fixed Ignored changes of internal settings Fixed
Version 3.3
Added Preprocessor Directives support for Interfaces, Enum, Structs and Unions. Added OpaqueExpression support for InputPin "Default Value". Added support for ReadStructuralFeature and ReadSelf Action Updated Activity action sequence to infer ControlFlow from given ObjectFlows MagicDraw model reading component to improve perfromance. Performance test result loading a ~30MB model: Version 3.2: model loading ~8 min / code generation ~5 min Version 3.3: model loading ~10 sec / code generation ~1 minWhat's New
General
See
Added support to embed Structs and Unions into each other. Added Structures Added feature to allow Preprocessor Directives "flagging" of Usage links. Added Preprocessor Directives Added Preprocessor Directives Added Added Read Structural Feature, Read Self Changed Control Flow Ignoring empty Code Generators to improve performance Changed Changed Bug fixes
Fixed MagicDraw State behavior Naming
(missmatching names of functions).Fixed Fixed MagicDraw ActionNode Input/ValuePin mixup for Call/BehaviorAction targets. Fixed Fixed MagicDraw UML Profile regarding missing and wrongly named Stereotypes and Tagged Values Fixed Fixed MagicDraw progress dialog "No Warnings/Errors" statement. Fixed
Version 3.2
How can I order element or features for generation? FixedWhat's New
General
See
Updated StructuredNode body/part to only search ExecutableNodes with an "action" as starting point. Changed Loop and Loop Node & Conditional Node Interfaces to support generation of nested structs and unions in declaration file Changed Interfaces Interfaces to support generation a structs for defined Attributes in declaration file Changed Interfaces Updated private embedded structure to be included in the private declarations in C++ Changed Updated "CustomSettings" Stereotype to include Enumerations Changed Classes Updated MagicDraw about box to show more information. Changed Updated Requirement and trace relationship check to find more traced requirements. Changed Code Editor starting automatically Changed Code Editor Support for Code Editor to run in background Added Code Editor Added Code Editor "Always Show Code Editor" option Added Code Editor Support to customize generation of includes for Packages, Classes and/or Usage links. Added Dependencies, IncludeStorage in Stereotypes & Tagged Values Generation of union class types Added Structures, union in Stereotypes & Tagged Values "New Version Available" feature, with download link, to show in menu if a new version is available. Added New Version Information Added warning and error counter to show in code generation progress Added Progress dialog Stereotypes
"IncludeStorage" for Packages, Classes and Usage links to contain the IncludeStorage Tagged Values Added Dependencies, Stereotypes & Tagged Values "union" for Classes to generate the class type union Added Structures, Stereotypes & Tagged Values "ordered" for all Elements to contain the Pos Tagged Value (for MagicDraw only) Added How can I order element or features for generation?
Stereotypes & Tagged Values Tagged Values
"IncludeStorage" for Packages, Classes and Usage links to contain the IncludeStorage Tagged Values Added Dependencies, Stereotypes & Tagged Value "Pos" for all Elements to support ordering elements and features for generation (for MagicDraw only) Added
Stereotypes & Tagged ValuesBug fixes
To use Call Operation notes/comment instead of called Operation notes/comment Fixed Fixed generation of Operation Parameter type prefix for nested types in C++ Generation of MISRA compliance comment for modelled "empty" else ControlFlows Fixed Custom file naming and extension error during implementation/declaration file include Fixed Missing array declaration for field initializers in C++ Fixed Code Editor CefSharp/Javascript error in combination with LemonTree addin Fixed MagicDraw model data reader cleanup hang fixed Fixed
Version 3.1
What's New
General | See | ||
Updated internal model reading data layer to newest version | Changed | ||
Improved readability for Activity decisions (removed empty else blocks for "only if" code blocks) | Changed | Decision & Merge (MISRA 14.10) | |
Improved loading mechanism for UMLDebugger code view and diagrams | Changed | ||
Added Trace32 support for UMLDebugger | Added | ||
Added support for multiple/sub dir UDI files in UMLDebugger. | Added | ||
Added ModelElement property to all CustomDocumentation interfaces | Added | Custom Documentation | |
Warning for ignored transitions due to unreachable completion transitions and completion events | Added | Why is a state transition missing in the generated code? | |
Stereotypes | |||
"CustomSettings" for Packages and Classes to contain the Custom naming Tagged Values | Added | Stereotypes & Tagged Values | |
Tagged Values | |||
"CustomClassName" Custom class name for the selected element and sub elements. | Added | Classes - Custom Naming | |
"CustomExtension" Custom extension for generated files of the selected element and sub elements. | Added | Classes - Custom Naming | |
"CustomFileName" Custom filename for generated files of for the selected element and sub elements. | Added | Classes - Custom Naming | |
Bug fixes | |||
Auto kill feature and mutex check removed from MagicDraw code generator to support long running loading tasks. | Fixed | ||
Disabled "Sync User Code" setting still synced code. | Fixed | ||
"Single State Machine instance mode" missing stm instance variable in C++ | Fixed | ||
"Single Class insance mode" me/this pointer generation on private class file declarations. | Fixed | ||
Default value storage issue for Model Settings | Fixed | ||
Possible duplicated include lines due to multiple referencing | Fixed | ||
Model sync error on Opaque/Atomic Actions | Fixed | ||
Nested struct attribute generation issue | Fixed |
Version 3.0
What's New
With Embedded Engineer 3.0 we updated to a new a new licensing mechanism.
It automatically includes a 30 day demo period and also supports floating licenses and offline roaming for up to 30 days.
All customers with valid support/maintenance are entitled to update to the new license.
For a license update or a new license please contact: sales@lieberlieber.com
General | See | ||
Changed licensing mechanism | Changed | Licensing: 3.0 and higher | |
Added support for floating server and offline licenses | Added | Licensing: 3.0 and higher | |
Added integrated 30 day Demo license for testing | Added | Licensing: 3.0 and higher | |
Added user code sync support for Magic Draw Models | Added | ||
Added includes generation for Attributes/Properties | Added | ||
Added capability for code generation for only sub packages | Added | Packages | |
User interface | |||
Added code editor for opaque/user Code with code completion and syntax highlighting | Added | Code Editor | |
Added progress bar and more details for MagicDraw | Added | ||
MagicDraw plugin license from LieberLieber | Changed | Licensing: 3.0 and higher | |
MagicDraw progress dialog can now be resized | Changed | ||
Model settings | |||
Added support for multiple generation languages (one per package). | Added | Packages | |
Added Code Editor Save Strategy for the new code editor. | Added | Model Settings | |
Bug fixes | |||
Added check for CallBehavior and Activity parameters to omit generation of "this/me" parameter for Interface functions. | Fixed | ||
Removed includes for nested Classes | Fixed | ||
Fixed duplicate defines when using "Consider define Scope" Setting | Fixed | ||
Fixed duplicate declarations on static fields | Fixed | ||
Code generation error for parameters in MagicDraw | Fixed | ||
Fixed Json serialization issue for big UDI files | Fixed |
Version 2.6
What's New
Enterprise Architect Version 15
Enterprise Architect Version 15 will handle Tagged Values specified by a Profile differently than previous versions.
Please use the LL Embedded, CustomDocumenation,... and other Stereotypes to use Tagged Values.
For consolidation of old Tagged Values and other issues see: Troubleshooting
e.g.:
Found multiple 'GenSrcDir' Tagged Values in '[PackageName]' please consolidate!
or
Found multiple 'GenerationLanguage' Tagged Values in '[PackageName]' please consolidate!
Model settings (general) | See | ||
Only store changed settings as Tagged Values | Changed | Model Settings | |
Allow saving/loading settings on each package level | Changed | Model Settings | |
Capability to inherit/override settings from parent packages | Added | Model Settings | |
Allow load settings stored in JSON-Format | Added | Model Settings | |
Model settings | |||
"AnsiC class instantiation strategy" to define if the code should contain the statically allocated instance and/or the "new" function to access this instance. | Added | Model Settings | |
"Single Class instance mode" omit the generation of the "this/me" pointer for each Class operation | Added | Model Settings | |
"Single State Machine instance mode" omit the generation of the "stm" pointer for each StateMachine operation | Added | Model Settings | |
Profile | |||
LieberLieber Embedded Engineer Preprocessor a new profile to allow the modelling of C/C++ preprocessor directives | Added | Preprocessor Directive | |
Stereotypes | |||
"declaration" for Classes, Structs, Enum, Functions and Attributes/Properties to define a generic code prefix and suffix | Added | Declaration | |
"CustomDocumentation" for classifiers and packages to contain the "Field, File and Method Headers" Tagged Values | Added | Stereotypes | |
"CodeGenerationSettings" for packages to contain the settings Tagged Values | Added | ||
"standard lib" can now also be assined to Interfaces | Changed | ||
Tagged Values | |||
"Prefix" only in combintation with the "declaration" stereotype. To set a code prefix for the element | Added | Declaration | |
"Suffix" only in combintation with the "declaration" stereotype. To set a code sufix for the element | Added | Declaration | |
"Incorporation" only in combintation with the "declaration" stereotype. To set where the pre-/suffix should be incorporated (.c file, .h file or both) | Added | Declaration | |
General | |||
Code Generation can now be started on any package level as long as one of its parent packages is flagged with the LL Embedded Stereotype | Added | Packages | |
New "Show relevant element in model" in the Code Generation Progress dialog, Messages list. | Added | FAQ'S | |
"Open generation folder" feature in Embedded Engineer context menu. | Added | ||
Detection of Function duplicated/implemented behavior as Activity. | Added | ||
Code Generation for MagicDraw Teamwork Cloud projects | Added | ||
Improved IfThenElse chaining when using multiple Junctions | Changed | ||
Cosmetics | |||
Warning message during generation if conflicts are found during code synchronization | Added | ||
Support for "out" parameter direction during generation (Warning will be generated) | Added | ||
Warning message about empty LoopNode/ConditionalNode Test/Clause/Body parts | Added | ||
Updated check/warning for ActionPin direction in combination with ObjectFlow direction. | Changed | ||
Bugfixes | |||
Error when using multiple default Transitions in combinations with Junctions | Fixed | ||
Issues with generated #ifndef construct when using special characters in Class name. | Fixed | ||
Composite State activation during Transition from external Junction. | Fixed | ||
Improved check of CallOperation parameters to omit generation of "this/me" parameter for Interface functions. | Fixed | ||
ConditionalNode SwitchCase "case default" part generation | Fixed |
Version 2.5
What's New
Modeling Tool support
The latest version incorporates an update of the underlying model access layer / framework for Uml.
This allowed us to also support other Uml modeling tools and lead to some changes in our Uml Profile, as well as the handling of the code generation itself.
(for more information about these changes read below)
Currently supported Uml tools:
- Enterprise Architect
- MagicDraw
Generation Language
Version 2.5 will no longer provide two seperate menu entries for code generation of C++ and AnsiC.
To select the generation language please either:
- use the Tagged Value GenerationLanguage
or - use the LL Embedded Stereotype
at the appropriate package (the same package that has the GenSrcDir set)
Stereotypes | ||
"LL Embedded" containing all necessary Tagged Values for code generation | Added | |
Tagged Values | ||
"GenerationLanguage" allows the selection of the code language to generate | Added | |
General | ||
Replaced individual generation language menu entries with a generic one | Changed | |
Added support for define and typedef attributes in interfaces | Added | |
Added modeling tool information to UmlDebugger info file (.udi) | Added | |
Added model ConnectionString to UmlDebugger info file (.udi) | Added | |
UmlDebugger can now open and read the UmlDebugger info file (.udi) directly | Added | |
Encryption of DataBase ConnectionString in UmlDebugger info file (.udi) to obfuscate DB username and password | Added | |
Obfuscating DB password in UmlDebugger window title | Added | |
Cosmetic | ||
Bugfixes | ||
Improved loading of generated code in the UmlDebugger window | Fixed | |
Updated ModelSettings to read multiple root nodes | Fixed | |
Removed "this" parameter from executable entry point behavior (ClassifierBehavior) | Fixed |
Version 2.3
What's New
Model settings | ||
Added "Consider define scope". If set,will be generated defines private (into the .c file) | Added | |
"Generate 'origin of code' comment" to add/remove comments to user supplied code to find origin elements | Added | |
Stereotypes | ||
"const" for ActivityParameterNodes and operation parameters to support the const keyword | Added | |
Tagged Values | ||
"ReferenceImpl" TaggedValues will be inherited from parents (package, class, operation,...) | Changed | |
General | ||
Support for .eapx Repositories | Added | |
Generating comments for "all" element notes used in behavior diagrams | Added | |
Support to remove all Html style tags from notes/comments | Added | |
Checking if CallOperationAction target is refering to a class attribute and setting the structure reference/dereference according to attribute containment. e.g.: target.method() vs. target->method() | Added | |
Support of variables and defines in Association and Attribute multiplicity | Added | |
Warning user and removing tailing ";" in generated conditions | Added | |
Allow ConditinalNode to define "else" Action (Version 2.3.2) | Added | |
Update Requirement type check (checking for "requirement" in whole stereotype) (Version 2.3.2) | Changed | |
Favour ObjectFlow over ActionPin direction (return parameters) (Version 2.3.2) | Changed | |
Cosmetic | ||
Checking and generation "GenSrcDir" TaggedValue path directory | Added | |
Asking user for generation directory if "GenSrcDir" TaggedValue is missing (also in UML Debugger) | Added | |
Inform user about skipped elements during code generation (Version 2.3.2) | Added | |
Removed unnecessary variables in generated Activities. | Changed | |
Prefering Activity return type from ReturnParameterNode over Activity property | Changed | |
Updated setup promt regarding Enterprise Architect prerequisite and install useraccount | Changed | |
Association and Attribute multiplicity to work with only lowerbound set | Changed | |
Only check skip code generation flag until generation package is reached (not above) (Version 2.3.2) | Changed | |
Bugfixes | ||
Typedef not supporting array definitions/multiplicity | Fixed | |
Illegal "this-pointer" parameter generation in Interface realized functions | Fixed | |
UserCodeSync missing last update from code (only sometimes) | Fixed | |
Error connecting to MySql repositories | Fixed | |
Array field will be generated when creating StateMachine instances via Composition | Fixed | |
Fixed ODBC connection string resolving issue (for code generation and UmlDebugger) (version 2.3.1) | Fixed | |
Fixed logging configuration discarding wrong attributes (version 2.3.1) | Fixed | |
Updated Modelsettings to read from all root nodes (Version 2.3.2) | Fixed | |
Action "RealExpression" reference check during generation | Fixed |
Version 2.2
Tag Update
Because of previouse ambiguous usage and misconceptions we changed the User Code Section tag from:
/* UserCode{GUID}:Hash */ and /* UserCode{GUID} */
to:
/* SyncableUserCode{GUID}:Hash */ and /* SyncableUserCode{GUID} */
to avoid loosing any unsaved changes in your user code, sync your code before installing version 2.2
What's New
The underlying model access layer / framework for Embedded Engineer has been updated to Unique Mint which resulted in an overall performance boost.
Thanks to Unique Mint Embedded Engineer is now also capable of reading more and more precise model data.
Stereotypes | ||
"static" for activities to suppress the generation of a "this-pointer" | Added | |
"switchCase" for ConditionalNodes to generate a "switch case" statement instead of "if ... elseif" | Added | |
"forLoop" for ConditionalNodes to generate a "for" instead of a "while" loop | Added | |
"typedef" for operations to support function pointers | Added | |
"functionPointer" on an attribute to support function pointers | Added | |
Tagged Values | ||
"FieldHeader" for attributes and parents (classes, packages) to support custom field headers | Added | |
"FunctionPointer" for "functionPointer" attributes to specify the operation declaration | Added | |
"Increment" for "forLoop" ConditinalNodes to set the incrementation part | Added | |
"Condition" for "switchCase" ConditinalNodes to set the "switch" condition | Added | |
General | ||
Signals implementation was updated to support multiple/custom Signals enumerations | Added | |
Added warning for transitions from inital states to pseudostates | Added | |
Added support for relative paths (originating from EAP file) | Added | |
Added support for relative paths in compination with "LocalPaths" | Added | |
Added warning if Activity has return parameter but no "ActivityFinal" | Added | |
Implemented checking "scope" of nested elements to change their accessiblity | Added | |
Added support to order/prioritize ControlFlows from Decisions (if ... elseif...) | Added | |
Visual Studio 2017 extension for UmlDebugger | Added | |
Updated serverity, for multiple default transitions originating from the same state, to error | Changed | |
Cosmetics | ||
Displaying: "User requested cancelation" and disabeling "Cancel" button after cancel. | Added | |
Updated progress view to show more information of generation state | Added | |
Improved error messages and error handling for code generation | Changed | |
Updated license texts for code generators | Changed | |
Changed user code tag to: "SyncableUserCode" because of previouse ambiguous usage | Changed | |
Bugfixes | ||
Updated trueValue and falseValue to "boolean by construct" (MISRA 2004 Appendix E: Boolean expressions) | Fixed | |
Aggregation/Composition multiplicities are ignored | Fixed | |
Missing notes for nested struct, enumerations and class elements | Fixed | |
Private nested struct, enumerations and class elements are accessable due to included in the header file | Fixed | |
Sequence error during ConditionalNodes generation | Fixed | |
Missing "this-pointer" on CallOperations actions | Fixed | |
Error forwarding files to UmlDebugger when path to file contained spaces | Fixed | |
Field notes are not generated as comments | Fixed | |
Updated switch case generation to support MISRA Rule 12.5 | Fixed |
Visual Studio 2017
During installation of the Visual Studio extension in Visual Studio 2017 you might get an error:
The following extensions are not compatible with Visual Studio 2017. Installation may cause Visual Studio to be unstable.
The extension was tested with Visual Studio 2017 and no problems where found.
Unique Mint
Tests with the new Unique Mint framework has shown that the EAP models up to 300 MB are no problem.
Version 2.1
What's New
Model settings | ||
Entry to customize clang format style options | Added | |
Entry to generate sub directories for each sub package | Added | |
Entry to generate includes in .c file | Added | |
Entry to configure UserCodeStore (to define if usercode will be stored in Initial Code or Behavior field) | Added | |
Stereotypes | ||
"global" for "use" connectors to support global includes | Added | |
"standard lib" for classes and interfaces to support std. lib includes (include without ".h") | Added | |
"destructor" for operations to generate a destructor method in C++ | Added | |
"qobject" for classes to generate qt event macro | Added | |
"qslot" for operations to generate qt slots | Added | |
"qsignal" for operations to generate qt signals | Added | |
Tagged Values | ||
"FileHeader" for classes and parents (packges) to support custom file headers | Added | |
"MethodHeader" for operations and parents (classes, packages) to support custom operation headers | Added | |
"CustomExtension" for "use" connectors to allow configuration of .hxx, .hpp, ... includes of external libraries | Added | |
"UsingNamespace" for "use" connectors to generate C++ using namespace [name]; statements | Added | |
"NoCodeGen" updated to work for classes and parents (packages) to supress code generation | Changed | |
General | ||
Default argument generation for C++ functions | Added | |
SmartFormat for header templates (file/method header) see https://github.com/scottrippey/SmartFormat.NET/ for documentation | Added | |
Order usings / includes dialog | Added | |
Visual Studio 2015 debugging extension | Added | |
Updated ISystem debugger to support winIDEA Version 9 (Tested with: Build 9.12.288 (63104)) | Changed | |
Updated Clang formatter to: clang-format version 4.0.0 (tags/RELEASE_400/final) | Changed | |
Generation of code and includes for "Signals.h" only when needed | Changed | |
Cosmetics | ||
Code generation progress dialog column autoresize to always show full width | Changed | |
Generate empty User Code Sync comments for all elements | Changed | |
Bugfixes | ||
C code generation: private operations no longer included in header file | Fixed | |
Updated if generation to support MISRA Rule 12.5 | Fixed | |
Added function prototype to C code generator to ensure C89 compatibility | Fixed | |
typedef used default value to redefine type (added support to use type field) | Fixed |
Version 2.0
Embedded Engineer 2.0 was released on October 14, 2015
When upgrading from Embedded Engineer 1.2, please see the upgrade notes.
What's New
Model Settings Dialog | Added | |
User Code Synchronization | Added | |
Requirements Tracking | Added | |
C++ Inheritance Support | Added | |
Method Parameter Documentation | Added | |
Added progress window for code generation | Added | |
Side by side installation of Embedded Engineer 2.0 and older versions | Added | |
Generate documentation for return value of methods | Added | |
virtual, pure modifiers for operations in C++ support | Added | |
const, IsQuery, inline modifiers for operations in C++ support | Added | |
ByReference, const (readonly stereotype) support | Added | |
enum documentation support | Added | |
protected visibility support (C++) | Added | |
Comment style "//" for C++ (instead of old school comments "/* ... */") | Added | |
Documentation comments "///" generation - e.g. documentation comments for methods, method parameters, ... | Added | |
Warning messages for logging - e.g. using aggregate connector and adding explicit member in class generates warning instead of error, because code will be generated correctly | Changed | |
Strings (constants) for array size support | Added | |
Source code formatting optimized | Changed | |
Infinite loop detection for state machines | Added | |
C++ changed to use this-> (instead of C me->) | Changed | |
Handle invalid path characters | Changed | |
UML Debugger highlight colors changed (readability on projector increased) | Changed | |
Activity parameters with InOut direction are now generated with pointer semantics | Changed | |
Pointer to paramter in CallBehavior Action added (pointer to struct for call behavior action to call an activity with in/out parameter) | Added | |
Support for code generation for elements which are not part of classes improved (i.e. structs in C) | Changed | |
Comments for do-actions | Added | |
struct generation in C | Fixed | |
Storage class generated as static when classifier containing the attribute is static | Fixed | |
Debug information for control flows | Fixed | |
Debug information for If Then Else chains | Fixed | |
private fields generation (in .h files and static behavior) | Fixed | |
Missing semicolon on LoopNodes in C++ | Fixed | |
Using return parameter for activity returns - not the out parameter | Fixed | |
Private struct in static class generation | Fixed | |
Public const attributes in .h-file generation | Fixed | |
typedef classes generate behavior | Fixed | |
Invalid generated code for compound transitions with more than one "default" transition from a pseudo state | Fixed | |
Initial value for static attributes in classes with static stereotype support | Fixed |