README.md 7.27 KB
Newer Older
Maxime Perrotin's avatar
Maxime Perrotin committed
1
2
3
4
5
6
7
8
9
10
11
12
13
OpenGEODE
=========

OpenGEODE is a tiny 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 ASN.1 "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!

Visit http://sdl-forum.org for more information about SDL.
14
15
16
17
18
19
20
21
22
23
Visit http://www.pragmadev.com to get a full-featured commercial SDL tool and support


![alt tag](icons/opengeode-screenshot.png)


Features
--------

- Graphical editor of SDL processes and procedures.
Maxime Perrotin's avatar
Maxime Perrotin committed
24
25
26
- SDL2010 features: state composition and state aggregation
- Works on pure PR+CIF files (textual SDL notation)
- Supports ASN.1 data types - using ESA Space Certified compiler (www.github.com/ttsiodras/asn1scc)
Maxime Perrotin's avatar
Maxime Perrotin committed
27
- Generates Ada code
dbarbera's avatar
dbarbera committed
28
- Automatic conversion to Statechart diagrams
29
- Save the complete or parts of the model to PNG/SVG/PDF files
dbarbera's avatar
dbarbera committed
30
31
32
33
- Hyperlinks (link a symbol content to any external document or web page)
- Context-dependent text auto-completion
- Syntax highlighting
- Undo/Redo, Copy-Paste
34
- (Limited) VIM mode - You can use :wq or :%s,search,replace,g, and /search pattern
dbarbera's avatar
dbarbera committed
35
- SDL to LLVM code generation
Maxime Perrotin's avatar
Maxime Perrotin committed
36
- Python API to parse and render SDL from other Python modules
Maxime Perrotin's avatar
Maxime Perrotin committed
37
38
39
40

Installation
============

