Package: opengeode-maxime1008
OpenGEODEOpenGEODE is an open-source SDL editor that is developed for
the purpose of providing an easy to use and free state machine editor and
Ada code generator to the TASTE toolchain from the European Space Agency,
running in combination with ESA's "Space Certifiable" ASN.1 compiler.SDL is the Specification and Description Language (Z100 standard from ITU-T).This is NOT related to the graphical Simple DirectMedia Layer libraries!Visithttp://sdl-forum.orgfor more information about SDL.FeaturesGraphical editor of SDL processes and procedures.Support for state composition and state aggregation (parallel/nested states)Works on pure PR+CIF files (textual SDL notation)Supports ASN.1 data types using ESA Space Certified compiler (www.github.com/ttsiodras/asn1scc)Generates Ada codeAutomatic conversion to Statechart diagramsSave the complete or parts of the model to PNG/SVG/PDF filesHyperlinks (link a symbol content to any external document or web page)Context-dependent text auto-completionSyntax highlightingUndo/Redo, Copy-Paste(Limited) VIM mode - You can use :wq or :%s,search,replace,g, and /search patternPython API to parse and render SDL from other Python modulesSimulator (prototype)Main limitationsSupports only one process at a time (useTASTEto connect processes to form a complete system)Minimal support of legacy SDL datatypes (newtypes/synonyms..): use ASN.1 insteadInstallationOpenGEODE is made primarily for Linux.It is part of theTASTE projectIt is installed with all dependencies in the TASTE virtual machine that you can download fromthis link. Manual installation is possible in a native Linux environment.
Debian 10 (buster) is the baseline. Recent versions of Ubuntu (20.x) should work as well.Using TASTEImportant: OpenGEODE is already installed in the TASTE Virtual Machine, and fully integrated with the toolset, however, the current TASTE VM is a bit old - it is based on Debian 9 which does not have important dependencies to support the latest version of OpenGEODE. It is missing Python 3.7+ and PySide2. An upgrade is in the works, but it's not ready yet. If you are familiar enough with Linux, you can manually upgrade by completing the following steps.Install theTASTE VM. Once logged in, enter a new shell and:# Switch to root
sudo su

# Make sure VM image is up to date
apt-get update
apt-get upgrade
apt-get dist-upgrade

# Point APT to Buster to prepare for upgrade
sed -i 's/stretch/buster/g' /etc/apt/sources.list

# Upgrade packages to Buster; when prompted allow services to be restarted automatically
apt-get upgrade

# Upgrade distribution to Buster
apt-get dist-upgrade

# Remove packages no longer needed
apt-get autoremove

# Return to taste user; exit root
exit

