Project Guidelines
Project Management
The general project meeting takes place in the Railwayroom, Tuesday at 16:00.
Development Environment
KIELER
Use the KIELER Nightly Build. Keep your version up-to-date.
You can update to a new version from within your running installation via Help > Check for updates. Thus it is not necessary to download the KIELER archive every time.
Use UTF-8 as codepage (especially when using Windows):
- General > Workspace
- Text file encoding: UTF-8
It may be helpful to configure the following settings to avoid Resource is out of sync warnings in Eclipse:
- General > Workspace
- Refresh using native hooks or polling: Check
- Refresh on access
- Save automatically before build
Code Style
General
Use an indentation of 2 Spaces:
- General > Text Editors
- Insert Spaces for Tabs: Check
- Displayed Tab Width: 2
SCT Style
Use the following conventions when modeling an SCChart:
- General order
- inputs first
- outputs second
- internal variables third
- regions and states afterwards
- Name all regions if you have at least two (no implicit region, unless there is only one)
- Naming
- For semantically relevant names, use lower case with underscores (e.g. state some_long_state_name)
- For labels and stuff that is intended to increase readability, use more natural english (e.g. state some_long_state_name "Wait for orders")
input bool trigger;
input int array[10];
output bool action0, action1;
int fun;
region first_region "Have fun":
// State example
initial state example_state
--> example_state immediate "Having fun"
with trigger
/ action0 = true
; action1 = false
; fun++
--> example_state immediate "Having fun"
with trigger
/ action0 = true
; action1 = false
; fun--
;
// Region
region second_region "Do nothing concurrently":
initial state init;
}
scchart Test {
input bool trigger
input int array[10]
output bool action0, action1
int fun
region first_region "Have fun":
// State example
initial state example_state
go to example_state immediate
if trigger
&& (trigger1
|| trigger2)
do action0 = true
; action1 = false
; fun++
label "Having fun"
go to example_state immediate
if trigger
do action0 = true
; action1 = false
; fun--
label "Having fun"
// Region
region second_region "Do nothing concurrently":
initial state init;
}
Build Settings
To have the simulation and SCT build correctly via Prom, one has to modify the Prom environment that builds the project:
- Preferences > KIELER SCCharts > Execution Environments
- Select Generic
- Select tab Compilation
- Select kieler-gen as target directory
- Set Snippets directory to snippets
- Set following as compile chain:
T_REFERENCE, T_CONST, T_MAP, T_FOR, T_HISTORY, T_SUSPEND, T_COUNTDELAY, T_SIGNAL, T_PRE, T_WEAKSUSPEND, T_DEFERRED, T_DURING, T_COMPLEXFINALSTATE, T_ABORT, T_EXIT, T_STATIC, T_INITIALIZATION, T_ENTRY, T_CONNECTOR, T_TRIGGEREFFECT, T_SURFACEDEPTH, T_sccharts.scg, T_scg.dependency, T_scg.basicblock.sc, T_scg.guardExpressions, T_scg.guards, T_scg.scheduling, T_scg.sequentialize, T_scg.s, T_s.c
Git
Use git.
Pull before you start coding.
Add a commit message.
In case of non-trivial conflicts: ask.