41
42
43
44
45
46
On Windows, download the binary from [here](http://download.tuxfamily.org/taste/opengeode_windows.zip)

Uzip it and run opengeode.exe. It contains everything without any other external dependencies.

Linux Pre-requisites
--------------------
Maxime Perrotin's avatar
Maxime Perrotin committed
47

Maxime Perrotin's avatar
Maxime Perrotin committed
48
There are several dependencies for OpenGEODE:
Maxime Perrotin's avatar
Maxime Perrotin committed
49

Maxime Perrotin's avatar
Maxime Perrotin committed
50
- Python 2.7 with pip
51
- Pyside (the Qt bindings for Python)
Maxime Perrotin's avatar
Maxime Perrotin committed
52
- Python ANTLR Runtime
53
- PyGraphviz
Maxime Perrotin's avatar
Maxime Perrotin committed
54
- enum34, singledispatch
55
- [ASN1SCC](https://github.com/ttsiodras/asn1scc)
Maxime Perrotin's avatar
Maxime Perrotin committed
56
57
- (optional) GNAT to build the generated Ada code
- mono
Maxime Perrotin's avatar
Maxime Perrotin committed
58
59
- optional: llvmpy (tested with 0.12.7)
- optional: LLVM (tested with 3.3)
Maxime Perrotin's avatar
Maxime Perrotin committed
60

Maxime Perrotin's avatar
Maxime Perrotin committed
61
On Debian, Ubuntu, and probably other distributions:
Maxime Perrotin's avatar
Maxime Perrotin committed
62

63
```bash
64
65
66
67
$ sudo apt-get install python-pyside pyside-tools graphviz python-pip gnat libmono-system-runtime4.0-cil \
               libmono-corlib4.0-cil libmono-system-runtime-serialization-formatters-soap4.0-cil libmono-system-web4.0-cil \
               libmono-system-xml4.0-cil libmono-system4.0-cil mono-runtime libmono-system-numerics4.0-cil \
               libmono-system-data-linq4.0-cil libmono-corlib2.0-cil libmono-system2.0-cil
Maxime Perrotin's avatar
Maxime Perrotin committed
68
69
$ sudo pip install --upgrade graphviz enum34 singledispatch
$ sudo pip install antlr_python_runtime --allow-external antlr_python_runtime --allow-unverified antlr_python_runtime
70
```
Maxime Perrotin's avatar
Maxime Perrotin committed
71

Maxime Perrotin's avatar
Maxime Perrotin committed
72
To install the ASN.1 compiler:
Maxime Perrotin's avatar
Maxime Perrotin committed
73

74
```bash
Maxime Perrotin's avatar
Maxime Perrotin committed
75
$ cd /opt
76
$ sudo wget http://download.tuxfamily.org/taste/ASN1SCC/ASN1SCC-latest.tgz
77
$ sudo tar zxvf ASN1SCC-latest.tgz
78
$ echo 'export PATH=$PATH:/opt/<path to latest ASN1SCC>/bin' >> ~/.bashrc
79
```
Maxime Perrotin's avatar
Maxime Perrotin committed
80

Maxime Perrotin's avatar
Maxime Perrotin committed
81
Check that it works:
Maxime Perrotin's avatar
Maxime Perrotin committed
82

Maxime Perrotin's avatar
Maxime Perrotin committed
83
84
85
```bash
$ asn1.exe
```
Maxime Perrotin's avatar
Maxime Perrotin committed
86

87
Optionally, to install llvmpy and LLVM follow the instructions [here](http://www.llvmpy.org/llvmpy-doc/0.12.7/doc/getting_started.html#installation)
dbarbera's avatar
dbarbera committed
88

Maxime Perrotin's avatar
Maxime Perrotin committed
89
90
OpenGEODE installation
----------------------
Maxime Perrotin's avatar
Maxime Perrotin committed
91

Maxime Perrotin's avatar
Maxime Perrotin committed
92
To install the application on your machine, once all dependencies are met:
93
94
95
96

```bash
$ pip install --upgrade opengeode
```
Maxime Perrotin's avatar
Maxime Perrotin committed
97
98
99
100
101
102
103
104

This is sufficient to get opengeode running

Installation from source
------------------------

You can get the source from the TASTE repositories or from GitHub

105
```bash
Maxime Perrotin's avatar
Maxime Perrotin committed
106
$ git clone https://github.com/maxime-esa/opengeode.git
dbarbera's avatar
dbarbera committed
107
```
Maxime Perrotin's avatar
Maxime Perrotin committed
108

109
Then enter the opengeode directory and as root, type:
Maxime Perrotin's avatar
Maxime Perrotin committed
110

111
```bash
Maxime Perrotin's avatar
Maxime Perrotin committed
112
$ make install
113
```
Maxime Perrotin's avatar
Maxime Perrotin committed
114

Maxime Perrotin's avatar
Maxime Perrotin committed
115
116
Installation is optional. You can simply run opengeode.py to get it work.

Maxime Perrotin's avatar
Maxime Perrotin committed
117
118
119
120
121
122
123
Information and contact
=======================

OpenGEODE is part of the TASTE project.

Find more information and download at http://taste.tuxfamily.org

Maxime Perrotin's avatar
Maxime Perrotin committed
124
125
126
127
TASTE allows to create embedded software systems that combine SDL models with C, Ada,
Matlab-Simulink and a few other languages or tools.

OpenGEODE is mainly designed, developed and maintained by Maxime Perrotin
Maxime Perrotin's avatar
Maxime Perrotin committed
128
129
maxime (dot) perrotin (at) esa (dot) int

Maxime Perrotin's avatar
Maxime Perrotin committed
130
131
132
133
The LLVM backend was designed and implemented by Diego Barbera during the ESA Summer of Code 2014

Some parts have been implemented by Laurent Meyer (native SDL type support in the parser)

Maxime Perrotin's avatar
Maxime Perrotin committed
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
The background pattern was downloaded from www.subtlepatterns.com

The ASN.1 compiler (ASN1Scc) that OpenGEODE is based on was
developed by George Mamais and Thanassis Tsiodras for the European
Space Agency. Information at http://www.semantix.gr/asn1scc

Licence
=======

License is LGPL (see file LICENSE)
The fonts are the fonts from Ubuntu, check licence in file FONT-LICENSE.TXT

Changelog
=========

Maxime Perrotin's avatar
Maxime Perrotin committed
149
150
151
1.3.7 (12/2015)
    - Added icon to use Continuous Signals from the GUI

152
153
154
155
156
1.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-math

157
158
159
1.3.5 (11/2015)
     - Better support for continous signals

Maxime Perrotin's avatar
Maxime Perrotin committed
160
161
162
163
1.3.4 (11/2015)
     - Early support for continous signals
     - Regression issue fixed (test-nocif2)

Maxime Perrotin's avatar
Maxime Perrotin committed
164
1.3.3 (11/2015)
Maxime Perrotin's avatar
Maxime Perrotin committed
165
     - Better support of platform-dependent screen resolution and dpi
Maxime Perrotin's avatar
Maxime Perrotin committed
166
     - Minor fixes in statechart scenes (no negative coordinates)
Maxime Perrotin's avatar
Maxime Perrotin committed
167

Maxime Perrotin's avatar
Maxime Perrotin committed
168
1.3.1 (11/2015)
169
     - Support for State Aggregations (parallel states)
Maxime Perrotin's avatar
Maxime Perrotin committed
170
     - Improved statechart rendering
171

172
1.2.10 (10/2015)
Maxime Perrotin's avatar
Maxime Perrotin committed
173
174
175
     - Better support of renamePolicy
     - Better handling of models without CIF coordinates
     - Minor bug fixes
176
     - Forloop syntax error handled correctly when using range
177
     - support Hex and bit string literals when working with OCTET STRING
178
     - support OUT keyword for procedure FPAR
Maxime Perrotin's avatar
Maxime Perrotin committed
179

Maxime Perrotin's avatar
Maxime Perrotin committed
180
1.2.4 (07/2015)
181
182
183
184
     - Use version 3.2.x of the ASN1SCC compiler with new -renamePolicy flag
     - Improve robustness

1.1.1 (07/2015)
Maxime Perrotin's avatar
Maxime Perrotin committed
185
186
187
     - Strongly report syntax errors with symbol location and warning if user
       tries to save a model with syntax errors

188
189
190
1.1.0 (07/2015)
     - Write/Writeln procedure support enumerated types

Maxime Perrotin's avatar
Maxime Perrotin committed
191
192
193
194
1.0.1 (06/2015)
     - Bugfix: use mono when calling asn1.exe by default (needed redhat-based
                                                          distros)

Maxime Perrotin's avatar
Maxime Perrotin committed
195
196
197
198
1.0.0 (06/2015)
     - Bugfixes and minor improvements
     - Python API / Simulator function (coupled with other TASTE components)

199
1.0RC (10/2014)
200
201
202
203
204
205
     - Release candidate Version 1
     - Allow standalone systems (made of one process)
     - Major refactoring of parser and Ada backend
     - Many bugfixes and improvements
     - First version of LLVM backend

206
207
208
0.994 (07/2014)
     - Maintenance release, minor fixes

Maxime Perrotin's avatar
Maxime Perrotin committed
209
210
211
212
213
214
215
216
217
0.993 (07/2014)
     - Parser bugfixes
     - Better support for nested states
     - Ada generator improvements
     - Support for unicode
     - Indentation of PR code
     - Copy-paste of procedures and nested states
     - Improved regression testing

218
0.99 (04/2014)
Maxime Perrotin's avatar
Maxime Perrotin committed
219
     - Refactoring of the backend engine, now using singledispatch
220
     - Support of hierachical states
Maxime Perrotin's avatar
Maxime Perrotin committed
221
222
     - Minor bugfixes

223
224

0.98
Maxime Perrotin's avatar
Maxime Perrotin committed
225
226
227
228
229
     - Added 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 smaller
     - Various minor bugfixes
230
231
232


0.97
Maxime Perrotin's avatar
Maxime Perrotin committed
233
234
235
236
     - added support for default value when declaring a variable
       e.g. DCL myVar myType ::= { x 5, y 2 };
       default value must be a ground expression