# Navigate to TASTE source; upgrade
cd ~/tool-src
git pull
git checkout feature_buster
./Update-TASTE.shAfter this upgrade, you can work with the latest version of the tools, in particular the new Kazoo build system and Opengeode 3.xx (which you can update at any time). The Quick Reference Card has not been updated to reflect this yet.The main differences to create/edit a project is that you must just runtaste<(and nottaste-create-project/taste-edit-projectanymore). To build, runmake.You can check an example of a system using Opengeode if you go in~/tool-src/kazoo/tests/Demo_ABB_Opengeodeand runmaketo build it. Thentasteto edit.In the interface view, select the SDL language for the implementation of the blocks you want to model using OpenGEODE.Then when you right-click on the SDL block you can select the option "Open SDL Editor".The code is automatically generated when you exit the tool.ManualThe following commands should automate the installation (with exception of ASN1SCC - see below):$ git clone https://github.com/esa/opengeode
$ cd opengeode
$ make full-install   # it will prompt for sudo password to call aptThe installation will be done in the~/.localfolder by the Python3 pip tool. Make sure you add this to your .bashrc (or equivalent):export PATH=~/.local/bin:$PATHOpenGEODE uses the ASN1ASN1SCCfor the datatypes. You must install it manually:Get the latest binary release fromhereThen run (possibly as root):$cd/opt
$tarxvfasn1scc-bin-4.xx.tar.bz2# Use the file name version you got$echo'export PATH=$PATH:/opt/asn1scc'>>~/.bashrcOpen a new terminal and check that it works:$mono/opt/asn1scc/asn1.exeOnce you have the dependencies installed you can update the tool by running the following commands:$ git pull
$ make install    # alternatively:  pip3 install --user --upgrade .OpenGEODE WebsiteAweb pagehas been created with more information about
OpenGEODE.Thesourcefor the page can be found in thewikifolder of this repository. Any changes to the wiki source will be subsequently
merged into the wiki by the wiki maintainers.Information and contactFor additional information please contact:
maxime (dot) perrotin (at) esa (dot) intThe LLVM backend was designed and implemented by Diego Barbera during the ESA
Summer of Code 2014. This component is not maintained.
Some parts implemented by Laurent Meyer (native SDL type support in the parser)The ASN.1 compiler (ASN1SCC) that OpenGEODE is based on was developed by George Mamais and Thanassis Tsiodras for the European Space Agency.LicenceLicense is LGPL (see fileLICENSE)
There is no runtime, and the generated code is not subject to any license.The fonts are the fonts from Ubuntu, check licence in fileFONT-LICENSE.TXTThe background pattern was downloaded fromwww.subtlepatterns.comChangelog3.3.0 (08/2020)Save the state as an ASN.1 model instead of a native Ada typeAda backend basic support for "decision any"3.2.1 (07/2020)Fix issue with the "present" operatorMove the context declaration to the .adsAlways expose the Get_State function (returns char * to C)3.2.0 (07/2020)Add basic support for state type/instance3.1.2 (07/2020)Reinforce syntax error checking and reporting3.1.1 (07/2020)Reinforce syntax error checking and reportingDon't allow user escape a symbol syntax error: refocus text until fixed3.1.0 (06/2020)Add support for mkstring operator to transform an element into an array
mkstring (a, b, c) is in principle equivalent to ASN.1 Value Notation {a, b, c}
however ASN.1 value notation can't be used for a single indexed element : { foo(1) }
as this is an ambiguous syntax (it can be mixed with a record field, with value 1).
mkstring is the actuall Z100 (SDL standard) syntax to be used3.0.9 (06/2020)Minor fixes in C backend related to case sensitivity3.0.8 (06/2020)Support ASN.1 integer constants with no range (plain x INTEGER ::= 5)Check that procedures with a return type are called only from TASKs3.0.7 (06/2020)Fix update of data dictionary windowFix unconstained constants support3.0.6 (06/2020)Fix CONNECT symbol3.0.5 (06/2020)Add support to standard SDL syntaxx := CALL procedurein tasks3.0.4 (06/2020)Fix use of ASN.1 constants in decision branches3.0.3 (05/2020)Replace the unicode separator when flattening the model for code generationFix calls to the exit procedure in nested states3.0.2 (05/2020)Fix API change in Pyside23.0.1 (05/2020)Improve generated Makefile/gpr project file3.0.0 (12/2019)Port of Opengeode to Python3Use PySide2 instead of PySideAsn1scc module supports additional options2.1.5 (10/2019)Fix unicode issues2.1.4 (10/2019)Improve code generated for simulation2.1.3 (10/2019)Improve statechart rendering (in particular with nested states)2.1.2 (10/2019)Change import name case for set/reset of timer (for taste compatibility)2.1.1 (10/2019)Create cache folder if it was missing2.1.0 (09/2019)Reinforce type checks when using substrings and indexes, and
variable-length arrays. the latter can no longer be indexed on the
left side of an assignment, as the size cannot be set that way
The proper ways to set values of a variable-length array are:
1) ASN.1 value notation var := { a, b, c }
2) New assignment to replace a value using append statements:
var := var (0) // { b } // var (2, 3)2.0.44 (09/2019)Fix case issue when used combined with kazoo2.0.43 (05/2019)Better handling of path in generated gpr files2.0.42 (05/2019)Fix substring support (can now write var(1,2) := {1,2})2.0.41 (05/2019)Add --taste flag to target taste integration with kazoo2.0.40 (04/2019)Improve generated gpr file2.0.39 (04/2019)Fix append operator when using substringsFix unicode issue2.0.38 (04/2019)Support advanced "in" expressions (e.g. "someVar in {enum1, enum2}",
or "someVar in {{a 4, b false}, {a 1, b true}}"2.0.37 (04/2019)Support substrings on the left part of an expression (a(1,2) := ...)2.0.36 (04/2019)Fix unicode issue in Ada backend2.0.35 (04/2019)Add helper when editing text (update data dictionary selection)2.0.34 (04/2019)Relax range check for substringsSave/restore windows geometry when quitting/opening the toolMake datatypes fully visible in the data dictionary windowwrite[ln] operator now supports embedded newlines2.0.33 (04/2019)Fix unicode issue in Ada backend when using substrings2.0.32 (04/2019)Fix segfault and improve copy paste of nested states in branches2.0.31 (04/2019)Can cut/paste nested states (nested content was lost before)Can copy/paste and then rename states with nested content2.0.30 (03/2019)Fix bug when double clicking in an autocompletion box in text areas2.0.29 (03/2019)Fix range computations and modulo operator2.0.28 (03/2019)Fix saving issue on new non-taste models2.0.27 (03/2019)Fix type checking when using substrings2.0.26 (03/2019)minor bugfix with underscore/dash confusion2.0.25 (03/2019)fixed variable renaming bug in code generation for nested states2.0.24 (03/2019)Add choice_to_int operator2.0.23 (03/2019)Add basic support for NEWTYPE definitions2.0.22 (02/2019)Generate GPR files to ease the build using gprbuild2.0.21 (02/2019)Fix regression in simulation build script2.0.20 (02/2019)Added "val" operator to convert a number to an enumerant
useage: someVal := val (0, MyEnumeratedType)
with someVal of type MyEnumeratedType. Will return the first enumerant2.0.19 (01/2019)for CHOICE types variables can be declared with enumerated type
corresponding to the choice distriminant. CHOICE type is suffixed by
"-selection", and the "present" operator now returns type typeIf there is an enumerated type with the exact same content as the list
of CHOICE determinants, cast is possible using to_selector and to_enum2.0.18 (12/2018)Generate code in the current directory, not in the one of the .pr2.0.17 (09/2018)Fix type checking of the "power" operator2.0.16 (07/2018)Added interaction with system clipboard (basic for floating items)2.0.15 (07/2018)Fix many bugs in type checking system2.0.14 (06/2018)fix numerical checks when setting timer parameters2.0.13 (06/2018)Add taste-compatible cache mechanism when calling asn1scc2.0.12 (06/2018)Fix resolution of ASN.1 constants - values were not use propertly when
a constant was referencing another constant (numerical operations only)2.0.11 (06/2018)Ada backend: fix choice determinant issue leading to CHOICE_NOT_FOUND bug2.0.10 (06/2018)Various fixes in statechart rendering, esp. from command line2.0.9 (06/2018)Add timers in statechartsFix statechart list of signals when tab is activated from a sub-diagram2.0.8 (05/2018)Minor bugfix2.0.7 (05/2018)Add option to generate code with QGen (C and Ada)Better reporting of model parsing error2.0.6 (05/2018)Several fixes with the Append operator when working on complex types2.0.5 (04/2018)Fix zoom-in on laptops keyboards with ctrl-shift-+2.0.4 (03/2018)Fix issue with variable prefix in nested states (in generated code)2.0.3 (03/2018)Optimize calls to asn1sccFix paste error when input symbol is selected2.0.2 (03/2018)Better support of ASN.1 constantsSupport timer when using process typeTrigger model check proposal on save only if not checked recentlyFix Statechart rendering (incl. with process type)Ada backend: when a branch is ignored, generate "null"2.0.1 (02/2018)Detect type mismatches when user mixes signed and unsigned variables2.0.0 (02/2018)V2 of Opengeode is based on ASN1SCC V4 and is not compatible with V3Main changes concern support of unsigned numbers in ASN.1 types1.5.44 (01/2018)Bugfix: Return error code when Ada generation failsTests: reorder arguments to asn1scc for v4 compatibility1.5.43 (01/2018)Add preliminary compatibility with asn1scc v41.5.42 (10/2017)Fix case issue with process typesRemove submodules1.5.40 (07/2017)Fix range check in arrays1.5.39 (07/2017)Minor fix in testcase Makefile1.5.38 (06/2017)Fix unicode issue in Ada backend1.5.37 (05/2017)Fix Ada backend bug with sequence of literals in nested states1.5.36 (05/2017)Fix Unicode issues in Ada backend1.5.35 (05/2017)Fix FOR LOOPS code generation1.5.34 (05/2017)Fix statechart message selection box1.5.33 (04/2017)Fix unicode issue with the simulation codeUse -fPIC when building the simulation library1.5.32 (04/2017)Unicode bugfixes in Ada backendBugfix with SEQUENCE OF literals in Ada backendVarious bugfixes with mixed int32/64 bits1.5.28 (03/2017)Added preliminary support for PROCESS TYPE and instances1.5.26 (02/2017)Statecharts can be configured to filter out signals1.5.25 (01/2017)Ada backend generates aliased context (used for model checking)1.5.24 (01/2017)PR file use better indentation for text areas (no line return)1.5.23 (12/2016)In simulation mode, bugfix in the declaration of the startup functionCode generator prepared for model checking1.5.22 (12/2016)Simulation function save/restore context fix1.5.21 (11/2016)Fix regression with test-math (import of external functions)Use monospace font in the HTML rendering of ASN.1 files1.5.20 (11/2016)Fix wrongly formatted error reporting in FOR loopsSupport SDL2010 dot field separator (variable.field,
while sdl92 only supported variable!field)Sequence of literals now support field selectors
(i.e. { variable.field } is now a valid statement)Support inner procedure call with return statement1.5.19 (11/2016)Fix integer cast in Ada1.5.18 (11/2016)Fix parsing of ASN.1 constants that use an annonymous inner type1.5.17 (11/2016)Fixed issue with initialization of generated code in state aggregations1.5.16 (11/2016)Fix minor indentation issue when saving1.5.15 (10/2016)Report incomplete startup transitions as errors in nested states1.5.14 (10/2016)Support named integers (requires asn1scc 3.3.04 or more recent)1.5.13 (10/2016)Better support of warningsFixed detection of CHOICE assignment errosRaise error if process miss the start transitionRaise error in case of SEQUENCE OF type mismatch1.5.12 (09/2016)Detect duplicate declaration of procedures1.5.11 (09/2016)Allow semicolon in the declaration of procedures after RETURNS keyword1.5.10 (09/2016)readonly mode with more restrictions1.5.9 (09/2016)Added --readonly command line to restrict process modifications1.5.8 (09/2016)Bugfix - Ada backend failed when there were continuous signals in
nested states but none at root level (missing end if)Load fix when there is no dataviewAdditional type checks1.5.7 (09/2016)Bugfix - Update completion list of process symbolSort ASN.1 types in data dictionary1.5.6 (08/2016)vi interface supports historyvi interface for substitution can apply to the whole model (with g)refactoring function via vi interface (eg. %state,fromName,toName,)Fixed issue with rendering (coordinates of symbols could be wrong)Introduce data dictionary1.5.4 (08/2016)Various GUI improvements1.5.3 (07/2016):Ada backend fix: Continous signals now handled in states
where input is not consumed1.5.2 (07/2016):Asn1scc API added to interface with DMT/asn2dataModelBetter statechart rendering (less distance between nodes)1.4.5 (07/2016):Context variable was not prefixed properlyCallback function for timers use 64bits integerRIs use prefix with unicode separation to avoid name clashes1.4.4 (06/2016)Minor bugfix in Ada backend to support typeless systems1.4.3 (06/2016)Add support for priority of continuous signals in Ada code generator1.4.2 (06/2016)Reload / render properly priority of continuous signals1.4.1 (06/2016)Continuous states can check the presence of messages in the input queue
to respect the SDL semanticsBugfix in Ada code generator on continuous states1.3.28 (06/2016)Excluded states (with *(statelist) ) were case sensitive1.3.27 (05/2016)Fix bug in Ada backend when using continous signalsBetter handling of simulation script1.3.26 (05/2016)Fix parser issues with negative expressions1.3.25 (05/2016)Fix reporting of syntax errors in state aggregations1.3.22 (05/2016)Bug fix in range checks for division and subtractionOptimise loading when there are no CIF comments1.3.21 (05/2016)Complete support of optional fields
(check tests/regression/test-optionalfields)1.3.20 (05/2016)Improve simulator interface1.3.19 (04/2016)Various bugfixes with ternary operatorAdded demo "test-save" showing how to emulate the behaviour of the SAVE
symbolASN.1 types are shown with SDL-syntax (no hyphens)1.3.18 (04/2016)Add support for value notation of NULL typeRemove warning when accessing CHOICE fields1.3.17 (04/2016)Add support for value notation of empty SEQUENCEs ("{}")1.3.16 (03/2016)Bugfix in testing aggregation states in the GUI1.3.15 (03/2016)Bugfix in Ada backend when a state aggregation contained only empty
states (directly returning states).1.3.14Minor bugfix with command line handling1.3.13Bugfix in rendering of Continuous signals1.3.12Render properly parameterless procedures that are declared in the .pr
file but without a textboxWhen going to parent scene, fixed rendering issue1.3.11Parser is more tolerant to incomplete systems1.3.9/10 (01/2016)Checker verifies that decision coverage is complete on Real and Boolean
typesF3 generates Ada code1.3.8 (01/2016)Fix logging when LLVM is not installed1.3.7 (12/2015)Added icon to use Continuous Signals from the GUI1.3.6 (11/2015)Support external procedures having a return statement
this allows to import math functions from the libmath without having
to provide manual code. see test-math1.3.5 (11/2015)Better support for continous signals1.3.4 (11/2015)Early support for continous signalsRegression issue fixed (test-nocif2)1.3.3 (11/2015)Better support of platform-dependent screen resolution and dpiMinor fixes in statechart scenes (no negative coordinates)1.3.1 (11/2015)Support for State Aggregations (parallel states)Improved statechart rendering1.2.10 (10/2015)Better support of renamePolicyBetter handling of models without CIF coordinatesMinor bug fixesForloop syntax error handled correctly when using rangesupport Hex and bit string literals when working with OCTET STRINGsupport OUT keyword for procedure FPAR1.2.4 (07/2015)Use version 3.2.x of the ASN1SCC compiler with new -renamePolicy flagImprove robustness1.1.1 (07/2015)Strongly report syntax errors with symbol location and warning if user
tries to save a model with syntax errors1.1.0 (07/2015)Write/Writeln procedure support enumerated types1.0.1 (06/2015)Bugfix: use mono when calling asn1.exe by default (needed redhat-based1.0.0 (06/2015)Bugfixes and minor improvementsPython API / Simulator function (coupled with other TASTE components)1.0RC (10/2014)Release candidate Version 1Allow standalone systems (made of one process)Major refactoring of parser and Ada backendMany bugfixes and improvementsFirst version of LLVM backend0.994 (07/2014)Maintenance release, minor fixes0.993 (07/2014)Parser bugfixesBetter support for nested statesAda generator improvementsSupport for unicodeIndentation of PR codeCopy-paste of procedures and nested statesImproved regression testing0.99 (04/2014)Refactoring of the backend engine, now using singledispatchSupport of hierachical statesMinor bugfixes0.98Added support for FOR loops
In a task, use "for x in range([start], stop, [range]): ... endfor"
or "for x in sequenceOfvariable: ... endfor"Default symbol size is smallerVarious minor bugfixes0.97added support for default value when declaring a variable
e.g. DCL myVar myType ::= { x 5, y 2 };
default value must be a ground expression