README.md 6.95 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
To install OpenGEODE on Linux you need to install some system-level dependencies:
Maxime Perrotin's avatar
Maxime Perrotin committed
49

Maxime Perrotin's avatar
Maxime Perrotin committed
50
51
52
- Python 2.7 with pip (installed by default on nearly all Linux distributions)
- Pyside
- Graphviz
53
- [ASN1SCC](https://github.com/ttsiodras/asn1scc)
Maxime Perrotin's avatar
Maxime Perrotin committed
54
55
56
- GNAT

And optionally llvm and llvmpy
Maxime Perrotin's avatar
Maxime Perrotin committed
57

Maxime Perrotin's avatar
Maxime Perrotin committed
58
On Debian, Ubuntu, and probably other distributions:
Maxime Perrotin's avatar
Maxime Perrotin committed
59

60
```bash
61
62
63
64
$ 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
65
```
Maxime Perrotin's avatar
Maxime Perrotin committed
66

Maxime Perrotin's avatar
Maxime Perrotin committed
67
To install the ASN.1 compiler:
Maxime Perrotin's avatar
Maxime Perrotin committed
68

69
```bash
Maxime Perrotin's avatar
Maxime Perrotin committed
70
$ cd /opt
Maxime Perrotin's avatar
Maxime Perrotin committed
71
72
73
$ wget http://download.tuxfamily.org/taste/ASN1SCC/ASN1SCC-latest.tgz
$ tar zxvf ASN1SCC-latest.tgz
$ echo 'export PATH=$PATH:/opt/asn1scc' >> ~/.bashrc
74
```
Maxime Perrotin's avatar
Maxime Perrotin committed
75

Maxime Perrotin's avatar
Maxime Perrotin committed
76
Open a new terminal and check that it works:
Maxime Perrotin's avatar
Maxime Perrotin committed
77

Maxime Perrotin's avatar
Maxime Perrotin committed
78
```bash
Maxime Perrotin's avatar
Maxime Perrotin committed
79
$ mono /opt/asn1scc/asn1.exe
Maxime Perrotin's avatar
Maxime Perrotin committed
80
```
Maxime Perrotin's avatar
Maxime Perrotin committed
81

82
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
83

84

Maxime Perrotin's avatar
Maxime Perrotin committed
85
86
OpenGEODE installation
----------------------
Maxime Perrotin's avatar
Maxime Perrotin committed
87

88
89
90
91
92
93
94
95
96
Make sure all dependencies are installed.

You need to install a certificate to get software from ESA Git servers:

```bash
$ echo -n | openssl s_client -connect gitrepos.estec.esa.int:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > gitrepos.cert
$ sudo cp gitrepos.cert /usr/local/share/ca-certificates/gitrepos.crt
$ sudo update-ca-certificate
```
97

98
Then you can get the software with git:
Maxime Perrotin's avatar
Maxime Perrotin committed
99

100
```bash
Maxime Perrotin's avatar
Maxime Perrotin committed
101
$ git clone --recursive https://github.com/maxime-esa/opengeode.git
dbarbera's avatar
dbarbera committed
102
```
Maxime Perrotin's avatar
Maxime Perrotin committed
103

104
And install it *as root*:
Maxime Perrotin's avatar
Maxime Perrotin committed
105

106
```bash
107
$ cd opengeode
Maxime Perrotin's avatar
Maxime Perrotin committed
108
$ make install
109
```
Maxime Perrotin's avatar
Maxime Perrotin committed
110

Maxime Perrotin's avatar
Maxime Perrotin committed
111

Maxime Perrotin's avatar
Maxime Perrotin committed
112
113
114
Information and contact
=======================

Maxime Perrotin's avatar
Maxime Perrotin committed
115
OpenGEODE is part of the [TASTE project](http://taste.tuxfamily.org)
Maxime Perrotin's avatar
Maxime Perrotin committed
116

Maxime Perrotin's avatar
Maxime Perrotin committed
117
For additional information please contact:
Maxime Perrotin's avatar
Maxime Perrotin committed
118
119
maxime (dot) perrotin (at) esa (dot) int

Maxime Perrotin's avatar
Maxime Perrotin committed
120

Maxime Perrotin's avatar
Maxime Perrotin committed
121
The LLVM backend was designed and implemented by Diego Barbera during the ESA Summer of Code 2014
Maxime Perrotin's avatar
Maxime Perrotin committed
122
123
Some parts have been implemented by Laurent Meyer (native SDL type support in the parser)

Maxime Perrotin's avatar
Maxime Perrotin committed
124
125
126
127
128
129
130
131
132

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)
Maxime Perrotin's avatar
Maxime Perrotin committed
133
134
There is no runtime, and the generated code is not subject to any license.

Maxime Perrotin's avatar
Maxime Perrotin committed
135
The fonts are the fonts from Ubuntu, check licence in file FONT-LICENSE.TXT
Maxime Perrotin's avatar
Maxime Perrotin committed
136
The background pattern was downloaded from www.subtlepatterns.com
Maxime Perrotin's avatar
Maxime Perrotin committed
137
138
139
140

Changelog
=========

Maxime Perrotin's avatar
Maxime Perrotin committed
141
142
143
1.3.7 (12/2015)
    - Added icon to use Continuous Signals from the GUI

144
145
146
147
148
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

149
150
151
1.3.5 (11/2015)
     - Better support for continous signals

Maxime Perrotin's avatar
Maxime Perrotin committed
152
153
154
155
1.3.4 (11/2015)
     - Early support for continous signals
     - Regression issue fixed (test-nocif2)

Maxime Perrotin's avatar
Maxime Perrotin committed
156
1.3.3 (11/2015)
Maxime Perrotin's avatar
Maxime Perrotin committed
157
     - Better support of platform-dependent screen resolution and dpi
Maxime Perrotin's avatar
Maxime Perrotin committed
158
     - Minor fixes in statechart scenes (no negative coordinates)
Maxime Perrotin's avatar
Maxime Perrotin committed
159

Maxime Perrotin's avatar
Maxime Perrotin committed
160
1.3.1 (11/2015)
161
     - Support for State Aggregations (parallel states)
Maxime Perrotin's avatar
Maxime Perrotin committed
162
     - Improved statechart rendering
163

164
1.2.10 (10/2015)
Maxime Perrotin's avatar
Maxime Perrotin committed
165
166
167
     - Better support of renamePolicy
     - Better handling of models without CIF coordinates
     - Minor bug fixes
168
     - Forloop syntax error handled correctly when using range
169
     - support Hex and bit string literals when working with OCTET STRING
170
     - support OUT keyword for procedure FPAR
Maxime Perrotin's avatar
Maxime Perrotin committed
171

Maxime Perrotin's avatar
Maxime Perrotin committed
172
1.2.4 (07/2015)
173
174
175
176
     - 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
177
178
179
     - Strongly report syntax errors with symbol location and warning if user
       tries to save a model with syntax errors

180
181
182
1.1.0 (07/2015)
     - Write/Writeln procedure support enumerated types

Maxime Perrotin's avatar
Maxime Perrotin committed
183
184
185
186
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
187
188
189
190
1.0.0 (06/2015)
     - Bugfixes and minor improvements
     - Python API / Simulator function (coupled with other TASTE components)

191
1.0RC (10/2014)
192
193
194
195
196
197
     - 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

198
199
200
0.994 (07/2014)
     - Maintenance release, minor fixes

Maxime Perrotin's avatar
Maxime Perrotin committed
201
202
203
204
205
206
207
208
209
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

210
0.99 (04/2014)
Maxime Perrotin's avatar
Maxime Perrotin committed
211
     - Refactoring of the backend engine, now using singledispatch
212
     - Support of hierachical states
Maxime Perrotin's avatar
Maxime Perrotin committed
213
214
     - Minor bugfixes

215
216

0.98
Maxime Perrotin's avatar
Maxime Perrotin committed
217
218
219
220
221
     - 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
222
223
224


0.97
Maxime Perrotin's avatar
Maxime Perrotin committed
225
226
227
228
     - 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