README.md 5.68 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.
dbarbera's avatar
dbarbera committed
24
- SDL2010 features: FOR loops in task symbols, hierarchical states
25
- Works on pure PR+CIF files (textual SDL notation) - no fancy proprietary save format
dbarbera's avatar
dbarbera committed
26
- Full 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
29
- Extensive syntax and semantic checks
- Automatic conversion to Statechart diagrams
30
- Save the complete or parts of the model to PNG/SVG/PDF files
dbarbera's avatar
dbarbera committed
31
32
33
34
35
- Hyperlinks (link a symbol content to any external document or web page)
- Zoom in, zoom-out
- Context-dependent text auto-completion
- Syntax highlighting
- Undo/Redo, Copy-Paste
36
- (Limited) VIM mode - You can use :wq or :%s,search,replace,g, and /search pattern
dbarbera's avatar
dbarbera committed
37
- SDL to LLVM code generation
Maxime Perrotin's avatar
Maxime Perrotin committed
38
39
40
41

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

42
43
44
45
46
47
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
48

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

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

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

64
```bash
65
66
67
68
$ 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
69
70
$ sudo pip install --upgrade graphviz enum34 singledispatch
$ sudo pip install antlr_python_runtime --allow-external antlr_python_runtime --allow-unverified antlr_python_runtime
71
```
Maxime Perrotin's avatar
Maxime Perrotin committed
72

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

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

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

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

88
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
89

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

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

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

This is sufficient to get opengeode running

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

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

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

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

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

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

Maxime Perrotin's avatar
Maxime Perrotin committed
118
119
120
121
122
123
124
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
125
126
127
128
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
129
130
maxime (dot) perrotin (at) esa (dot) int

Maxime Perrotin's avatar
Maxime Perrotin committed
131
132
133
134
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
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
=========

150
151
152
153
154
155
156
1.0RC (10/2014) 
     - 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

157
158
159
0.994 (07/2014)
     - Maintenance release, minor fixes

Maxime Perrotin's avatar
Maxime Perrotin committed
160
161
162
163
164
165
166
167
168
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

169
0.99 (04/2014)
Maxime Perrotin's avatar
Maxime Perrotin committed
170
     - Refactoring of the backend engine, now using singledispatch
171
     - Support of hierachical states
Maxime Perrotin's avatar
Maxime Perrotin committed
172
173
     - Minor bugfixes

174
175

0.98
Maxime Perrotin's avatar
Maxime Perrotin committed
176
177
178
179
180
     - 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
181
182
183


0.97
Maxime Perrotin's avatar
Maxime Perrotin committed
184
185
186
187
     - 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