README.md 4.93 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
24
25
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.
- SDL2010 features: FOR loops in task symbols, hierarchical states 
- Works on pure PR+CIF files (textual SDL notation) - no fancy proprietary save format
Maxime Perrotin's avatar
Maxime Perrotin committed
26
27
- Full supports ASN.1 data types - using ESA Space Certified compiler (www.github.com/ttsiodras/asn1scc)  
- Generates Ada code
28
29
30
31
32
33
34
35
36
- Extensive syntax and semantic checks 
- Automatic conversion to Statechart diagrams 
- Save the complete or parts of the model to PNG/SVG/PDF files
- 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 
- (Limited) VIM mode - You can use :wq or :%s,search,replace,g, and /search pattern
Maxime Perrotin's avatar
Maxime Perrotin committed
37
- (In progress) SDL to LLVM code generation
Maxime Perrotin's avatar
Maxime Perrotin committed
38
39
40
41
42
43
44

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

Pre-requisites
--------------

Maxime Perrotin's avatar
Maxime Perrotin committed
45
46
There are several dependencies for OpenGEODE:
Apart from pygraphviz, all of them exist for Linux, Windows, FreeBSD, and most likely Mac OSX
Maxime Perrotin's avatar
Maxime Perrotin committed
47

Maxime Perrotin's avatar
Maxime Perrotin committed
48
- Python 2.7 with pip
49
- Pyside (the Qt bindings for Python)
Maxime Perrotin's avatar
Maxime Perrotin committed
50
- Python ANTLR Runtime
51
- PyGraphviz (Linux only - not available on Windows)
Maxime Perrotin's avatar
Maxime Perrotin committed
52
53
54
55
- enum34, singledispatch
- ASN1SCC
- (optional) GNAT to build the generated Ada code
- mono
Maxime Perrotin's avatar
Maxime Perrotin committed
56

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

59
```bash
60
61
$ sudo apt-get install python-pyside pyside-tools graphviz pip gnat mono-runtime libmono-system-runtime4.0-cil libmono-i18n-west2.0-cil libmono-posix2.0-cil libmono-security2.0-cil
  libmono-system-runtime-serialization4.0-cil
Maxime Perrotin's avatar
Maxime Perrotin committed
62
63
$ sudo pip install --upgrade graphviz enum34 singledispatch
$ sudo pip install antlr_python_runtime --allow-external antlr_python_runtime --allow-unverified antlr_python_runtime
64
```
Maxime Perrotin's avatar
Maxime Perrotin committed
65

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

68
```bash
Maxime Perrotin's avatar
Maxime Perrotin committed
69
70
71
72
$ cd /opt
$ sudo wget http://www.semantix.gr/asn1scc/asn1Comp.tar.gz
$ sudo tar zxvf asn1Comp.tar.gz
$ echo 'export PATH=$PATH:/opt/asn1Comp/bin' >> ~/.bashrc
73
```
Maxime Perrotin's avatar
Maxime Perrotin committed
74

Maxime Perrotin's avatar
Maxime Perrotin committed
75
Check that it works:
Maxime Perrotin's avatar
Maxime Perrotin committed
76

Maxime Perrotin's avatar
Maxime Perrotin committed
77
78
79
```bash
$ asn1.exe
```
Maxime Perrotin's avatar
Maxime Perrotin committed
80

Maxime Perrotin's avatar
Maxime Perrotin committed
81
82
OpenGEODE installation
----------------------
Maxime Perrotin's avatar
Maxime Perrotin committed
83

Maxime Perrotin's avatar
Maxime Perrotin committed
84
To install the application on your machine, once all dependencies are met:
85
86
87
88

```bash
$ pip install --upgrade opengeode
```
Maxime Perrotin's avatar
Maxime Perrotin committed
89
90
91
92
93
94
95
96

This is sufficient to get opengeode running

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

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

97
```bash
Maxime Perrotin's avatar
Maxime Perrotin committed
98
$ git clone https://github.com/maxime-esa/opengeode.git
99
``` 
Maxime Perrotin's avatar
Maxime Perrotin committed
100

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

103
```bash
Maxime Perrotin's avatar
Maxime Perrotin committed
104
$ make install
105
```
Maxime Perrotin's avatar
Maxime Perrotin committed
106

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

Maxime Perrotin's avatar
Maxime Perrotin committed
109
110
111
112
113
114
115
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
116
117
118
119
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
120
121
maxime (dot) perrotin (at) esa (dot) int

Maxime Perrotin's avatar
Maxime Perrotin committed
122
123
124
125
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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
=========

141
142
143
0.994 (07/2014)
     - Maintenance release, minor fixes

Maxime Perrotin's avatar
Maxime Perrotin committed
144
145
146
147
148
149
150
151
152
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

153
0.99 (04/2014)
Maxime Perrotin's avatar
Maxime Perrotin committed
154
     - Refactoring of the backend engine, now using singledispatch
155
     - Support of hierachical states
Maxime Perrotin's avatar
Maxime Perrotin committed
156
157
     - Minor bugfixes

158
159

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


0.97
Maxime Perrotin's avatar
Maxime Perrotin committed
168
169
170
171
     - 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