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")
SCT Code Style
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
  --> 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;
}
SCTx CodeStyle
#import blub


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.



Tags: