README.md 4.94 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
26
27
28
29
30
31
32
33
34
35
36
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
- Supports ASN.1 data types, including the Value notation - check this page to know more about our ASN.1 compiler and tools 
- Generates Ada code with ASN.1 types using TASTE ASN.1 "space-certified" (SPARK) compiler 
- 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
38
39
40
41
42
43

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

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

44
There are three major dependencies for OpenGEODE:
Maxime Perrotin's avatar
Maxime Perrotin committed
45

46
- Pyside (the Qt bindings for Python)
Maxime Perrotin's avatar
Maxime Perrotin committed
47
- Python ANTLR Runtime
48
- PyGraphviz (Linux only - not available on Windows)
Maxime Perrotin's avatar
Maxime Perrotin committed
49
50
51
52
53
54
55
56
57

If you use pip to install OpenGEODE, these dependencies should be installed
automatically. However, note that installing PySide from pip requires some
work and is not straightforward.

If you are using a Linux Debian-based distribution (including Ubuntu),
I would recommended to install PySide using your package manager:
You should also install pygraphviz using the same method, for convenience.

58
59
60
```bash
$ sudo apt-get install python-pyside pyside-tools python-pygraphviz pip
```
Maxime Perrotin's avatar
Maxime Perrotin committed
61
62
63
64

The Python 2.7 ANTLR 3.1.3 runtime is not part of Debian packages. Install
it with pip (or download and install manually the package):

65
66
67
```bash
$ pip install antlr_python_runtime singledispatch
```
Maxime Perrotin's avatar
Maxime Perrotin committed
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82

On Windows:

You need to download and install Python, Pyside, and pip (binaries are
available on respective websites)

On FreeBSD:

PySide is available through the ports.
You can also use easy_install to install it.
Use pip to install the ANTLR runtime (see above)

Automatic installation (recommended)
------------------------------------

83
84
85
86
87
To install the application on your machine:

```bash
$ pip install --upgrade opengeode
```
Maxime Perrotin's avatar
Maxime Perrotin committed
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107

This is sufficient to get opengeode running

In addition OpenGEODE is capable of generating code for embedded, real-
time systems in the Ada programming language, with compact and efficient
data manipulation and binary encoding using the ASN.1 notation.

To get the full benefits of SDL and OpenGEODE, consider installing
TASTE, that is a complete development environment dedicated to
real-time, embedded systems from the European Space Agency.

TASTE also allows the transparent integration and communication between
models developed by commercial tools such as Matlab-Simulink and 
Real-Time Developer Studio.

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

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

108
```bash
Maxime Perrotin's avatar
Maxime Perrotin committed
109
$ svn co https://tecsw.estec.esa.int/svn/taste/trunk/misc/opengeode opengeode
110
111
112
113
114
115
```

Or
```bash
$ git clone https://github.com/maxime-esa/opengeode.git opengeode
``` 
Maxime Perrotin's avatar
Maxime Perrotin committed
116

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

119
```bash
Maxime Perrotin's avatar
Maxime Perrotin committed
120
$ make install
121
```
Maxime Perrotin's avatar
Maxime Perrotin committed
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147

Information and contact
=======================

OpenGEODE is part of the TASTE project.

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

OpenGEODE is developed and maintained by Maxime Perrotin
maxime (dot) perrotin (at) esa (dot) int

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
=========

148
0.99 (04/2014)
Maxime Perrotin's avatar
Maxime Perrotin committed
149
     - Refactoring of the backend engine, now using singledispatch
150
     - Support of hierachical states
Maxime Perrotin's avatar
Maxime Perrotin committed
151
152
     - Minor bugfixes

153
154

0.98
Maxime Perrotin's avatar
Maxime Perrotin committed
155
156
157
158
159
     - 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
160
161
162


0.97
Maxime Perrotin's avatar
Maxime Perrotin committed
163
164
165
166
     - 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