[Fawkes Git] branch/timn/skiller-auto-interfaces: 27 revs updated. (0.5.0-3125-g5904ca5)

Tim Niemueller niemueller at kbsg.rwth-aachen.de
Thu Jan 21 13:56:03 CET 2016


Changes have been pushed for the project "Fawkes Robotics Software Framework".

Gitweb: http://git.fawkesrobotics.org/fawkes.git
Trac:   http://trac.fawkesrobotics.org

The branch, timn/skiller-auto-interfaces has been updated
  discards  ccb40242cb9fd0c3bf0b4d394bd2dfaecb86f167 (commit)
  discards  7cd4bb8300e44e38ebf4acdf6e49ae462eec871f (commit)
  discards  fc33d12c104b390312f773d349aa8026aa6acf93 (commit)
  discards  5a8c9308c72c851e627651b82cbf7b892a2caca6 (commit)
  discards  f6f856aafeaffe23f9c3366e3186b912d76458b9 (commit)
  discards  4194927fcd4f79155b886a594805710e38fa3f81 (commit)
  discards  cc80a5cc0cc4c29ffb8fe57f22e90eb39bd7cda7 (commit)
  discards  b3e524acbbaeeabde9f9b6464606624e0b9e1118 (commit)
  discards  d03c5209e800368a522c54d656c0676605c94b82 (commit)
  discards  4500b0c52cbcfc944dd9e895575c71bf16273cb7 (commit)
  discards  6d2a84ebf7f9015e74219935482a2a6bf6ef6dec (commit)
  discards  0a25aa39cef8a247885998631d0487be8571a289 (commit)
  discards  9a64c0c33038a332b4a823029d0437e15a71adeb (commit)
  discards  30ffb42eeaec8f69f797e13ead6b60a327b8f375 (commit)
        to  5904ca521c1ea4be9d0a1eab893c7169a49efa25 (commit)
       via  a5279a19b989430d6c57b9d15175796564bcd106 (commit)
       via  c1043b7bd19c354e17da7a2fc696ab64cd723bba (commit)
       via  ece8ea28533a9c66ccea41dee1ad11d877b6515e (commit)
       via  4efd0a781bf34e908bfcd6cf3753fea174ca2b4c (commit)
       via  e2abb6cddf6bc4c5afcddf86f4439f6ca604f005 (commit)
       via  4edbd1315b79cbfb2a0f4a43e0b896f849f25ac6 (commit)
       via  70b8a87ba5f994c22bc624d5dd99f611ba317f60 (commit)
       via  1bd585a4325d13674d9338da493d8848885cb273 (commit)
       via  d8a31299cc630023462d46c70f898e7251841089 (commit)
       via  fd0d822429e46791c8d813a052b36ab93686ddfb (commit)
       via  e2f2ec9b5b4abbd1a52eb333f52d422b3eb73ef3 (commit)
       via  39a801bb75b3d117ab7682f14d6292cf3a6c00a4 (commit)
       via  653e9da1728f5de542c86df1854ab88c39951ce8 (commit)
       via  92ba576c50aeb3ccd3ff610d045a1c78613596aa (commit)
       via  93a6c61ea2d72bde7e2d9a4167e093542a3f5827 (commit)
       via  6114f9107c3747ad6d223a97df10ecd6dd00712b (commit)
       via  ad29da79068fedcaa8cfb7192c4d73156022189a (commit)
       via  03b21cd4758d52d6d6aff2eb16d55dd368257d8d (commit)
       via  018256b91d12da67f70eef339fc46950e137742c (commit)
       via  a9d8e7c18c5d473f833b8586859c1db57d3535b7 (commit)
       via  e107ae1b8d1b5b3dff753aa67d8e4c1e0586da83 (commit)
       via  df7e554407e74309289a9cb002c3ff2587417615 (commit)
       via  5807fb7db8d2026e17dc4b87d9c8c19996288c34 (commit)
       via  1461082897c75ec22028282124480419e3f68ccc (commit)
       via  1aa57a4e4693c823a5c3a3bf6c69ce7bc1515451 (commit)
       via  6a6d2f0334daa69dde5f121605ad5ae0602293bc (commit)

This update added new revisions after undoing existing revisions.  That is
to say, the old revision is not a strict subset of the new revision.  This
situation occurs when you --force push a change and generate a repository
containing something like this:

 * -- * -- B -- O -- O -- O (ccb40242cb9fd0c3bf0b4d394bd2dfaecb86f167)
            \
             N -- N -- N (5904ca521c1ea4be9d0a1eab893c7169a49efa25)

When this happens we assume that you've already had alert emails for all
of the O revisions, and so we here report only the revisions in the N
branch from the common base, B.

http://git.fawkesrobotics.org/fawkes.git/timn/skiller-auto-interfaces

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- *Log* ---------------------------------------------------------------
commit 6a6d2f0334daa69dde5f121605ad5ae0602293bc
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Tue Jan 19 14:15:43 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:25 2016 +0100

    blackboard: more specific error when sending message with no writer

http://git.fawkesrobotics.org/fawkes.git/commit/6a6d2f0
http://trac.fawkesrobotics.org/changeset/6a6d2f0

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 1aa57a4e4693c823a5c3a3bf6c69ce7bc1515451
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Tue Jan 19 14:16:52 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:25 2016 +0100

    liblua: better versions of do_string
    
    More explicit error handling.

http://git.fawkesrobotics.org/fawkes.git/commit/1aa57a4
http://trac.fawkesrobotics.org/changeset/1aa57a4

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 1461082897c75ec22028282124480419e3f68ccc
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Tue Jan 19 14:17:25 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:25 2016 +0100

    libplugin: make sending plugin lists quiet
    
    No point in spewing things into the log here.

http://git.fawkesrobotics.org/fawkes.git/commit/1461082
http://trac.fawkesrobotics.org/changeset/1461082

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 5807fb7db8d2026e17dc4b87d9c8c19996288c34
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Tue Jan 19 14:18:25 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:25 2016 +0100

    buildsys: extend tolua++ generation with exception handling code
    
    Use the tolua++ code generator hooks to add support for Fawkes and std
    exception handling. Catch the appropriate exceptions and convert them
    into a Lua error. This avoids messing up Lua's error handling longjmp
    chain and invalid stacks. It also allows to detect certain problems more
    gracefully, e.g. if a message is sent to an interface without a writer
    this will be handled on the Lua level as a regular Lua error.
    
    This is also a requirement for a more robust (almost) pure Lua skiller.

http://git.fawkesrobotics.org/fawkes.git/commit/5807fb7
http://trac.fawkesrobotics.org/changeset/5807fb7

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit df7e554407e74309289a9cb002c3ff2587417615
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Wed Jan 20 13:46:24 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:25 2016 +0100

    libinterface: add Interface::msgq_enqeue() to Lua wrapper
    
    Implement the msgq_enqueue by forwarding to the copy version of the
    method. This allows to have more consistent code among the target
    languages.

http://git.fawkesrobotics.org/fawkes.git/commit/df7e554
http://trac.fawkesrobotics.org/changeset/df7e554

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit e107ae1b8d1b5b3dff753aa67d8e4c1e0586da83
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 21 11:57:40 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:25 2016 +0100

    liblua: more utility methods for LuaContext

http://git.fawkesrobotics.org/fawkes.git/commit/e107ae1
http://trac.fawkesrobotics.org/changeset/e107ae1

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit a9d8e7c18c5d473f833b8586859c1db57d3535b7
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 21 11:59:59 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:26 2016 +0100

    liblua: improve restart and finalization handling
    
    If initializing a new context fails, call its finalization routine.
    Catch exceptions during finalization. Reduce the time the Lua context is
    locked to avoid deadlocks in external methods.

http://git.fawkesrobotics.org/fawkes.git/commit/a9d8e7c
http://trac.fawkesrobotics.org/changeset/a9d8e7c

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 018256b91d12da67f70eef339fc46950e137742c
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 21 13:34:49 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:26 2016 +0100

    ffifacegen: generate Interface::msgq_enqueue() and assertions

http://git.fawkesrobotics.org/fawkes.git/commit/018256b
http://trac.fawkesrobotics.org/changeset/018256b

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 03b21cd4758d52d6d6aff2eb16d55dd368257d8d
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 21 13:37:58 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:26 2016 +0100

    interfaces: re-generate with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/03b21cd
http://trac.fawkesrobotics.org/changeset/03b21cd

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit ad29da79068fedcaa8cfb7192c4d73156022189a
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 14 23:14:35 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:36 2016 +0100

    bumblebee2: re-generate interfaces with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/ad29da7
http://trac.fawkesrobotics.org/changeset/ad29da7

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 6114f9107c3747ad6d223a97df10ecd6dd00712b
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 14 23:14:35 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:36 2016 +0100

    dynamixel: re-generate interfaces with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/6114f91
http://trac.fawkesrobotics.org/changeset/6114f91

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 93a6c61ea2d72bde7e2d9a4167e093542a3f5827
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 14 23:14:35 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:36 2016 +0100

    jaco: re-generate interfaces with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/93a6c61
http://trac.fawkesrobotics.org/changeset/93a6c61

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 92ba576c50aeb3ccd3ff610d045a1c78613596aa
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 14 23:14:35 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:36 2016 +0100

    katana: re-generate interfaces with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/92ba576
http://trac.fawkesrobotics.org/changeset/92ba576

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 653e9da1728f5de542c86df1854ab88c39951ce8
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 14 23:14:35 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:36 2016 +0100

    laser-cluster: re-generate interfaces with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/653e9da
http://trac.fawkesrobotics.org/changeset/653e9da

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 39a801bb75b3d117ab7682f14d6292cf3a6c00a4
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 14 23:15:28 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:36 2016 +0100

    laser-lines: re-generate interfaces with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/39a801b
http://trac.fawkesrobotics.org/changeset/39a801b

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit e2f2ec9b5b4abbd1a52eb333f52d422b3eb73ef3
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 14 23:14:35 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:36 2016 +0100

    nao: re-generate interfaces with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/e2f2ec9
http://trac.fawkesrobotics.org/changeset/e2f2ec9

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit fd0d822429e46791c8d813a052b36ab93686ddfb
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 14 23:15:42 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:36 2016 +0100

    navgraph-generator: rename id to name in interface field names
    
    The id() function is reserved for the message ID. While this does work
    on the C++ side due to overloading, it does not for the tolua++
    interface generator. Just rename to "name", the meaning matches. Adapt
    the thread to use the new field names.

http://git.fawkesrobotics.org/fawkes.git/commit/fd0d822
http://trac.fawkesrobotics.org/changeset/fd0d822

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit d8a31299cc630023462d46c70f898e7251841089
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 14 23:14:35 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:37 2016 +0100

    openni: re-generate interfaces with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/d8a3129
http://trac.fawkesrobotics.org/changeset/d8a3129

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 1bd585a4325d13674d9338da493d8848885cb273
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 14 23:14:35 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:37 2016 +0100

    openrave: re-generate interfaces with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/1bd585a
http://trac.fawkesrobotics.org/changeset/1bd585a

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 70b8a87ba5f994c22bc624d5dd99f611ba317f60
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 14 23:14:35 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:37 2016 +0100

    pantilt: re-generate interfaces with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/70b8a87
http://trac.fawkesrobotics.org/changeset/70b8a87

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 4edbd1315b79cbfb2a0f4a43e0b896f849f25ac6
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 14 23:16:53 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:37 2016 +0100

    pcl-db: re-generate interfaces with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/4edbd13
http://trac.fawkesrobotics.org/changeset/4edbd13

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit e2abb6cddf6bc4c5afcddf86f4439f6ca604f005
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 14 23:14:35 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:37 2016 +0100

    robotino: re-generate interfaces with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/e2abb6c
http://trac.fawkesrobotics.org/changeset/e2abb6c

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 4efd0a781bf34e908bfcd6cf3753fea174ca2b4c
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 14 23:14:35 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:37 2016 +0100

    roomba: re-generate interfaces with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/4efd0a7
http://trac.fawkesrobotics.org/changeset/4efd0a7

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit ece8ea28533a9c66ccea41dee1ad11d877b6515e
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Wed Jan 20 13:45:50 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:37 2016 +0100

    skiller: re-generate interfaces with new ffifacegen

http://git.fawkesrobotics.org/fawkes.git/commit/ece8ea2
http://trac.fawkesrobotics.org/changeset/ece8ea2

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit c1043b7bd19c354e17da7a2fc696ab64cd723bba
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 21 13:38:05 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:46 2016 +0100

    logging: add method to set component logger name (again)
    
    This allows to set a new component logger name or to set it by a more
    complex pattern through a format string.

http://git.fawkesrobotics.org/fawkes.git/commit/c1043b7
http://trac.fawkesrobotics.org/changeset/c1043b7

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit a5279a19b989430d6c57b9d15175796564bcd106
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 21 13:39:36 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:46 2016 +0100

    lua: add support for pre-loading in interface initializer
    
    The interface initializer can now be pre-loaded with writing interfaces,
    that is, these interfaces will not be opened (again) if requested.
    Additional code taking care of finalization allows for removing
    pre-loaded interfaces without closing them.

http://git.fawkesrobotics.org/fawkes.git/commit/a5279a1
http://trac.fawkesrobotics.org/changeset/a5279a1

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
commit 5904ca521c1ea4be9d0a1eab893c7169a49efa25
Author:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
AuthorDate: Thu Jan 21 13:43:02 2016 +0100
Commit:     Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
CommitDate: Thu Jan 21 13:50:46 2016 +0100

    skiller: support re-loading with writing interfaces
    
    In the (almost) pure Lua version, interfaces are maintained within Lua
    and not in the surrounding C++ code (through LuaInterfaceImporter). This
    causes a problem when initializing a new context during a (file event
    induced) reload: the new context would try to open the very same
    interfaces, which fails for writing instances, as there may be at most
    one such instance.
    
    Solve this by re-sorting to the C++ code to transfer the writing
    interface instances to the new context and to make sure that these are
    not closed if initialization fails (e.g., in a skill initialized later).

http://git.fawkesrobotics.org/fawkes.git/commit/5904ca5
http://trac.fawkesrobotics.org/changeset/5904ca5

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


- *Summary* -----------------------------------------------------------
 etc/buildsys/lua.mk                                |    4 +-
 src/libs/blackboard/exceptions.h                   |   13 +-
 src/libs/blackboard/internal/interface_manager.cpp |   19 ++-
 src/libs/interface/interface.tolua                 |    4 +
 src/libs/interfaces/BatteryInterface.tolua         |    5 +
 src/libs/interfaces/CameraControlInterface.tolua   |    5 +
 src/libs/interfaces/EclipseDebuggerInterface.tolua |    5 +
 src/libs/interfaces/FacerInterface.tolua           |    5 +
 .../interfaces/FacialExpressionInterface.tolua     |    5 +
 src/libs/interfaces/GameStateInterface.tolua       |    5 +
 src/libs/interfaces/GripperInterface.tolua         |    5 +
 src/libs/interfaces/HumanSkeletonInterface.tolua   |    5 +
 src/libs/interfaces/HumanoidMotionInterface.tolua  |    5 +
 src/libs/interfaces/IMUInterface.tolua             |    5 +
 src/libs/interfaces/JointInterface.tolua           |    5 +
 src/libs/interfaces/JoystickInterface.tolua        |    5 +
 src/libs/interfaces/KeyValueInterface.tolua        |    5 +
 src/libs/interfaces/KickerInterface.tolua          |    5 +
 src/libs/interfaces/Laser1080Interface.tolua       |    5 +
 src/libs/interfaces/Laser360Interface.tolua        |    5 +
 src/libs/interfaces/Laser720Interface.tolua        |    5 +
 src/libs/interfaces/LedInterface.tolua             |    5 +
 src/libs/interfaces/LocalizationInterface.tolua    |    5 +
 src/libs/interfaces/MotorInterface.tolua           |    5 +
 src/libs/interfaces/NavPathInterface.tolua         |    5 +
 src/libs/interfaces/NavigatorInterface.tolua       |    5 +
 src/libs/interfaces/ObjectPositionInterface.tolua  |    5 +
 src/libs/interfaces/Position2DTrackInterface.tolua |    5 +
 src/libs/interfaces/Position3DInterface.tolua      |    5 +
 src/libs/interfaces/SkillerInterface.tolua         |    5 +
 src/libs/interfaces/SoccerPenaltyInterface.tolua   |    5 +
 .../interfaces/SpeechRecognitionInterface.tolua    |    5 +
 src/libs/interfaces/SpeechSynthInterface.tolua     |    5 +
 src/libs/interfaces/SwitchInterface.tolua          |    5 +
 src/libs/interfaces/TestInterface.tolua            |    5 +
 src/libs/interfaces/TransformInterface.tolua       |    5 +
 src/libs/interfaces/VisualDisplay2DInterface.tolua |    5 +
 src/libs/interfaces/generator/tolua_generator.cpp  |    6 +-
 src/libs/logging/component.cpp                     |   19 ++
 src/libs/logging/component.h                       |    2 +
 src/libs/lua/context.cpp                           |  184 ++++++++++++++++----
 src/libs/lua/context.h                             |    9 +-
 src/libs/plugin/net/handler.cpp                    |    4 +-
 src/lua/fawkes/interface_initializer.lua           |   38 ++++-
 src/lua/fawkes/toluaext.lua                        |   42 +++++
 src/lua/skiller/fawkes/init.lua                    |   23 ++-
 src/lua/skiller/fawkes/start.lua                   |    8 +-
 .../interfaces/OpenCVStereoParamsInterface.tolua   |    5 +
 .../interfaces/DynamixelServoInterface.tolua       |    5 +
 .../jaco/interfaces/JacoBimanualInterface.tolua    |    5 +
 src/plugins/jaco/interfaces/JacoInterface.tolua    |    5 +
 .../katana/interfaces/KatanaInterface.tolua        |    5 +
 .../interfaces/LaserClusterInterface.tolua         |    5 +
 .../interfaces/LaserLineInterface.tolua            |    5 +
 .../nao/interfaces/NaoJointPositionInterface.tolua |    5 +
 .../interfaces/NaoJointStiffnessInterface.tolua    |    5 +
 .../nao/interfaces/NaoSensorInterface.tolua        |    5 +
 .../interfaces/NavGraphGeneratorInterface.tolua    |    5 +
 .../HumanSkeletonProjectionInterface.tolua         |    5 +
 .../openrave/interfaces/OpenRaveInterface.tolua    |    5 +
 .../pantilt/interfaces/PanTiltInterface.tolua      |    5 +
 .../interfaces/PclDatabaseMergeInterface.tolua     |    5 +
 .../interfaces/PclDatabaseRetrieveInterface.tolua  |    5 +
 .../interfaces/PclDatabaseStoreInterface.tolua     |    5 +
 .../interfaces/RobotinoSensorInterface.tolua       |    5 +
 src/plugins/roomba/Roomba500Interface.tolua        |    5 +
 src/plugins/skiller/SkillerDebugInterface.tolua    |    5 +
 src/plugins/skiller/exec_thread.cpp                |   23 +++-
 68 files changed, 613 insertions(+), 50 deletions(-)
 create mode 100644 src/lua/fawkes/toluaext.lua


- *Diffs* -------------------------------------------------------------

- *commit* 6a6d2f0334daa69dde5f121605ad5ae0602293bc - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Tue Jan 19 14:15:43 2016 +0100
Subject: blackboard: more specific error when sending message with no writer

 src/libs/blackboard/exceptions.h                   |   13 ++++++++++---
 src/libs/blackboard/internal/interface_manager.cpp |   19 ++++++++++++++++++-
 2 files changed, 28 insertions(+), 4 deletions(-)

_Diff for modified files_:
diff --git a/src/libs/blackboard/exceptions.h b/src/libs/blackboard/exceptions.h
index 7b60b5f..6f52537 100644
--- a/src/libs/blackboard/exceptions.h
+++ b/src/libs/blackboard/exceptions.h
@@ -142,10 +142,17 @@ class BlackBoardNoMasterAliveException : public Exception {
 
 /** Thrown if no writer interface is alive.
  */
-class BlackBoardNoWritingInstanceException : public Exception {
+class BlackBoardNoWritingInstanceException : public Exception
+{
  public:
-  /** Constructor*/
-  BlackBoardNoWritingInstanceException() : Exception("No writing instance for interface") {}
+	/** Constructor.
+	 * @param type interface type string
+	 * @param id interface ID
+	 */
+	BlackBoardNoWritingInstanceException(const char *type, const char *id) : Exception()
+	{
+		append("No writing instance for interface %s::%s", type, id);
+	}
 };
 
 } // end namespace fawkes
diff --git a/src/libs/blackboard/internal/interface_manager.cpp b/src/libs/blackboard/internal/interface_manager.cpp
index 9936d7f..f6704c9 100644
--- a/src/libs/blackboard/internal/interface_manager.cpp
+++ b/src/libs/blackboard/internal/interface_manager.cpp
@@ -619,7 +619,24 @@ BlackBoardInterfaceManager::writer_for_mem_serial(unsigned int mem_serial)
   if ( writer_interfaces.find(mem_serial) != writer_interfaces.end() ) {
     return writer_interfaces[mem_serial];
   } else {
-    throw BlackBoardNoWritingInstanceException();
+	  char type[__INTERFACE_TYPE_SIZE + 1] = "Unknown";
+	  char id[__INTERFACE_ID_SIZE + 1] = "Invalid";
+	  // ensure NULL-termination
+	  type[__INTERFACE_TYPE_SIZE] = 0;
+	  id[__INTERFACE_ID_SIZE] = 0;
+	  std::string uid = "Unknown::Invalid";
+	  memmgr->lock();
+	  BlackBoardMemoryManager::ChunkIterator cit;
+	  for ( cit = memmgr->begin(); cit != memmgr->end(); ++cit ) {
+		  interface_header_t *ih = (interface_header_t *)*cit;
+		  if (ih->serial == mem_serial) {
+			  strncpy(type, ih->type, __INTERFACE_TYPE_SIZE);
+			  strncpy(id, ih->id, __INTERFACE_ID_SIZE);
+			  break;
+		  }
+	  }
+	  memmgr->unlock();
+	  throw BlackBoardNoWritingInstanceException(type, id);
   }
 }
 

- *commit* 1aa57a4e4693c823a5c3a3bf6c69ce7bc1515451 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Tue Jan 19 14:16:52 2016 +0100
Subject: liblua: better versions of do_string

 src/libs/lua/context.cpp |   77 ++++++++++++++++++++++++++++++++++++---------
 1 files changed, 61 insertions(+), 16 deletions(-)

_Diff for modified files_:
diff --git a/src/libs/lua/context.cpp b/src/libs/lua/context.cpp
index 31dc94f..4002e41 100644
--- a/src/libs/lua/context.cpp
+++ b/src/libs/lua/context.cpp
@@ -481,18 +481,40 @@ LuaContext::do_string(lua_State *L, const char *format, ...)
   if (vasprintf(&s, format, arg) == -1) {
     throw Exception("LuaContext::do_string: Could not form string");
   }
-
-  int rv = 0;
-  int errfunc = __enable_tracebacks ? 1 : 0;
-  rv = (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, errfunc));
-
+  std::string ss(s);
   free(s);
   va_end(arg);
 
-  if (rv != 0) {
-    std::string errmsg = lua_tostring(L, -1);
+  int err = 0;
+  std::string errmsg;
+  if ( (err = luaL_loadstring(L, ss.c_str())) != 0) {
+    errmsg = lua_tostring(L, -1);
     lua_pop(L, 1);
-    throw LuaRuntimeException("do_string", errmsg.c_str());
+    switch (err) {
+    case LUA_ERRSYNTAX:
+	    throw SyntaxErrorException("Lua syntax error in string %s: %s", ss.c_str(), errmsg.c_str());
+
+    case LUA_ERRMEM:
+	    throw OutOfMemoryException("Could not load Lua string %s", ss.c_str());
+    }
+  }
+
+  int errfunc = __enable_tracebacks ? 1 : 0;
+  err = lua_pcall(L, 0, LUA_MULTRET, errfunc);
+
+  if (err != 0) {
+	  std::string errmsg = lua_tostring(L, -1);
+	  lua_pop(L, 1);
+	  switch (err) {
+	  case LUA_ERRRUN:
+		  throw LuaRuntimeException("do_string", errmsg.c_str());
+
+	  case LUA_ERRMEM:
+		  throw OutOfMemoryException("Could not execute Lua chunk via pcall");
+
+	  case LUA_ERRERR:
+		  throw LuaErrorException("do_string", errmsg.c_str());
+	  }
   }
 }
 
@@ -505,24 +527,47 @@ void
 LuaContext::do_string(const char *format, ...)
 {
   MutexLocker lock(__lua_mutex);
+
   va_list arg;
   va_start(arg, format);
   char *s;
   if (vasprintf(&s, format, arg) == -1) {
     throw Exception("LuaContext::do_string: Could not form string");
   }
-
-  int rv = 0;
-  int errfunc = __enable_tracebacks ? 1 : 0;
-  rv = (luaL_loadstring(__L, s) || lua_pcall(__L, 0, LUA_MULTRET, errfunc));
-
+  std::string ss(s);
   free(s);
   va_end(arg);
 
-  if ( rv != 0 ) {
-    std::string errmsg = lua_tostring(__L, -1);
+  int err = 0;
+  std::string errmsg;
+  if ( (err = luaL_loadstring(__L, ss.c_str())) != 0) {
+    errmsg = lua_tostring(__L, -1);
     lua_pop(__L, 1);
-    throw LuaRuntimeException("do_string", errmsg.c_str());
+    switch (err) {
+    case LUA_ERRSYNTAX:
+	    throw SyntaxErrorException("Lua syntax error in string %s: %s", ss.c_str(), errmsg.c_str());
+
+    case LUA_ERRMEM:
+	    throw OutOfMemoryException("Could not load Lua string %s", ss.c_str());
+    }
+  }
+
+  int errfunc = __enable_tracebacks ? 1 : 0;
+  err = lua_pcall(__L, 0, LUA_MULTRET, errfunc);
+
+  if (err != 0) {
+	  std::string errmsg = lua_tostring(__L, -1);
+	  lua_pop(__L, 1);
+	  switch (err) {
+	  case LUA_ERRRUN:
+		  throw LuaRuntimeException("do_string", errmsg.c_str());
+
+	  case LUA_ERRMEM:
+		  throw OutOfMemoryException("Could not execute Lua chunk via pcall");
+
+	  case LUA_ERRERR:
+		  throw LuaErrorException("do_string", errmsg.c_str());
+	  }
   }
 }
 

- *commit* 1461082897c75ec22028282124480419e3f68ccc - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Tue Jan 19 14:17:25 2016 +0100
Subject: libplugin: make sending plugin lists quiet

 src/libs/plugin/net/handler.cpp |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

_Diff for modified files_:
diff --git a/src/libs/plugin/net/handler.cpp b/src/libs/plugin/net/handler.cpp
index 5fd1817..27377cd 100644
--- a/src/libs/plugin/net/handler.cpp
+++ b/src/libs/plugin/net/handler.cpp
@@ -316,7 +316,7 @@ PluginNetworkHandler::loop()
 
     case MSG_PLUGIN_LIST_AVAIL:
       try {
-	LibLogger::log_debug("PluginNetworkHandler", "Sending list of all available plugins");
+	      //LibLogger::log_debug("PluginNetworkHandler", "Sending list of all available plugins");
 	PluginListMessage *plm = list_avail();
 	__hub->send(msg->clid(), FAWKES_CID_PLUGINMANAGER, MSG_PLUGIN_AVAIL_LIST, plm);
       } catch (Exception &e) {
@@ -326,7 +326,7 @@ PluginNetworkHandler::loop()
 
     case MSG_PLUGIN_LIST_LOADED:
       try {
-	LibLogger::log_debug("PluginNetworkHandler", "Sending list of all loaded plugins");
+	      //LibLogger::log_debug("PluginNetworkHandler", "Sending list of all loaded plugins");
 	PluginListMessage *plm = list_loaded();
 	__hub->send(msg->clid(), FAWKES_CID_PLUGINMANAGER, MSG_PLUGIN_LOADED_LIST, plm);
       } catch (Exception &e) {

- *commit* 5807fb7db8d2026e17dc4b87d9c8c19996288c34 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Tue Jan 19 14:18:25 2016 +0100
Subject: buildsys: extend tolua++ generation with exception handling code

 etc/buildsys/lua.mk         |    4 ++--
 src/lua/fawkes/toluaext.lua |   42 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+), 2 deletions(-)

_Diff for modified files_:
diff --git a/etc/buildsys/lua.mk b/etc/buildsys/lua.mk
index b45e61d..6bdb6df 100644
--- a/etc/buildsys/lua.mk
+++ b/etc/buildsys/lua.mk
@@ -32,10 +32,10 @@ ifeq ($(HAVE_LUA),1)
 %_tolua.cpp: $$(TOLUA_$$(call nametr,$$*))
 	$(SILENT) echo -e "$(INDENT_PRINT)[LUA] $(PARENTDIR)$(TBOLDGRAY)$(@F)$(TNORMAL)"
 	$(SILENT)cat $(addprefix $(SRCDIR)/,$(subst $(SRCDIR)/,,$(filter %.tolua,$^))) > $(patsubst %.cpp,%.pkg,$@)
-	$(SILENT)$(TOLUAPP) -n $(TOLUA_PKGPREFIX_$(call nametr,$*))$(notdir $*) $(patsubst %.cpp,%.pkg,$@) | \
+	$(SILENT)$(TOLUAPP) -L "$(FAWKES_BASEDIR)/src/lua/fawkes/toluaext.lua" -n $(TOLUA_PKGPREFIX_$(call nametr,$*))$(notdir $*) $(patsubst %.cpp,%.pkg,$@) | \
 	sed -e 's/^\(.*Generated automatically .*\) on .*$$/\1/' | \
 	awk '/^#if defined/ { f=1 }; f { t = t "\n" $$0 }; !f {print}; f && /^#endif/ {print "extern \"C\" {" t "\n}\n"; f=0}' | \
-	awk '/^\*\/$$/ { print; while ((getline line < "$(BASEDIR)/doc/headers/lichead_c.GPL_WRE") > 0) print line }; ! /^\*\/$$/ { print }' \
+	awk '/^\*\/$$/ { print; while ((getline line < "$(BASEDIR)/doc/headers/lichead_c.GPL_WRE") > 0) print line; print "\n#include <core/exception.h>" }; ! /^\*\/$$/ { print }' \
 	> $@
 
   endif # HAVE_TOLUA is 1

- *commit* df7e554407e74309289a9cb002c3ff2587417615 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Wed Jan 20 13:46:24 2016 +0100
Subject: libinterface: add Interface::msgq_enqeue() to Lua wrapper

 src/libs/interface/interface.tolua |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

_Diff for modified files_:
diff --git a/src/libs/interface/interface.tolua b/src/libs/interface/interface.tolua
index 19e6c69..1e9ab51 100644
--- a/src/libs/interface/interface.tolua
+++ b/src/libs/interface/interface.tolua
@@ -86,6 +86,10 @@ function fawkes.Interface:create_message(type)
   return tolua.cast(message, "fawkes::" .. self:type() .. "::" .. message:type())
 end
 
+function fawkes.Interface:msgq_enqueue(message)
+	 return self:msgq_enqueue_copy(message)
+end
+
 $]
 
 

- *commit* e107ae1b8d1b5b3dff753aa67d8e4c1e0586da83 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 21 11:57:40 2016 +0100
Subject: liblua: more utility methods for LuaContext

 src/libs/lua/context.cpp |   54 ++++++++++++++++++++++++++++++++++++++++++++++
 src/libs/lua/context.h   |    9 ++++++-
 2 files changed, 62 insertions(+), 1 deletions(-)

_Diff for modified files_:
diff --git a/src/libs/lua/context.cpp b/src/libs/lua/context.cpp
index 4002e41..39504a1 100644
--- a/src/libs/lua/context.cpp
+++ b/src/libs/lua/context.cpp
@@ -926,6 +926,16 @@ LuaContext::push_cfunction(lua_CFunction f)
 }
 
 
+/** Get name of type of value at a given index.
+ * @param idx index of value to get type for
+ * @return name of type of the value at the given index
+ */
+std::string
+LuaContext::type_name(int idx)
+{
+	return lua_typename(__L, lua_type(__L, idx));
+}
+
 /** Pop value(s) from stack.
  * @param n number of values to pop
  */
@@ -1120,6 +1130,18 @@ LuaContext::remove_global(const char *name)
 }
 
 
+/** Iterate to next entry of table.
+ * @param idx stack index of table
+ * @return true if there was another iterable value in the table,
+ * false otherwise
+ */
+bool
+LuaContext::table_next(int idx)
+{
+	return lua_next(__L, idx) != 0;
+}
+
+
 /** Retrieve stack value as number.
  * @param idx stack index of value
  * @return value as number
@@ -1163,6 +1185,38 @@ LuaContext::to_string(int idx)
   return lua_tostring(__L, idx);
 }
 
+/** Retrieve stack value as userdata.
+ * @param idx stack index of value
+ * @return value as userdata, maybe NULL
+ */
+void *
+LuaContext::to_userdata(int idx)
+{
+  return lua_touserdata(__L, idx);
+}
+
+
+/** Retrieve stack value as pointer.
+ * @param idx stack index of value
+ * @return value as pointer, maybe NULL
+ */
+void *
+LuaContext::to_pointer(int idx)
+{
+	return (void *)lua_topointer(__L, idx);
+}
+
+
+/** Retrieve stack value as a tolua++ user type.
+ * @param idx stack index of value
+ * @return value as pointer, maybe NULL
+ */
+void *
+LuaContext::to_usertype(int idx)
+{
+	return tolua_tousertype(__L, idx, 0);
+}
+
 
 /** Check if stack value is a boolean.
  * @param idx stack index of value
diff --git a/src/libs/lua/context.h b/src/libs/lua/context.h
index f5cb317..6498d12 100644
--- a/src/libs/lua/context.h
+++ b/src/libs/lua/context.h
@@ -102,6 +102,8 @@ class LuaContext : public FamListener
 		     const char *name_space = 0);
   void push_cfunction(lua_CFunction f);
 
+  std::string type_name(int idx);
+
   void pop(int n);
   void remove(int idx);
   int  stack_size();
@@ -109,11 +111,13 @@ class LuaContext : public FamListener
   void create_table(int narr = 0, int nrec = 0);
   void set_table(int t_index = -3);
   void set_field(const char *key, int t_index = -2);
-
+  
   void get_table(int idx);
   void get_field(int idx, const char *k);
   void get_global(const char *name);
 
+  bool table_next(int idx);
+  
   void raw_set(int idx);
   void raw_seti(int idx, int n);
   void raw_get(int idx);
@@ -123,6 +127,9 @@ class LuaContext : public FamListener
   lua_Integer  to_integer(int idx);
   bool         to_boolean(int idx);
   const char * to_string(int idx);
+  void *       to_userdata(int idx);
+  void *       to_pointer(int idx);
+  void *       to_usertype(int idx);
 
   bool         is_boolean(int idx);
   bool         is_cfunction(int idx);

- *commit* a9d8e7c18c5d473f833b8586859c1db57d3535b7 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 21 11:59:59 2016 +0100
Subject: liblua: improve restart and finalization handling

 src/libs/lua/context.cpp |   53 ++++++++++++++++++++++++++++++++-------------
 1 files changed, 37 insertions(+), 16 deletions(-)

_Diff for modified files_:
diff --git a/src/libs/lua/context.cpp b/src/libs/lua/context.cpp
index 39504a1..20b402d 100644
--- a/src/libs/lua/context.cpp
+++ b/src/libs/lua/context.cpp
@@ -212,26 +212,39 @@ LuaContext::init_state()
   }
 
   LuaContext *tmpctx = new LuaContext(L);
+
   MutexLocker(__watchers.mutex());
   LockList<LuaContextWatcher *>::iterator i;
   for (i = __watchers.begin(); i != __watchers.end(); ++i) {
-    try {
-      (*i)->lua_restarted(tmpctx);
-    } catch (...) {
-      delete tmpctx;
+	  try {
+		  (*i)->lua_restarted(tmpctx);
+	  } catch (...) {
+		  try {
+			  if (! __finalize_call.empty())
+				  do_string(L, "%s", __finalize_call.c_str());
+		  } catch (Exception &e) {} // ignored
+		  
+		  delete tmpctx;
       lua_close(L);
       throw;
     }
   }
   delete tmpctx;
 
-  if ( __start_script ) {
-    if (access(__start_script, R_OK) == 0) {
-      // it's a file and we can access it, execute it!
-      do_file(L, __start_script);
-    } else {
-      do_string(L, "require(\"%s\")", __start_script);
-    }
+  try {
+	  if ( __start_script ) {
+		  if (access(__start_script, R_OK) == 0) {
+			  // it's a file and we can access it, execute it!
+			  do_file(L, __start_script);
+		  } else {
+			  do_string(L, "require(\"%s\")", __start_script);
+		  }
+	  }
+  } catch (...) {
+	  if (! __finalize_call.empty())
+		  do_string(L, "%s", __finalize_call.c_str());
+	  lua_close(L);
+    throw;
   }
 
   return L;
@@ -279,22 +292,30 @@ LuaContext::restart()
 	  if (! __finalize_prepare_call.empty())
 		  do_string(__L, "%s", __finalize_prepare_call.c_str());
 	  
-    lua_State *L = init_state();
+	  lock.unlock();
+	  lua_State *L = init_state();
+	  lock.relock();
     lua_State *tL = __L;
 
-    if (! __finalize_call.empty())
-	    do_string(__L, "%s", __finalize_call.c_str());
+    try {
+	    if (! __finalize_call.empty())
+		    do_string(__L, "%s", __finalize_call.c_str());
+    } catch (Exception &e) {
+	    LibLogger::log_warn("LuaContext", "Finalization call on old context failed, "
+	                        "exception follows, ignoring.");
+	    LibLogger::log_warn("LuaContext", e);
+    }
 
     __L = L;
     if (__owns_L)  lua_close(tL);
     __owns_L = true;
 
   } catch (Exception &e) {
-    if (! __finalize_cancel_call.empty())
-	    do_string(__L, "%s", __finalize_cancel_call.c_str());
     LibLogger::log_error("LuaContext", "Could not restart Lua instance, an error "
 			 "occured while initializing new state. Keeping old state.");
     LibLogger::log_error("LuaContext", e);
+    if (! __finalize_cancel_call.empty())
+	    do_string(__L, "%s", __finalize_cancel_call.c_str());
   }
 }
 

- *commit* 018256b91d12da67f70eef339fc46950e137742c - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 21 13:34:49 2016 +0100
Subject: ffifacegen: generate Interface::msgq_enqueue() and assertions

 src/libs/interfaces/generator/tolua_generator.cpp |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

_Diff for modified files_:
diff --git a/src/libs/interfaces/generator/tolua_generator.cpp b/src/libs/interfaces/generator/tolua_generator.cpp
index c6522e8..d6e26e2 100644
--- a/src/libs/interfaces/generator/tolua_generator.cpp
+++ b/src/libs/interfaces/generator/tolua_generator.cpp
@@ -396,10 +396,14 @@ ToLuaInterfaceGenerator::write_lua_code(FILE *f, std::string classname)
 {
 	fprintf(f,
 	        "\n$[\n\n"
+	        "assert(fawkes.Interface.msgq_first)\n"
+	        "assert(fawkes.Interface.msgq_enqueue)\n"
+	        "assert(fawkes.Interface.create_message)\n\n"
 	        "fawkes.%s.msgq_first     = fawkes.Interface.msgq_first\n"
+	        "fawkes.%s.msgq_enqueue   = fawkes.Interface.msgq_enqueue\n"
 	        "fawkes.%s.create_message = fawkes.Interface.create_message\n"
 	        "\n$]\n\n",
-          classname.c_str(), classname.c_str());
+	        classname.c_str(), classname.c_str(), classname.c_str());
 }
 
 /** Write methods to h file.

- *commit* 03b21cd4758d52d6d6aff2eb16d55dd368257d8d - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 21 13:37:58 2016 +0100
Subject: interfaces: re-generate with new ffifacegen

 src/libs/interfaces/BatteryInterface.tolua         |    5 +++++
 src/libs/interfaces/CameraControlInterface.tolua   |    5 +++++
 src/libs/interfaces/EclipseDebuggerInterface.tolua |    5 +++++
 src/libs/interfaces/FacerInterface.tolua           |    5 +++++
 .../interfaces/FacialExpressionInterface.tolua     |    5 +++++
 src/libs/interfaces/GameStateInterface.tolua       |    5 +++++
 src/libs/interfaces/GripperInterface.tolua         |    5 +++++
 src/libs/interfaces/HumanSkeletonInterface.tolua   |    5 +++++
 src/libs/interfaces/HumanoidMotionInterface.tolua  |    5 +++++
 src/libs/interfaces/IMUInterface.tolua             |    5 +++++
 src/libs/interfaces/JointInterface.tolua           |    5 +++++
 src/libs/interfaces/JoystickInterface.tolua        |    5 +++++
 src/libs/interfaces/KeyValueInterface.tolua        |    5 +++++
 src/libs/interfaces/KickerInterface.tolua          |    5 +++++
 src/libs/interfaces/Laser1080Interface.tolua       |    5 +++++
 src/libs/interfaces/Laser360Interface.tolua        |    5 +++++
 src/libs/interfaces/Laser720Interface.tolua        |    5 +++++
 src/libs/interfaces/LedInterface.tolua             |    5 +++++
 src/libs/interfaces/LocalizationInterface.tolua    |    5 +++++
 src/libs/interfaces/MotorInterface.tolua           |    5 +++++
 src/libs/interfaces/NavPathInterface.tolua         |    5 +++++
 src/libs/interfaces/NavigatorInterface.tolua       |    5 +++++
 src/libs/interfaces/ObjectPositionInterface.tolua  |    5 +++++
 src/libs/interfaces/Position2DTrackInterface.tolua |    5 +++++
 src/libs/interfaces/Position3DInterface.tolua      |    5 +++++
 src/libs/interfaces/SkillerInterface.tolua         |    5 +++++
 src/libs/interfaces/SoccerPenaltyInterface.tolua   |    5 +++++
 .../interfaces/SpeechRecognitionInterface.tolua    |    5 +++++
 src/libs/interfaces/SpeechSynthInterface.tolua     |    5 +++++
 src/libs/interfaces/SwitchInterface.tolua          |    5 +++++
 src/libs/interfaces/TestInterface.tolua            |    5 +++++
 src/libs/interfaces/TransformInterface.tolua       |    5 +++++
 src/libs/interfaces/VisualDisplay2DInterface.tolua |    5 +++++
 33 files changed, 165 insertions(+), 0 deletions(-)

_Diff for modified files_:
diff --git a/src/libs/interfaces/BatteryInterface.tolua b/src/libs/interfaces/BatteryInterface.tolua
index b5e3a17..880481e 100644
--- a/src/libs/interfaces/BatteryInterface.tolua
+++ b/src/libs/interfaces/BatteryInterface.tolua
@@ -111,7 +111,12 @@ class BatteryInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.BatteryInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.BatteryInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.BatteryInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/CameraControlInterface.tolua b/src/libs/interfaces/CameraControlInterface.tolua
index b966e74..1d381c7 100644
--- a/src/libs/interfaces/CameraControlInterface.tolua
+++ b/src/libs/interfaces/CameraControlInterface.tolua
@@ -164,7 +164,12 @@ class CameraControlInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.CameraControlInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.CameraControlInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.CameraControlInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/EclipseDebuggerInterface.tolua b/src/libs/interfaces/EclipseDebuggerInterface.tolua
index d60d1e3..d55a4c0 100644
--- a/src/libs/interfaces/EclipseDebuggerInterface.tolua
+++ b/src/libs/interfaces/EclipseDebuggerInterface.tolua
@@ -78,7 +78,12 @@ class EclipseDebuggerInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.EclipseDebuggerInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.EclipseDebuggerInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.EclipseDebuggerInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/FacerInterface.tolua b/src/libs/interfaces/FacerInterface.tolua
index e3ecd89..2e8ee44 100644
--- a/src/libs/interfaces/FacerInterface.tolua
+++ b/src/libs/interfaces/FacerInterface.tolua
@@ -311,7 +311,12 @@ class FacerInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.FacerInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.FacerInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.FacerInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/FacialExpressionInterface.tolua b/src/libs/interfaces/FacialExpressionInterface.tolua
index 722afda..2c9c6f8 100644
--- a/src/libs/interfaces/FacialExpressionInterface.tolua
+++ b/src/libs/interfaces/FacialExpressionInterface.tolua
@@ -204,7 +204,12 @@ class FacialExpressionInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.FacialExpressionInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.FacialExpressionInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.FacialExpressionInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/GameStateInterface.tolua b/src/libs/interfaces/GameStateInterface.tolua
index 883c3ba..92f1b30 100644
--- a/src/libs/interfaces/GameStateInterface.tolua
+++ b/src/libs/interfaces/GameStateInterface.tolua
@@ -199,7 +199,12 @@ class GameStateInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.GameStateInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.GameStateInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.GameStateInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/GripperInterface.tolua b/src/libs/interfaces/GripperInterface.tolua
index d134265..9edc3ca 100644
--- a/src/libs/interfaces/GripperInterface.tolua
+++ b/src/libs/interfaces/GripperInterface.tolua
@@ -104,7 +104,12 @@ class GripperInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.GripperInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.GripperInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.GripperInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/HumanSkeletonInterface.tolua b/src/libs/interfaces/HumanSkeletonInterface.tolua
index 0acf06f..98e8630 100644
--- a/src/libs/interfaces/HumanSkeletonInterface.tolua
+++ b/src/libs/interfaces/HumanSkeletonInterface.tolua
@@ -358,7 +358,12 @@ class HumanSkeletonInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.HumanSkeletonInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.HumanSkeletonInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.HumanSkeletonInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/HumanoidMotionInterface.tolua b/src/libs/interfaces/HumanoidMotionInterface.tolua
index 67a590c..8fe5dd4 100644
--- a/src/libs/interfaces/HumanoidMotionInterface.tolua
+++ b/src/libs/interfaces/HumanoidMotionInterface.tolua
@@ -385,7 +385,12 @@ class HumanoidMotionInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.HumanoidMotionInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.HumanoidMotionInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.HumanoidMotionInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/IMUInterface.tolua b/src/libs/interfaces/IMUInterface.tolua
index a440b8a..dd626ef 100644
--- a/src/libs/interfaces/IMUInterface.tolua
+++ b/src/libs/interfaces/IMUInterface.tolua
@@ -69,7 +69,12 @@ class IMUInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.IMUInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.IMUInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.IMUInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/JointInterface.tolua b/src/libs/interfaces/JointInterface.tolua
index d9716a8..006dc6e 100644
--- a/src/libs/interfaces/JointInterface.tolua
+++ b/src/libs/interfaces/JointInterface.tolua
@@ -54,7 +54,12 @@ class JointInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.JointInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.JointInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.JointInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/JoystickInterface.tolua b/src/libs/interfaces/JoystickInterface.tolua
index d41a926..b891651 100644
--- a/src/libs/interfaces/JoystickInterface.tolua
+++ b/src/libs/interfaces/JoystickInterface.tolua
@@ -201,7 +201,12 @@ class JoystickInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.JoystickInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.JoystickInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.JoystickInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/KeyValueInterface.tolua b/src/libs/interfaces/KeyValueInterface.tolua
index c7136e6..a5b13f8 100644
--- a/src/libs/interfaces/KeyValueInterface.tolua
+++ b/src/libs/interfaces/KeyValueInterface.tolua
@@ -81,7 +81,12 @@ class KeyValueInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.KeyValueInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.KeyValueInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.KeyValueInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/KickerInterface.tolua b/src/libs/interfaces/KickerInterface.tolua
index da5f78f..c110a21 100644
--- a/src/libs/interfaces/KickerInterface.tolua
+++ b/src/libs/interfaces/KickerInterface.tolua
@@ -157,7 +157,12 @@ class KickerInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.KickerInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.KickerInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.KickerInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/Laser1080Interface.tolua b/src/libs/interfaces/Laser1080Interface.tolua
index 278189b..438605d 100644
--- a/src/libs/interfaces/Laser1080Interface.tolua
+++ b/src/libs/interfaces/Laser1080Interface.tolua
@@ -57,7 +57,12 @@ class Laser1080Interface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.Laser1080Interface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.Laser1080Interface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.Laser1080Interface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/Laser360Interface.tolua b/src/libs/interfaces/Laser360Interface.tolua
index 0b7bf76..8bdd06b 100644
--- a/src/libs/interfaces/Laser360Interface.tolua
+++ b/src/libs/interfaces/Laser360Interface.tolua
@@ -57,7 +57,12 @@ class Laser360Interface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.Laser360Interface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.Laser360Interface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.Laser360Interface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/Laser720Interface.tolua b/src/libs/interfaces/Laser720Interface.tolua
index efa27ae..17ac712 100644
--- a/src/libs/interfaces/Laser720Interface.tolua
+++ b/src/libs/interfaces/Laser720Interface.tolua
@@ -57,7 +57,12 @@ class Laser720Interface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.Laser720Interface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.Laser720Interface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.Laser720Interface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/LedInterface.tolua b/src/libs/interfaces/LedInterface.tolua
index cf4e6a8..45765d1 100644
--- a/src/libs/interfaces/LedInterface.tolua
+++ b/src/libs/interfaces/LedInterface.tolua
@@ -132,7 +132,12 @@ class LedInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.LedInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.LedInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.LedInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/LocalizationInterface.tolua b/src/libs/interfaces/LocalizationInterface.tolua
index 22c8b96..659efe3 100644
--- a/src/libs/interfaces/LocalizationInterface.tolua
+++ b/src/libs/interfaces/LocalizationInterface.tolua
@@ -88,7 +88,12 @@ class LocalizationInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.LocalizationInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.LocalizationInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.LocalizationInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/MotorInterface.tolua b/src/libs/interfaces/MotorInterface.tolua
index 5cfdc45..e81dbed 100644
--- a/src/libs/interfaces/MotorInterface.tolua
+++ b/src/libs/interfaces/MotorInterface.tolua
@@ -456,7 +456,12 @@ class MotorInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.MotorInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.MotorInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.MotorInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/NavPathInterface.tolua b/src/libs/interfaces/NavPathInterface.tolua
index 4fe50e6..84693c3 100644
--- a/src/libs/interfaces/NavPathInterface.tolua
+++ b/src/libs/interfaces/NavPathInterface.tolua
@@ -171,7 +171,12 @@ class NavPathInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.NavPathInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.NavPathInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.NavPathInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/NavigatorInterface.tolua b/src/libs/interfaces/NavigatorInterface.tolua
index 8a1aee4..8c5e7aa 100644
--- a/src/libs/interfaces/NavigatorInterface.tolua
+++ b/src/libs/interfaces/NavigatorInterface.tolua
@@ -587,7 +587,12 @@ class NavigatorInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.NavigatorInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.NavigatorInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.NavigatorInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/ObjectPositionInterface.tolua b/src/libs/interfaces/ObjectPositionInterface.tolua
index 5ecead8..7f56f8c 100644
--- a/src/libs/interfaces/ObjectPositionInterface.tolua
+++ b/src/libs/interfaces/ObjectPositionInterface.tolua
@@ -161,7 +161,12 @@ class ObjectPositionInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.ObjectPositionInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.ObjectPositionInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.ObjectPositionInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/Position2DTrackInterface.tolua b/src/libs/interfaces/Position2DTrackInterface.tolua
index 9f086ed..e7b7f3f 100644
--- a/src/libs/interfaces/Position2DTrackInterface.tolua
+++ b/src/libs/interfaces/Position2DTrackInterface.tolua
@@ -66,7 +66,12 @@ class Position2DTrackInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.Position2DTrackInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.Position2DTrackInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.Position2DTrackInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/Position3DInterface.tolua b/src/libs/interfaces/Position3DInterface.tolua
index 7b29360..a2bbaa9 100644
--- a/src/libs/interfaces/Position3DInterface.tolua
+++ b/src/libs/interfaces/Position3DInterface.tolua
@@ -63,7 +63,12 @@ class Position3DInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.Position3DInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.Position3DInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.Position3DInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/SkillerInterface.tolua b/src/libs/interfaces/SkillerInterface.tolua
index f90e195..d25765e 100644
--- a/src/libs/interfaces/SkillerInterface.tolua
+++ b/src/libs/interfaces/SkillerInterface.tolua
@@ -198,7 +198,12 @@ class SkillerInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.SkillerInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.SkillerInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.SkillerInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/SoccerPenaltyInterface.tolua b/src/libs/interfaces/SoccerPenaltyInterface.tolua
index 92b80e3..2d86dac 100644
--- a/src/libs/interfaces/SoccerPenaltyInterface.tolua
+++ b/src/libs/interfaces/SoccerPenaltyInterface.tolua
@@ -92,7 +92,12 @@ class SoccerPenaltyInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.SoccerPenaltyInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.SoccerPenaltyInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.SoccerPenaltyInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/SpeechRecognitionInterface.tolua b/src/libs/interfaces/SpeechRecognitionInterface.tolua
index cd92815..82f6efb 100644
--- a/src/libs/interfaces/SpeechRecognitionInterface.tolua
+++ b/src/libs/interfaces/SpeechRecognitionInterface.tolua
@@ -112,7 +112,12 @@ class SpeechRecognitionInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.SpeechRecognitionInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.SpeechRecognitionInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.SpeechRecognitionInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/SpeechSynthInterface.tolua b/src/libs/interfaces/SpeechSynthInterface.tolua
index 4dae286..f7fdddf 100644
--- a/src/libs/interfaces/SpeechSynthInterface.tolua
+++ b/src/libs/interfaces/SpeechSynthInterface.tolua
@@ -88,7 +88,12 @@ class SpeechSynthInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.SpeechSynthInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.SpeechSynthInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.SpeechSynthInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/SwitchInterface.tolua b/src/libs/interfaces/SwitchInterface.tolua
index fc98db0..db2f17a 100644
--- a/src/libs/interfaces/SwitchInterface.tolua
+++ b/src/libs/interfaces/SwitchInterface.tolua
@@ -176,7 +176,12 @@ class SwitchInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.SwitchInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.SwitchInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.SwitchInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/TestInterface.tolua b/src/libs/interfaces/TestInterface.tolua
index aea5b82..fa7b1e7 100644
--- a/src/libs/interfaces/TestInterface.tolua
+++ b/src/libs/interfaces/TestInterface.tolua
@@ -160,7 +160,12 @@ class TestInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.TestInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.TestInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.TestInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/TransformInterface.tolua b/src/libs/interfaces/TransformInterface.tolua
index 895d2d3..ae64f3c 100644
--- a/src/libs/interfaces/TransformInterface.tolua
+++ b/src/libs/interfaces/TransformInterface.tolua
@@ -63,7 +63,12 @@ class TransformInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.TransformInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.TransformInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.TransformInterface.create_message = fawkes.Interface.create_message
 
 $]
diff --git a/src/libs/interfaces/VisualDisplay2DInterface.tolua b/src/libs/interfaces/VisualDisplay2DInterface.tolua
index 8b2ba2e..040932f 100644
--- a/src/libs/interfaces/VisualDisplay2DInterface.tolua
+++ b/src/libs/interfaces/VisualDisplay2DInterface.tolua
@@ -285,7 +285,12 @@ class VisualDisplay2DInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.VisualDisplay2DInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.VisualDisplay2DInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.VisualDisplay2DInterface.create_message = fawkes.Interface.create_message
 
 $]

- *commit* ad29da79068fedcaa8cfb7192c4d73156022189a - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 14 23:14:35 2016 +0100
Subject: bumblebee2: re-generate interfaces with new ffifacegen

 .../interfaces/OpenCVStereoParamsInterface.tolua   |  204 +++++++++++++++++++-
 1 files changed, 202 insertions(+), 2 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/bumblebee2/interfaces/OpenCVStereoParamsInterface.tolua b/src/plugins/bumblebee2/interfaces/OpenCVStereoParamsInterface.tolua
index ddecd96..eae6368 100644
--- a/src/plugins/bumblebee2/interfaces/OpenCVStereoParamsInterface.tolua
+++ b/src/plugins/bumblebee2/interfaces/OpenCVStereoParamsInterface.tolua
@@ -17,6 +17,23 @@ class OpenCVStereoParamsInterface : public Interface
     SetPreFilterTypeMessage();
     ~SetPreFilterTypeMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     PreFilterType pre_filter_type();
     void set_pre_filter_type(const PreFilterType new_pre_filter_type);
     int maxlenof_pre_filter_type() const;
@@ -28,6 +45,23 @@ class OpenCVStereoParamsInterface : public Interface
     SetPreFilterSizeMessage();
     ~SetPreFilterSizeMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int pre_filter_size();
     void set_pre_filter_size(const unsigned int new_pre_filter_size);
     int maxlenof_pre_filter_size() const;
@@ -39,6 +73,23 @@ class OpenCVStereoParamsInterface : public Interface
     SetPreFilterCapMessage();
     ~SetPreFilterCapMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int pre_filter_cap();
     void set_pre_filter_cap(const unsigned int new_pre_filter_cap);
     int maxlenof_pre_filter_cap() const;
@@ -50,6 +101,23 @@ class OpenCVStereoParamsInterface : public Interface
     SetSADWindowSizeMessage();
     ~SetSADWindowSizeMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int sad_window_size();
     void set_sad_window_size(const unsigned int new_sad_window_size);
     int maxlenof_sad_window_size() const;
@@ -61,6 +129,23 @@ class OpenCVStereoParamsInterface : public Interface
     SetMinDisparityMessage();
     ~SetMinDisparityMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     int min_disparity();
     void set_min_disparity(const int new_min_disparity);
     int maxlenof_min_disparity() const;
@@ -72,6 +157,23 @@ class OpenCVStereoParamsInterface : public Interface
     SetNumDisparitiesMessage();
     ~SetNumDisparitiesMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int num_disparities();
     void set_num_disparities(const unsigned int new_num_disparities);
     int maxlenof_num_disparities() const;
@@ -83,6 +185,23 @@ class OpenCVStereoParamsInterface : public Interface
     SetTextureThresholdMessage();
     ~SetTextureThresholdMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int texture_threshold();
     void set_texture_threshold(const unsigned int new_texture_threshold);
     int maxlenof_texture_threshold() const;
@@ -94,6 +213,23 @@ class OpenCVStereoParamsInterface : public Interface
     SetUniquenessRatioMessage();
     ~SetUniquenessRatioMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int uniqueness_ratio();
     void set_uniqueness_ratio(const unsigned int new_uniqueness_ratio);
     int maxlenof_uniqueness_ratio() const;
@@ -105,6 +241,23 @@ class OpenCVStereoParamsInterface : public Interface
     SetSpeckleWindowSizeMessage();
     ~SetSpeckleWindowSizeMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int speckle_window_size();
     void set_speckle_window_size(const unsigned int new_speckle_window_size);
     int maxlenof_speckle_window_size() const;
@@ -116,6 +269,23 @@ class OpenCVStereoParamsInterface : public Interface
     SetSpeckleRangeMessage();
     ~SetSpeckleRangeMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int speckle_range();
     void set_speckle_range(const unsigned int new_speckle_range);
     int maxlenof_speckle_range() const;
@@ -127,6 +297,23 @@ class OpenCVStereoParamsInterface : public Interface
     SetTrySmallerWindowsMessage();
     ~SetTrySmallerWindowsMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     bool is_try_smaller_windows();
     void set_try_smaller_windows(const bool new_try_smaller_windows);
     int maxlenof_try_smaller_windows() const;
@@ -179,7 +366,7 @@ class OpenCVStereoParamsInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -198,10 +385,23 @@ class OpenCVStereoParamsInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.OpenCVStereoParamsInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.OpenCVStereoParamsInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.OpenCVStereoParamsInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }

- *commit* 6114f9107c3747ad6d223a97df10ecd6dd00712b - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 14 23:14:35 2016 +0100
Subject: dynamixel: re-generate interfaces with new ffifacegen

 .../interfaces/DynamixelServoInterface.tolua       |  340 +++++++++++++++++++-
 1 files changed, 338 insertions(+), 2 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/dynamixel/interfaces/DynamixelServoInterface.tolua b/src/plugins/dynamixel/interfaces/DynamixelServoInterface.tolua
index 4359111..088bae6 100644
--- a/src/plugins/dynamixel/interfaces/DynamixelServoInterface.tolua
+++ b/src/plugins/dynamixel/interfaces/DynamixelServoInterface.tolua
@@ -23,6 +23,23 @@ class DynamixelServoInterface : public Interface
     StopMessage();
     ~StopMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class FlushMessage : public Message
@@ -30,6 +47,23 @@ class DynamixelServoInterface : public Interface
     FlushMessage();
     ~FlushMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class GotoMessage : public Message
@@ -38,6 +72,23 @@ class DynamixelServoInterface : public Interface
     GotoMessage();
     ~GotoMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float angle();
     void set_angle(const float new_angle);
     int maxlenof_angle() const;
@@ -49,6 +100,23 @@ class DynamixelServoInterface : public Interface
     TimedGotoMessage();
     ~TimedGotoMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float time_sec();
     void set_time_sec(const float new_time_sec);
     int maxlenof_time_sec() const;
@@ -63,6 +131,23 @@ class DynamixelServoInterface : public Interface
     SetModeMessage();
     ~SetModeMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned char mode();
     void set_mode(const unsigned char new_mode);
     int maxlenof_mode() const;
@@ -74,6 +159,23 @@ class DynamixelServoInterface : public Interface
     SetSpeedMessage();
     ~SetSpeedMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned short speed();
     void set_speed(const unsigned short new_speed);
     int maxlenof_speed() const;
@@ -85,6 +187,23 @@ class DynamixelServoInterface : public Interface
     SetEnabledMessage();
     ~SetEnabledMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     bool is_enabled();
     void set_enabled(const bool new_enabled);
     int maxlenof_enabled() const;
@@ -96,6 +215,23 @@ class DynamixelServoInterface : public Interface
     SetVelocityMessage();
     ~SetVelocityMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float velocity();
     void set_velocity(const float new_velocity);
     int maxlenof_velocity() const;
@@ -107,6 +243,23 @@ class DynamixelServoInterface : public Interface
     SetMarginMessage();
     ~SetMarginMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float angle_margin();
     void set_angle_margin(const float new_angle_margin);
     int maxlenof_angle_margin() const;
@@ -118,6 +271,23 @@ class DynamixelServoInterface : public Interface
     SetComplianceValuesMessage();
     ~SetComplianceValuesMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned char cw_margin();
     void set_cw_margin(const unsigned char new_cw_margin);
     int maxlenof_cw_margin() const;
@@ -138,6 +308,23 @@ class DynamixelServoInterface : public Interface
     SetGoalSpeedMessage();
     ~SetGoalSpeedMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int goal_speed();
     void set_goal_speed(const unsigned int new_goal_speed);
     int maxlenof_goal_speed() const;
@@ -149,6 +336,23 @@ class DynamixelServoInterface : public Interface
     SetTorqueLimitMessage();
     ~SetTorqueLimitMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int torque_limit();
     void set_torque_limit(const unsigned int new_torque_limit);
     int maxlenof_torque_limit() const;
@@ -160,6 +364,23 @@ class DynamixelServoInterface : public Interface
     SetPunchMessage();
     ~SetPunchMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int punch();
     void set_punch(const unsigned int new_punch);
     int maxlenof_punch() const;
@@ -171,6 +392,23 @@ class DynamixelServoInterface : public Interface
     GotoPositionMessage();
     ~GotoPositionMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int position();
     void set_position(const unsigned int new_position);
     int maxlenof_position() const;
@@ -182,6 +420,23 @@ class DynamixelServoInterface : public Interface
     SetAngleLimitsMessage();
     ~SetAngleLimitsMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int angle_limit_cw();
     void set_angle_limit_cw(const unsigned int new_angle_limit_cw);
     int maxlenof_angle_limit_cw() const;
@@ -195,6 +450,23 @@ class DynamixelServoInterface : public Interface
     ResetRawErrorMessage();
     ~ResetRawErrorMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class SetPreventAlarmShutdownMessage : public Message
@@ -203,6 +475,23 @@ class DynamixelServoInterface : public Interface
     SetPreventAlarmShutdownMessage();
     ~SetPreventAlarmShutdownMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     bool is_enable_prevent_alarm_shutdown();
     void set_enable_prevent_alarm_shutdown(const bool new_enable_prevent_alarm_shutdown);
     int maxlenof_enable_prevent_alarm_shutdown() const;
@@ -214,6 +503,23 @@ class DynamixelServoInterface : public Interface
     SetAutorecoverEnabledMessage();
     ~SetAutorecoverEnabledMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     bool is_autorecover_enabled();
     void set_autorecover_enabled(const bool new_autorecover_enabled);
     int maxlenof_autorecover_enabled() const;
@@ -224,6 +530,23 @@ class DynamixelServoInterface : public Interface
     RecoverMessage();
     ~RecoverMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   char * model();
@@ -342,7 +665,7 @@ class DynamixelServoInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -361,10 +684,23 @@ class DynamixelServoInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.DynamixelServoInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.DynamixelServoInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.DynamixelServoInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }

- *commit* 93a6c61ea2d72bde7e2d9a4167e093542a3f5827 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 14 23:14:35 2016 +0100
Subject: jaco: re-generate interfaces with new ffifacegen

 .../jaco/interfaces/JacoBimanualInterface.tolua    |   85 ++++++++++-
 src/plugins/jaco/interfaces/JacoInterface.tolua    |  170 +++++++++++++++++++-
 2 files changed, 251 insertions(+), 4 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/jaco/interfaces/JacoBimanualInterface.tolua b/src/plugins/jaco/interfaces/JacoBimanualInterface.tolua
index 4794def..988f7e9 100644
--- a/src/plugins/jaco/interfaces/JacoBimanualInterface.tolua
+++ b/src/plugins/jaco/interfaces/JacoBimanualInterface.tolua
@@ -16,6 +16,23 @@ class JacoBimanualInterface : public Interface
     CartesianGotoMessage();
     ~CartesianGotoMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float l_x();
     void set_l_x(const float new_l_x);
     int maxlenof_l_x() const;
@@ -60,6 +77,23 @@ class JacoBimanualInterface : public Interface
     MoveGripperMessage();
     ~MoveGripperMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float l_finger1();
     void set_l_finger1(const float new_l_finger1);
     int maxlenof_l_finger1() const;
@@ -86,6 +120,23 @@ class JacoBimanualInterface : public Interface
     SetPlannerParamsMessage();
     ~SetPlannerParamsMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * params();
     void set_params(const char * new_params);
     int maxlenof_params() const;
@@ -97,6 +148,23 @@ class JacoBimanualInterface : public Interface
     SetConstrainedMessage();
     ~SetConstrainedMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     bool is_constrained();
     void set_constrained(const bool new_constrained);
     int maxlenof_constrained() const;
@@ -128,7 +196,7 @@ class JacoBimanualInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -147,10 +215,23 @@ class JacoBimanualInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.JacoBimanualInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.JacoBimanualInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.JacoBimanualInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }
diff --git a/src/plugins/jaco/interfaces/JacoInterface.tolua b/src/plugins/jaco/interfaces/JacoInterface.tolua
index 462504a..b7b60f5 100644
--- a/src/plugins/jaco/interfaces/JacoInterface.tolua
+++ b/src/plugins/jaco/interfaces/JacoInterface.tolua
@@ -15,6 +15,23 @@ class JacoInterface : public Interface
     CalibrateMessage();
     ~CalibrateMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class RetractMessage : public Message
@@ -22,6 +39,23 @@ class JacoInterface : public Interface
     RetractMessage();
     ~RetractMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class StopMessage : public Message
@@ -29,6 +63,23 @@ class JacoInterface : public Interface
     StopMessage();
     ~StopMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class CartesianGotoMessage : public Message
@@ -37,6 +88,23 @@ class JacoInterface : public Interface
     CartesianGotoMessage();
     ~CartesianGotoMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float x();
     void set_x(const float new_x);
     int maxlenof_x() const;
@@ -63,6 +131,23 @@ class JacoInterface : public Interface
     AngularGotoMessage();
     ~AngularGotoMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float j1();
     void set_j1(const float new_j1);
     int maxlenof_j1() const;
@@ -89,6 +174,23 @@ class JacoInterface : public Interface
     MoveGripperMessage();
     ~MoveGripperMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float finger1();
     void set_finger1(const float new_finger1);
     int maxlenof_finger1() const;
@@ -106,6 +208,23 @@ class JacoInterface : public Interface
     SetPlannerParamsMessage();
     ~SetPlannerParamsMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * params();
     void set_params(const char * new_params);
     int maxlenof_params() const;
@@ -117,6 +236,23 @@ class JacoInterface : public Interface
     JoystickPushMessage();
     ~JoystickPushMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int button();
     void set_button(const unsigned int new_button);
     int maxlenof_button() const;
@@ -127,6 +263,23 @@ class JacoInterface : public Interface
     JoystickReleaseMessage();
     ~JoystickReleaseMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   bool is_connected();
@@ -188,7 +341,7 @@ class JacoInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -207,10 +360,23 @@ class JacoInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.JacoInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.JacoInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.JacoInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }

- *commit* 92ba576c50aeb3ccd3ff610d045a1c78613596aa - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 14 23:14:35 2016 +0100
Subject: katana: re-generate interfaces with new ffifacegen

 .../katana/interfaces/KatanaInterface.tolua        |  289 +++++++++++++++++++-
 1 files changed, 287 insertions(+), 2 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/katana/interfaces/KatanaInterface.tolua b/src/plugins/katana/interfaces/KatanaInterface.tolua
index 36ff9e7..8ac587c 100644
--- a/src/plugins/katana/interfaces/KatanaInterface.tolua
+++ b/src/plugins/katana/interfaces/KatanaInterface.tolua
@@ -33,6 +33,23 @@ class KatanaInterface : public Interface
     StopMessage();
     ~StopMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class FlushMessage : public Message
@@ -40,6 +57,23 @@ class KatanaInterface : public Interface
     FlushMessage();
     ~FlushMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class ParkMessage : public Message
@@ -47,6 +81,23 @@ class KatanaInterface : public Interface
     ParkMessage();
     ~ParkMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class LinearGotoMessage : public Message
@@ -55,6 +106,23 @@ class KatanaInterface : public Interface
     LinearGotoMessage();
     ~LinearGotoMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float theta_error();
     void set_theta_error(const float new_theta_error);
     int maxlenof_theta_error() const;
@@ -96,6 +164,23 @@ class KatanaInterface : public Interface
     LinearGotoKniMessage();
     ~LinearGotoKniMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float x();
     void set_x(const float new_x);
     int maxlenof_x() const;
@@ -122,6 +207,23 @@ class KatanaInterface : public Interface
     ObjectGotoMessage();
     ~ObjectGotoMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * object();
     void set_object(const char * new_object);
     int maxlenof_object() const;
@@ -135,6 +237,23 @@ class KatanaInterface : public Interface
     CalibrateMessage();
     ~CalibrateMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class OpenGripperMessage : public Message
@@ -142,6 +261,23 @@ class KatanaInterface : public Interface
     OpenGripperMessage();
     ~OpenGripperMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class CloseGripperMessage : public Message
@@ -149,6 +285,23 @@ class KatanaInterface : public Interface
     CloseGripperMessage();
     ~CloseGripperMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class SetEnabledMessage : public Message
@@ -157,6 +310,23 @@ class KatanaInterface : public Interface
     SetEnabledMessage();
     ~SetEnabledMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     bool is_enabled();
     void set_enabled(const bool new_enabled);
     int maxlenof_enabled() const;
@@ -168,6 +338,23 @@ class KatanaInterface : public Interface
     SetMaxVelocityMessage();
     ~SetMaxVelocityMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned char max_velocity();
     void set_max_velocity(const unsigned char new_max_velocity);
     int maxlenof_max_velocity() const;
@@ -179,6 +366,23 @@ class KatanaInterface : public Interface
     SetPlannerParamsMessage();
     ~SetPlannerParamsMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * plannerparams();
     void set_plannerparams(const char * new_plannerparams);
     int maxlenof_plannerparams() const;
@@ -193,6 +397,23 @@ class KatanaInterface : public Interface
     SetMotorEncoderMessage();
     ~SetMotorEncoderMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int nr();
     void set_nr(const unsigned int new_nr);
     int maxlenof_nr() const;
@@ -207,6 +428,23 @@ class KatanaInterface : public Interface
     MoveMotorEncoderMessage();
     ~MoveMotorEncoderMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int nr();
     void set_nr(const unsigned int new_nr);
     int maxlenof_nr() const;
@@ -221,6 +459,23 @@ class KatanaInterface : public Interface
     SetMotorAngleMessage();
     ~SetMotorAngleMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int nr();
     void set_nr(const unsigned int new_nr);
     int maxlenof_nr() const;
@@ -235,6 +490,23 @@ class KatanaInterface : public Interface
     MoveMotorAngleMessage();
     ~MoveMotorAngleMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int nr();
     void set_nr(const unsigned int new_nr);
     int maxlenof_nr() const;
@@ -305,7 +577,7 @@ class KatanaInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -324,10 +596,23 @@ class KatanaInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.KatanaInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.KatanaInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.KatanaInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }

- *commit* 653e9da1728f5de542c86df1854ab88c39951ce8 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 14 23:14:35 2016 +0100
Subject: laser-cluster: re-generate interfaces with new ffifacegen

 .../interfaces/LaserClusterInterface.tolua         |   51 +++++++++++++++++++-
 1 files changed, 49 insertions(+), 2 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/laser-cluster/interfaces/LaserClusterInterface.tolua b/src/plugins/laser-cluster/interfaces/LaserClusterInterface.tolua
index 2f324bd..2d07f2e 100644
--- a/src/plugins/laser-cluster/interfaces/LaserClusterInterface.tolua
+++ b/src/plugins/laser-cluster/interfaces/LaserClusterInterface.tolua
@@ -17,6 +17,23 @@ class LaserClusterInterface : public Interface
     SetMaxXMessage();
     ~SetMaxXMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float max_x();
     void set_max_x(const float new_max_x);
     int maxlenof_max_x() const;
@@ -28,6 +45,23 @@ class LaserClusterInterface : public Interface
     SetSelectionModeMessage();
     ~SetSelectionModeMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     SelectionMode selection_mode();
     void set_selection_mode(const SelectionMode new_selection_mode);
     int maxlenof_selection_mode() const;
@@ -53,7 +87,7 @@ class LaserClusterInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -72,10 +106,23 @@ class LaserClusterInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.LaserClusterInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.LaserClusterInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.LaserClusterInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }

- *commit* 39a801bb75b3d117ab7682f14d6292cf3a6c00a4 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 14 23:15:28 2016 +0100
Subject: laser-lines: re-generate interfaces with new ffifacegen

 .../interfaces/LaserLineInterface.tolua            |   17 +++++++++++++++--
 1 files changed, 15 insertions(+), 2 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/laser-lines/interfaces/LaserLineInterface.tolua b/src/plugins/laser-lines/interfaces/LaserLineInterface.tolua
index 3d5b6fe..6e75d2b 100644
--- a/src/plugins/laser-lines/interfaces/LaserLineInterface.tolua
+++ b/src/plugins/laser-lines/interfaces/LaserLineInterface.tolua
@@ -44,7 +44,7 @@ class LaserLineInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -63,10 +63,23 @@ class LaserLineInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.LaserLineInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.LaserLineInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.LaserLineInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }

- *commit* e2f2ec9b5b4abbd1a52eb333f52d422b3eb73ef3 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 14 23:14:35 2016 +0100
Subject: nao: re-generate interfaces with new ffifacegen

 .../nao/interfaces/NaoJointPositionInterface.tolua |   85 +++++++++++++++++++-
 .../interfaces/NaoJointStiffnessInterface.tolua    |   68 +++++++++++++++-
 .../nao/interfaces/NaoSensorInterface.tolua        |   68 +++++++++++++++-
 3 files changed, 215 insertions(+), 6 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/nao/interfaces/NaoJointPositionInterface.tolua b/src/plugins/nao/interfaces/NaoJointPositionInterface.tolua
index d5ec43f..edeaf8e 100644
--- a/src/plugins/nao/interfaces/NaoJointPositionInterface.tolua
+++ b/src/plugins/nao/interfaces/NaoJointPositionInterface.tolua
@@ -45,6 +45,23 @@ class NaoJointPositionInterface : public Interface
     SetServoMessage();
     ~SetServoMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int servo();
     void set_servo(const unsigned int new_servo);
     int maxlenof_servo() const;
@@ -62,6 +79,23 @@ class NaoJointPositionInterface : public Interface
     SetServosMessage();
     ~SetServosMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float head_yaw();
     void set_head_yaw(const float new_head_yaw);
     int maxlenof_head_yaw() const;
@@ -151,6 +185,23 @@ class NaoJointPositionInterface : public Interface
     MoveServoMessage();
     ~MoveServoMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int servo();
     void set_servo(const unsigned int new_servo);
     int maxlenof_servo() const;
@@ -168,6 +219,23 @@ class NaoJointPositionInterface : public Interface
     MoveServosMessage();
     ~MoveServosMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float speed();
     void set_speed(const float new_speed);
     int maxlenof_speed() const;
@@ -352,7 +420,7 @@ class NaoJointPositionInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -371,10 +439,23 @@ class NaoJointPositionInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.NaoJointPositionInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.NaoJointPositionInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.NaoJointPositionInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }
diff --git a/src/plugins/nao/interfaces/NaoJointStiffnessInterface.tolua b/src/plugins/nao/interfaces/NaoJointStiffnessInterface.tolua
index f197fce..61de90b 100644
--- a/src/plugins/nao/interfaces/NaoJointStiffnessInterface.tolua
+++ b/src/plugins/nao/interfaces/NaoJointStiffnessInterface.tolua
@@ -12,6 +12,23 @@ class NaoJointStiffnessInterface : public Interface
     SetStiffnessMessage();
     ~SetStiffnessMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     unsigned int servo();
     void set_servo(const unsigned int new_servo);
     int maxlenof_servo() const;
@@ -29,6 +46,23 @@ class NaoJointStiffnessInterface : public Interface
     SetBodyStiffnessMessage();
     ~SetBodyStiffnessMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float value();
     void set_value(const float new_value);
     int maxlenof_value() const;
@@ -43,6 +77,23 @@ class NaoJointStiffnessInterface : public Interface
     SetStiffnessesMessage();
     ~SetStiffnessesMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float time_sec();
     void set_time_sec(const float new_time_sec);
     int maxlenof_time_sec() const;
@@ -221,7 +272,7 @@ class NaoJointStiffnessInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -240,10 +291,23 @@ class NaoJointStiffnessInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.NaoJointStiffnessInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.NaoJointStiffnessInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.NaoJointStiffnessInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }
diff --git a/src/plugins/nao/interfaces/NaoSensorInterface.tolua b/src/plugins/nao/interfaces/NaoSensorInterface.tolua
index 564a9c8..f3d037f 100644
--- a/src/plugins/nao/interfaces/NaoSensorInterface.tolua
+++ b/src/plugins/nao/interfaces/NaoSensorInterface.tolua
@@ -21,6 +21,23 @@ class NaoSensorInterface : public Interface
     EmitUltrasonicWaveMessage();
     ~EmitUltrasonicWaveMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     UltrasonicDirection ultrasonic_direction();
     void set_ultrasonic_direction(const UltrasonicDirection new_ultrasonic_direction);
     int maxlenof_ultrasonic_direction() const;
@@ -32,6 +49,23 @@ class NaoSensorInterface : public Interface
     StartUltrasonicMessage();
     ~StartUltrasonicMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     UltrasonicDirection ultrasonic_direction();
     void set_ultrasonic_direction(const UltrasonicDirection new_ultrasonic_direction);
     int maxlenof_ultrasonic_direction() const;
@@ -42,6 +76,23 @@ class NaoSensorInterface : public Interface
     StopUltrasonicMessage();
     ~StopUltrasonicMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   float accel_x();
@@ -160,7 +211,7 @@ class NaoSensorInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -179,10 +230,23 @@ class NaoSensorInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.NaoSensorInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.NaoSensorInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.NaoSensorInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }

- *commit* fd0d822429e46791c8d813a052b36ab93686ddfb - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 14 23:15:42 2016 +0100
Subject: navgraph-generator: rename id to name in interface field names

 .../interfaces/NavGraphGeneratorInterface.cpp      |  194 ++++++------
 .../interfaces/NavGraphGeneratorInterface.h_ext    |   60 ++--
 .../interfaces/NavGraphGeneratorInterface.tolua    |  320 ++++++++++++++++++--
 .../interfaces/NavGraphGeneratorInterface.xml      |   12 +-
 .../navgraph_generator_thread.cpp                  |   14 +-
 5 files changed, 434 insertions(+), 166 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.cpp b/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.cpp
index ba46b93..de581e8 100644
--- a/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.cpp
+++ b/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.cpp
@@ -91,7 +91,7 @@ NavGraphGeneratorInterface::NavGraphGeneratorInterface() : Interface()
   add_messageinfo("SetCopyGraphDefaultPropertiesMessage");
   add_messageinfo("RemovePointOfInterestMessage");
   add_messageinfo("ComputeMessage");
-  unsigned char tmp_hash[] = {0x5c, 0x8a, 0xdf, 0x1a, 0x27, 0xe3, 0x7, 0x2f, 0x3a, 0x74, 0xe3, 0xb4, 0xe5, 0x33, 0xd, 0x73};
+  unsigned char tmp_hash[] = {0x5e, 0xdf, 0x82, 0xa5, 0x9f, 0x36, 0xc2, 0xb5, 0x43, 0xba, 0xb6, 0x5, 0x12, 0xf4, 0x9c, 0xd};
   set_hash(tmp_hash);
 }
 
@@ -1025,18 +1025,18 @@ NavGraphGeneratorInterface::AddMapObstaclesMessage::clone() const
 
 
 /** Constructor with initial values.
- * @param ini_id initial value for id
+ * @param ini_name initial value for name
  * @param ini_x initial value for x
  * @param ini_y initial value for y
  */
-NavGraphGeneratorInterface::AddObstacleMessage::AddObstacleMessage(const char * ini_id, const float ini_x, const float ini_y) : Message("AddObstacleMessage")
+NavGraphGeneratorInterface::AddObstacleMessage::AddObstacleMessage(const char * ini_name, const float ini_x, const float ini_y) : Message("AddObstacleMessage")
 {
   data_size = sizeof(AddObstacleMessage_data_t);
   data_ptr  = malloc(data_size);
   memset(data_ptr, 0, data_size);
   data      = (AddObstacleMessage_data_t *)data_ptr;
   data_ts   = (message_data_ts_t *)data_ptr;
-  strncpy(data->id, ini_id, 64);
+  strncpy(data->name, ini_name, 64);
   data->x = ini_x;
   data->y = ini_y;
   enum_map_ConnectionMode[(int)NOT_CONNECTED] = "NOT_CONNECTED";
@@ -1050,7 +1050,7 @@ NavGraphGeneratorInterface::AddObstacleMessage::AddObstacleMessage(const char *
   enum_map_EdgeMode[(int)NO_INTERSECTION] = "NO_INTERSECTION";
   enum_map_EdgeMode[(int)SPLIT_INTERSECTION] = "SPLIT_INTERSECTION";
   enum_map_EdgeMode[(int)FORCE] = "FORCE";
-  add_fieldinfo(IFT_STRING, "id", 64, data->id);
+  add_fieldinfo(IFT_STRING, "name", 64, data->name);
   add_fieldinfo(IFT_FLOAT, "x", 1, &data->x);
   add_fieldinfo(IFT_FLOAT, "y", 1, &data->y);
 }
@@ -1073,7 +1073,7 @@ NavGraphGeneratorInterface::AddObstacleMessage::AddObstacleMessage() : Message("
   enum_map_EdgeMode[(int)NO_INTERSECTION] = "NO_INTERSECTION";
   enum_map_EdgeMode[(int)SPLIT_INTERSECTION] = "SPLIT_INTERSECTION";
   enum_map_EdgeMode[(int)FORCE] = "FORCE";
-  add_fieldinfo(IFT_STRING, "id", 64, data->id);
+  add_fieldinfo(IFT_STRING, "name", 64, data->name);
   add_fieldinfo(IFT_FLOAT, "x", 1, &data->x);
   add_fieldinfo(IFT_FLOAT, "y", 1, &data->y);
 }
@@ -1097,38 +1097,38 @@ NavGraphGeneratorInterface::AddObstacleMessage::AddObstacleMessage(const AddObst
 }
 
 /* Methods */
-/** Get id value.
+/** Get name value.
  * 
       ID of the obstacle. Can later be used to remove it again.
     
- * @return id value
+ * @return name value
  */
 char *
-NavGraphGeneratorInterface::AddObstacleMessage::id() const
+NavGraphGeneratorInterface::AddObstacleMessage::name() const
 {
-  return data->id;
+  return data->name;
 }
 
-/** Get maximum length of id value.
- * @return length of id value, can be length of the array or number of 
+/** Get maximum length of name value.
+ * @return length of name value, can be length of the array or number of 
  * maximum number of characters for a string
  */
 size_t
-NavGraphGeneratorInterface::AddObstacleMessage::maxlenof_id() const
+NavGraphGeneratorInterface::AddObstacleMessage::maxlenof_name() const
 {
   return 64;
 }
 
-/** Set id value.
+/** Set name value.
  * 
       ID of the obstacle. Can later be used to remove it again.
     
- * @param new_id new id value
+ * @param new_name new name value
  */
 void
-NavGraphGeneratorInterface::AddObstacleMessage::set_id(const char * new_id)
+NavGraphGeneratorInterface::AddObstacleMessage::set_name(const char * new_name)
 {
-  strncpy(data->id, new_id, sizeof(data->id));
+  strncpy(data->name, new_name, sizeof(data->name));
 }
 
 /** Get x value.
@@ -1209,16 +1209,16 @@ NavGraphGeneratorInterface::AddObstacleMessage::clone() const
 
 
 /** Constructor with initial values.
- * @param ini_id initial value for id
+ * @param ini_name initial value for name
  */
-NavGraphGeneratorInterface::RemoveObstacleMessage::RemoveObstacleMessage(const char * ini_id) : Message("RemoveObstacleMessage")
+NavGraphGeneratorInterface::RemoveObstacleMessage::RemoveObstacleMessage(const char * ini_name) : Message("RemoveObstacleMessage")
 {
   data_size = sizeof(RemoveObstacleMessage_data_t);
   data_ptr  = malloc(data_size);
   memset(data_ptr, 0, data_size);
   data      = (RemoveObstacleMessage_data_t *)data_ptr;
   data_ts   = (message_data_ts_t *)data_ptr;
-  strncpy(data->id, ini_id, 64);
+  strncpy(data->name, ini_name, 64);
   enum_map_ConnectionMode[(int)NOT_CONNECTED] = "NOT_CONNECTED";
   enum_map_ConnectionMode[(int)UNCONNECTED] = "UNCONNECTED";
   enum_map_ConnectionMode[(int)CLOSEST_NODE] = "CLOSEST_NODE";
@@ -1230,7 +1230,7 @@ NavGraphGeneratorInterface::RemoveObstacleMessage::RemoveObstacleMessage(const c
   enum_map_EdgeMode[(int)NO_INTERSECTION] = "NO_INTERSECTION";
   enum_map_EdgeMode[(int)SPLIT_INTERSECTION] = "SPLIT_INTERSECTION";
   enum_map_EdgeMode[(int)FORCE] = "FORCE";
-  add_fieldinfo(IFT_STRING, "id", 64, data->id);
+  add_fieldinfo(IFT_STRING, "name", 64, data->name);
 }
 /** Constructor */
 NavGraphGeneratorInterface::RemoveObstacleMessage::RemoveObstacleMessage() : Message("RemoveObstacleMessage")
@@ -1251,7 +1251,7 @@ NavGraphGeneratorInterface::RemoveObstacleMessage::RemoveObstacleMessage() : Mes
   enum_map_EdgeMode[(int)NO_INTERSECTION] = "NO_INTERSECTION";
   enum_map_EdgeMode[(int)SPLIT_INTERSECTION] = "SPLIT_INTERSECTION";
   enum_map_EdgeMode[(int)FORCE] = "FORCE";
-  add_fieldinfo(IFT_STRING, "id", 64, data->id);
+  add_fieldinfo(IFT_STRING, "name", 64, data->name);
 }
 
 /** Destructor */
@@ -1273,38 +1273,38 @@ NavGraphGeneratorInterface::RemoveObstacleMessage::RemoveObstacleMessage(const R
 }
 
 /* Methods */
-/** Get id value.
+/** Get name value.
  * 
       ID of the obstacle to remove.
     
- * @return id value
+ * @return name value
  */
 char *
-NavGraphGeneratorInterface::RemoveObstacleMessage::id() const
+NavGraphGeneratorInterface::RemoveObstacleMessage::name() const
 {
-  return data->id;
+  return data->name;
 }
 
-/** Get maximum length of id value.
- * @return length of id value, can be length of the array or number of 
+/** Get maximum length of name value.
+ * @return length of name value, can be length of the array or number of 
  * maximum number of characters for a string
  */
 size_t
-NavGraphGeneratorInterface::RemoveObstacleMessage::maxlenof_id() const
+NavGraphGeneratorInterface::RemoveObstacleMessage::maxlenof_name() const
 {
   return 64;
 }
 
-/** Set id value.
+/** Set name value.
  * 
       ID of the obstacle to remove.
     
- * @param new_id new id value
+ * @param new_name new name value
  */
 void
-NavGraphGeneratorInterface::RemoveObstacleMessage::set_id(const char * new_id)
+NavGraphGeneratorInterface::RemoveObstacleMessage::set_name(const char * new_name)
 {
-  strncpy(data->id, new_id, sizeof(data->id));
+  strncpy(data->name, new_name, sizeof(data->name));
 }
 
 /** Clone this message.
@@ -1325,19 +1325,19 @@ NavGraphGeneratorInterface::RemoveObstacleMessage::clone() const
 
 
 /** Constructor with initial values.
- * @param ini_id initial value for id
+ * @param ini_name initial value for name
  * @param ini_x initial value for x
  * @param ini_y initial value for y
  * @param ini_mode initial value for mode
  */
-NavGraphGeneratorInterface::AddPointOfInterestMessage::AddPointOfInterestMessage(const char * ini_id, const float ini_x, const float ini_y, const ConnectionMode ini_mode) : Message("AddPointOfInterestMessage")
+NavGraphGeneratorInterface::AddPointOfInterestMessage::AddPointOfInterestMessage(const char * ini_name, const float ini_x, const float ini_y, const ConnectionMode ini_mode) : Message("AddPointOfInterestMessage")
 {
   data_size = sizeof(AddPointOfInterestMessage_data_t);
   data_ptr  = malloc(data_size);
   memset(data_ptr, 0, data_size);
   data      = (AddPointOfInterestMessage_data_t *)data_ptr;
   data_ts   = (message_data_ts_t *)data_ptr;
-  strncpy(data->id, ini_id, 64);
+  strncpy(data->name, ini_name, 64);
   data->x = ini_x;
   data->y = ini_y;
   data->mode = ini_mode;
@@ -1352,7 +1352,7 @@ NavGraphGeneratorInterface::AddPointOfInterestMessage::AddPointOfInterestMessage
   enum_map_EdgeMode[(int)NO_INTERSECTION] = "NO_INTERSECTION";
   enum_map_EdgeMode[(int)SPLIT_INTERSECTION] = "SPLIT_INTERSECTION";
   enum_map_EdgeMode[(int)FORCE] = "FORCE";
-  add_fieldinfo(IFT_STRING, "id", 64, data->id);
+  add_fieldinfo(IFT_STRING, "name", 64, data->name);
   add_fieldinfo(IFT_FLOAT, "x", 1, &data->x);
   add_fieldinfo(IFT_FLOAT, "y", 1, &data->y);
   add_fieldinfo(IFT_ENUM, "mode", 1, &data->mode, "ConnectionMode", &enum_map_ConnectionMode);
@@ -1376,7 +1376,7 @@ NavGraphGeneratorInterface::AddPointOfInterestMessage::AddPointOfInterestMessage
   enum_map_EdgeMode[(int)NO_INTERSECTION] = "NO_INTERSECTION";
   enum_map_EdgeMode[(int)SPLIT_INTERSECTION] = "SPLIT_INTERSECTION";
   enum_map_EdgeMode[(int)FORCE] = "FORCE";
-  add_fieldinfo(IFT_STRING, "id", 64, data->id);
+  add_fieldinfo(IFT_STRING, "name", 64, data->name);
   add_fieldinfo(IFT_FLOAT, "x", 1, &data->x);
   add_fieldinfo(IFT_FLOAT, "y", 1, &data->y);
   add_fieldinfo(IFT_ENUM, "mode", 1, &data->mode, "ConnectionMode", &enum_map_ConnectionMode);
@@ -1401,38 +1401,38 @@ NavGraphGeneratorInterface::AddPointOfInterestMessage::AddPointOfInterestMessage
 }
 
 /* Methods */
-/** Get id value.
+/** Get name value.
  * 
       ID of the obstacle. Can later be used to remove it again.
     
- * @return id value
+ * @return name value
  */
 char *
-NavGraphGeneratorInterface::AddPointOfInterestMessage::id() const
+NavGraphGeneratorInterface::AddPointOfInterestMessage::name() const
 {
-  return data->id;
+  return data->name;
 }
 
-/** Get maximum length of id value.
- * @return length of id value, can be length of the array or number of 
+/** Get maximum length of name value.
+ * @return length of name value, can be length of the array or number of 
  * maximum number of characters for a string
  */
 size_t
-NavGraphGeneratorInterface::AddPointOfInterestMessage::maxlenof_id() const
+NavGraphGeneratorInterface::AddPointOfInterestMessage::maxlenof_name() const
 {
   return 64;
 }
 
-/** Set id value.
+/** Set name value.
  * 
       ID of the obstacle. Can later be used to remove it again.
     
- * @param new_id new id value
+ * @param new_name new name value
  */
 void
-NavGraphGeneratorInterface::AddPointOfInterestMessage::set_id(const char * new_id)
+NavGraphGeneratorInterface::AddPointOfInterestMessage::set_name(const char * new_name)
 {
-  strncpy(data->id, new_id, sizeof(data->id));
+  strncpy(data->name, new_name, sizeof(data->name));
 }
 
 /** Get x value.
@@ -1547,20 +1547,20 @@ NavGraphGeneratorInterface::AddPointOfInterestMessage::clone() const
 
 
 /** Constructor with initial values.
- * @param ini_id initial value for id
+ * @param ini_name initial value for name
  * @param ini_x initial value for x
  * @param ini_y initial value for y
  * @param ini_ori initial value for ori
  * @param ini_mode initial value for mode
  */
-NavGraphGeneratorInterface::AddPointOfInterestWithOriMessage::AddPointOfInterestWithOriMessage(const char * ini_id, const float ini_x, const float ini_y, const float ini_ori, const ConnectionMode ini_mode) : Message("AddPointOfInterestWithOriMessage")
+NavGraphGeneratorInterface::AddPointOfInterestWithOriMessage::AddPointOfInterestWithOriMessage(const char * ini_name, const float ini_x, const float ini_y, const float ini_ori, const ConnectionMode ini_mode) : Message("AddPointOfInterestWithOriMessage")
 {
   data_size = sizeof(AddPointOfInterestWithOriMessage_data_t);
   data_ptr  = malloc(data_size);
   memset(data_ptr, 0, data_size);
   data      = (AddPointOfInterestWithOriMessage_data_t *)data_ptr;
   data_ts   = (message_data_ts_t *)data_ptr;
-  strncpy(data->id, ini_id, 64);
+  strncpy(data->name, ini_name, 64);
   data->x = ini_x;
   data->y = ini_y;
   data->ori = ini_ori;
@@ -1576,7 +1576,7 @@ NavGraphGeneratorInterface::AddPointOfInterestWithOriMessage::AddPointOfInterest
   enum_map_EdgeMode[(int)NO_INTERSECTION] = "NO_INTERSECTION";
   enum_map_EdgeMode[(int)SPLIT_INTERSECTION] = "SPLIT_INTERSECTION";
   enum_map_EdgeMode[(int)FORCE] = "FORCE";
-  add_fieldinfo(IFT_STRING, "id", 64, data->id);
+  add_fieldinfo(IFT_STRING, "name", 64, data->name);
   add_fieldinfo(IFT_FLOAT, "x", 1, &data->x);
   add_fieldinfo(IFT_FLOAT, "y", 1, &data->y);
   add_fieldinfo(IFT_FLOAT, "ori", 1, &data->ori);
@@ -1601,7 +1601,7 @@ NavGraphGeneratorInterface::AddPointOfInterestWithOriMessage::AddPointOfInterest
   enum_map_EdgeMode[(int)NO_INTERSECTION] = "NO_INTERSECTION";
   enum_map_EdgeMode[(int)SPLIT_INTERSECTION] = "SPLIT_INTERSECTION";
   enum_map_EdgeMode[(int)FORCE] = "FORCE";
-  add_fieldinfo(IFT_STRING, "id", 64, data->id);
+  add_fieldinfo(IFT_STRING, "name", 64, data->name);
   add_fieldinfo(IFT_FLOAT, "x", 1, &data->x);
   add_fieldinfo(IFT_FLOAT, "y", 1, &data->y);
   add_fieldinfo(IFT_FLOAT, "ori", 1, &data->ori);
@@ -1627,38 +1627,38 @@ NavGraphGeneratorInterface::AddPointOfInterestWithOriMessage::AddPointOfInterest
 }
 
 /* Methods */
-/** Get id value.
+/** Get name value.
  * 
       ID of the obstacle. Can later be used to remove it again.
     
- * @return id value
+ * @return name value
  */
 char *
-NavGraphGeneratorInterface::AddPointOfInterestWithOriMessage::id() const
+NavGraphGeneratorInterface::AddPointOfInterestWithOriMessage::name() const
 {
-  return data->id;
+  return data->name;
 }
 
-/** Get maximum length of id value.
- * @return length of id value, can be length of the array or number of 
+/** Get maximum length of name value.
+ * @return length of name value, can be length of the array or number of 
  * maximum number of characters for a string
  */
 size_t
-NavGraphGeneratorInterface::AddPointOfInterestWithOriMessage::maxlenof_id() const
+NavGraphGeneratorInterface::AddPointOfInterestWithOriMessage::maxlenof_name() const
 {
   return 64;
 }
 
-/** Set id value.
+/** Set name value.
  * 
       ID of the obstacle. Can later be used to remove it again.
     
- * @param new_id new id value
+ * @param new_name new name value
  */
 void
-NavGraphGeneratorInterface::AddPointOfInterestWithOriMessage::set_id(const char * new_id)
+NavGraphGeneratorInterface::AddPointOfInterestWithOriMessage::set_name(const char * new_name)
 {
-  strncpy(data->id, new_id, sizeof(data->id));
+  strncpy(data->name, new_name, sizeof(data->name));
 }
 
 /** Get x value.
@@ -1803,18 +1803,18 @@ NavGraphGeneratorInterface::AddPointOfInterestWithOriMessage::clone() const
 
 
 /** Constructor with initial values.
- * @param ini_id initial value for id
+ * @param ini_name initial value for name
  * @param ini_property_name initial value for property_name
  * @param ini_property_value initial value for property_value
  */
-NavGraphGeneratorInterface::SetPointOfInterestPropertyMessage::SetPointOfInterestPropertyMessage(const char * ini_id, const char * ini_property_name, const char * ini_property_value) : Message("SetPointOfInterestPropertyMessage")
+NavGraphGeneratorInterface::SetPointOfInterestPropertyMessage::SetPointOfInterestPropertyMessage(const char * ini_name, const char * ini_property_name, const char * ini_property_value) : Message("SetPointOfInterestPropertyMessage")
 {
   data_size = sizeof(SetPointOfInterestPropertyMessage_data_t);
   data_ptr  = malloc(data_size);
   memset(data_ptr, 0, data_size);
   data      = (SetPointOfInterestPropertyMessage_data_t *)data_ptr;
   data_ts   = (message_data_ts_t *)data_ptr;
-  strncpy(data->id, ini_id, 64);
+  strncpy(data->name, ini_name, 64);
   strncpy(data->property_name, ini_property_name, 64);
   strncpy(data->property_value, ini_property_value, 1024);
   enum_map_ConnectionMode[(int)NOT_CONNECTED] = "NOT_CONNECTED";
@@ -1828,7 +1828,7 @@ NavGraphGeneratorInterface::SetPointOfInterestPropertyMessage::SetPointOfInteres
   enum_map_EdgeMode[(int)NO_INTERSECTION] = "NO_INTERSECTION";
   enum_map_EdgeMode[(int)SPLIT_INTERSECTION] = "SPLIT_INTERSECTION";
   enum_map_EdgeMode[(int)FORCE] = "FORCE";
-  add_fieldinfo(IFT_STRING, "id", 64, data->id);
+  add_fieldinfo(IFT_STRING, "name", 64, data->name);
   add_fieldinfo(IFT_STRING, "property_name", 64, data->property_name);
   add_fieldinfo(IFT_STRING, "property_value", 1024, data->property_value);
 }
@@ -1851,7 +1851,7 @@ NavGraphGeneratorInterface::SetPointOfInterestPropertyMessage::SetPointOfInteres
   enum_map_EdgeMode[(int)NO_INTERSECTION] = "NO_INTERSECTION";
   enum_map_EdgeMode[(int)SPLIT_INTERSECTION] = "SPLIT_INTERSECTION";
   enum_map_EdgeMode[(int)FORCE] = "FORCE";
-  add_fieldinfo(IFT_STRING, "id", 64, data->id);
+  add_fieldinfo(IFT_STRING, "name", 64, data->name);
   add_fieldinfo(IFT_STRING, "property_name", 64, data->property_name);
   add_fieldinfo(IFT_STRING, "property_value", 1024, data->property_value);
 }
@@ -1875,38 +1875,38 @@ NavGraphGeneratorInterface::SetPointOfInterestPropertyMessage::SetPointOfInteres
 }
 
 /* Methods */
-/** Get id value.
+/** Get name value.
  * 
       ID of the point of interest.
     
- * @return id value
+ * @return name value
  */
 char *
-NavGraphGeneratorInterface::SetPointOfInterestPropertyMessage::id() const
+NavGraphGeneratorInterface::SetPointOfInterestPropertyMessage::name() const
 {
-  return data->id;
+  return data->name;
 }
 
-/** Get maximum length of id value.
- * @return length of id value, can be length of the array or number of 
+/** Get maximum length of name value.
+ * @return length of name value, can be length of the array or number of 
  * maximum number of characters for a string
  */
 size_t
-NavGraphGeneratorInterface::SetPointOfInterestPropertyMessage::maxlenof_id() const
+NavGraphGeneratorInterface::SetPointOfInterestPropertyMessage::maxlenof_name() const
 {
   return 64;
 }
 
-/** Set id value.
+/** Set name value.
  * 
       ID of the point of interest.
     
- * @param new_id new id value
+ * @param new_name new name value
  */
 void
-NavGraphGeneratorInterface::SetPointOfInterestPropertyMessage::set_id(const char * new_id)
+NavGraphGeneratorInterface::SetPointOfInterestPropertyMessage::set_name(const char * new_name)
 {
-  strncpy(data->id, new_id, sizeof(data->id));
+  strncpy(data->name, new_name, sizeof(data->name));
 }
 
 /** Get property_name value.
@@ -2471,16 +2471,16 @@ NavGraphGeneratorInterface::SetCopyGraphDefaultPropertiesMessage::clone() const
 
 
 /** Constructor with initial values.
- * @param ini_id initial value for id
+ * @param ini_name initial value for name
  */
-NavGraphGeneratorInterface::RemovePointOfInterestMessage::RemovePointOfInterestMessage(const char * ini_id) : Message("RemovePointOfInterestMessage")
+NavGraphGeneratorInterface::RemovePointOfInterestMessage::RemovePointOfInterestMessage(const char * ini_name) : Message("RemovePointOfInterestMessage")
 {
   data_size = sizeof(RemovePointOfInterestMessage_data_t);
   data_ptr  = malloc(data_size);
   memset(data_ptr, 0, data_size);
   data      = (RemovePointOfInterestMessage_data_t *)data_ptr;
   data_ts   = (message_data_ts_t *)data_ptr;
-  strncpy(data->id, ini_id, 64);
+  strncpy(data->name, ini_name, 64);
   enum_map_ConnectionMode[(int)NOT_CONNECTED] = "NOT_CONNECTED";
   enum_map_ConnectionMode[(int)UNCONNECTED] = "UNCONNECTED";
   enum_map_ConnectionMode[(int)CLOSEST_NODE] = "CLOSEST_NODE";
@@ -2492,7 +2492,7 @@ NavGraphGeneratorInterface::RemovePointOfInterestMessage::RemovePointOfInterestM
   enum_map_EdgeMode[(int)NO_INTERSECTION] = "NO_INTERSECTION";
   enum_map_EdgeMode[(int)SPLIT_INTERSECTION] = "SPLIT_INTERSECTION";
   enum_map_EdgeMode[(int)FORCE] = "FORCE";
-  add_fieldinfo(IFT_STRING, "id", 64, data->id);
+  add_fieldinfo(IFT_STRING, "name", 64, data->name);
 }
 /** Constructor */
 NavGraphGeneratorInterface::RemovePointOfInterestMessage::RemovePointOfInterestMessage() : Message("RemovePointOfInterestMessage")
@@ -2513,7 +2513,7 @@ NavGraphGeneratorInterface::RemovePointOfInterestMessage::RemovePointOfInterestM
   enum_map_EdgeMode[(int)NO_INTERSECTION] = "NO_INTERSECTION";
   enum_map_EdgeMode[(int)SPLIT_INTERSECTION] = "SPLIT_INTERSECTION";
   enum_map_EdgeMode[(int)FORCE] = "FORCE";
-  add_fieldinfo(IFT_STRING, "id", 64, data->id);
+  add_fieldinfo(IFT_STRING, "name", 64, data->name);
 }
 
 /** Destructor */
@@ -2535,38 +2535,38 @@ NavGraphGeneratorInterface::RemovePointOfInterestMessage::RemovePointOfInterestM
 }
 
 /* Methods */
-/** Get id value.
+/** Get name value.
  * 
       ID of the obstacle to remove.
     
- * @return id value
+ * @return name value
  */
 char *
-NavGraphGeneratorInterface::RemovePointOfInterestMessage::id() const
+NavGraphGeneratorInterface::RemovePointOfInterestMessage::name() const
 {
-  return data->id;
+  return data->name;
 }
 
-/** Get maximum length of id value.
- * @return length of id value, can be length of the array or number of 
+/** Get maximum length of name value.
+ * @return length of name value, can be length of the array or number of 
  * maximum number of characters for a string
  */
 size_t
-NavGraphGeneratorInterface::RemovePointOfInterestMessage::maxlenof_id() const
+NavGraphGeneratorInterface::RemovePointOfInterestMessage::maxlenof_name() const
 {
   return 64;
 }
 
-/** Set id value.
+/** Set name value.
  * 
       ID of the obstacle to remove.
     
- * @param new_id new id value
+ * @param new_name new name value
  */
 void
-NavGraphGeneratorInterface::RemovePointOfInterestMessage::set_id(const char * new_id)
+NavGraphGeneratorInterface::RemovePointOfInterestMessage::set_name(const char * new_name)
 {
-  strncpy(data->id, new_id, sizeof(data->id));
+  strncpy(data->name, new_name, sizeof(data->name));
 }
 
 /** Clone this message.
diff --git a/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.h_ext b/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.h_ext
index 3f2c668..3d8e428 100644
--- a/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.h_ext
+++ b/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.h_ext
@@ -332,7 +332,7 @@ class NavGraphGeneratorInterface : public Interface
     typedef struct {
       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
-      char id[64]; /**< 
+      char name[64]; /**< 
       ID of the obstacle. Can later be used to remove it again.
      */
       float x; /**< X coordinate of obstacle in global frame. */
@@ -346,15 +346,15 @@ class NavGraphGeneratorInterface : public Interface
   interface_enum_map_t enum_map_FilterType;
   interface_enum_map_t enum_map_EdgeMode;
    public:
-    AddObstacleMessage(const char * ini_id, const float ini_x, const float ini_y);
+    AddObstacleMessage(const char * ini_name, const float ini_x, const float ini_y);
     AddObstacleMessage();
     ~AddObstacleMessage();
 
     AddObstacleMessage(const AddObstacleMessage *m);
     /* Methods */
-    char * id() const;
-    void set_id(const char * new_id);
-    size_t maxlenof_id() const;
+    char * name() const;
+    void set_name(const char * new_name);
+    size_t maxlenof_name() const;
     float x() const;
     void set_x(const float new_x);
     size_t maxlenof_x() const;
@@ -372,7 +372,7 @@ class NavGraphGeneratorInterface : public Interface
     typedef struct {
       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
-      char id[64]; /**< 
+      char name[64]; /**< 
       ID of the obstacle to remove.
      */
     } RemoveObstacleMessage_data_t;
@@ -384,15 +384,15 @@ class NavGraphGeneratorInterface : public Interface
   interface_enum_map_t enum_map_FilterType;
   interface_enum_map_t enum_map_EdgeMode;
    public:
-    RemoveObstacleMessage(const char * ini_id);
+    RemoveObstacleMessage(const char * ini_name);
     RemoveObstacleMessage();
     ~RemoveObstacleMessage();
 
     RemoveObstacleMessage(const RemoveObstacleMessage *m);
     /* Methods */
-    char * id() const;
-    void set_id(const char * new_id);
-    size_t maxlenof_id() const;
+    char * name() const;
+    void set_name(const char * new_name);
+    size_t maxlenof_name() const;
     virtual Message * clone() const;
   };
 
@@ -404,7 +404,7 @@ class NavGraphGeneratorInterface : public Interface
     typedef struct {
       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
-      char id[64]; /**< 
+      char name[64]; /**< 
       ID of the obstacle. Can later be used to remove it again.
      */
       float x; /**< X coordinate of obstacle in global frame. */
@@ -421,15 +421,15 @@ class NavGraphGeneratorInterface : public Interface
   interface_enum_map_t enum_map_FilterType;
   interface_enum_map_t enum_map_EdgeMode;
    public:
-    AddPointOfInterestMessage(const char * ini_id, const float ini_x, const float ini_y, const ConnectionMode ini_mode);
+    AddPointOfInterestMessage(const char * ini_name, const float ini_x, const float ini_y, const ConnectionMode ini_mode);
     AddPointOfInterestMessage();
     ~AddPointOfInterestMessage();
 
     AddPointOfInterestMessage(const AddPointOfInterestMessage *m);
     /* Methods */
-    char * id() const;
-    void set_id(const char * new_id);
-    size_t maxlenof_id() const;
+    char * name() const;
+    void set_name(const char * new_name);
+    size_t maxlenof_name() const;
     float x() const;
     void set_x(const float new_x);
     size_t maxlenof_x() const;
@@ -450,7 +450,7 @@ class NavGraphGeneratorInterface : public Interface
     typedef struct {
       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
-      char id[64]; /**< 
+      char name[64]; /**< 
       ID of the obstacle. Can later be used to remove it again.
      */
       float x; /**< X coordinate of obstacle in global frame. */
@@ -468,15 +468,15 @@ class NavGraphGeneratorInterface : public Interface
   interface_enum_map_t enum_map_FilterType;
   interface_enum_map_t enum_map_EdgeMode;
    public:
-    AddPointOfInterestWithOriMessage(const char * ini_id, const float ini_x, const float ini_y, const float ini_ori, const ConnectionMode ini_mode);
+    AddPointOfInterestWithOriMessage(const char * ini_name, const float ini_x, const float ini_y, const float ini_ori, const ConnectionMode ini_mode);
     AddPointOfInterestWithOriMessage();
     ~AddPointOfInterestWithOriMessage();
 
     AddPointOfInterestWithOriMessage(const AddPointOfInterestWithOriMessage *m);
     /* Methods */
-    char * id() const;
-    void set_id(const char * new_id);
-    size_t maxlenof_id() const;
+    char * name() const;
+    void set_name(const char * new_name);
+    size_t maxlenof_name() const;
     float x() const;
     void set_x(const float new_x);
     size_t maxlenof_x() const;
@@ -500,7 +500,7 @@ class NavGraphGeneratorInterface : public Interface
     typedef struct {
       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
-      char id[64]; /**< 
+      char name[64]; /**< 
       ID of the point of interest.
      */
       char property_name[64]; /**< Name of the property to set. */
@@ -515,15 +515,15 @@ class NavGraphGeneratorInterface : public Interface
   interface_enum_map_t enum_map_FilterType;
   interface_enum_map_t enum_map_EdgeMode;
    public:
-    SetPointOfInterestPropertyMessage(const char * ini_id, const char * ini_property_name, const char * ini_property_value);
+    SetPointOfInterestPropertyMessage(const char * ini_name, const char * ini_property_name, const char * ini_property_value);
     SetPointOfInterestPropertyMessage();
     ~SetPointOfInterestPropertyMessage();
 
     SetPointOfInterestPropertyMessage(const SetPointOfInterestPropertyMessage *m);
     /* Methods */
-    char * id() const;
-    void set_id(const char * new_id);
-    size_t maxlenof_id() const;
+    char * name() const;
+    void set_name(const char * new_name);
+    size_t maxlenof_name() const;
     char * property_name() const;
     void set_property_name(const char * new_property_name);
     size_t maxlenof_property_name() const;
@@ -652,7 +652,7 @@ class NavGraphGeneratorInterface : public Interface
     typedef struct {
       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
-      char id[64]; /**< 
+      char name[64]; /**< 
       ID of the obstacle to remove.
      */
     } RemovePointOfInterestMessage_data_t;
@@ -664,15 +664,15 @@ class NavGraphGeneratorInterface : public Interface
   interface_enum_map_t enum_map_FilterType;
   interface_enum_map_t enum_map_EdgeMode;
    public:
-    RemovePointOfInterestMessage(const char * ini_id);
+    RemovePointOfInterestMessage(const char * ini_name);
     RemovePointOfInterestMessage();
     ~RemovePointOfInterestMessage();
 
     RemovePointOfInterestMessage(const RemovePointOfInterestMessage *m);
     /* Methods */
-    char * id() const;
-    void set_id(const char * new_id);
-    size_t maxlenof_id() const;
+    char * name() const;
+    void set_name(const char * new_name);
+    size_t maxlenof_name() const;
     virtual Message * clone() const;
   };
 
diff --git a/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.tolua b/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.tolua
index b6ed1c7..7d7dcea 100644
--- a/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.tolua
+++ b/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.tolua
@@ -31,6 +31,23 @@ class NavGraphGeneratorInterface : public Interface
     ClearMessage();
     ~ClearMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class SetBoundingBoxMessage : public Message
@@ -39,6 +56,23 @@ class NavGraphGeneratorInterface : public Interface
     SetBoundingBoxMessage();
     ~SetBoundingBoxMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float p1_x();
     void set_p1_x(const float new_p1_x);
     int maxlenof_p1_x() const;
@@ -59,6 +93,23 @@ class NavGraphGeneratorInterface : public Interface
     SetFilterMessage();
     ~SetFilterMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     FilterType filter();
     void set_filter(const FilterType new_filter);
     int maxlenof_filter() const;
@@ -73,6 +124,23 @@ class NavGraphGeneratorInterface : public Interface
     SetFilterParamFloatMessage();
     ~SetFilterParamFloatMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     FilterType filter();
     void set_filter(const FilterType new_filter);
     int maxlenof_filter() const;
@@ -90,6 +158,23 @@ class NavGraphGeneratorInterface : public Interface
     AddMapObstaclesMessage();
     ~AddMapObstaclesMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float max_line_point_distance();
     void set_max_line_point_distance(const float new_max_line_point_distance);
     int maxlenof_max_line_point_distance() const;
@@ -97,13 +182,30 @@ class NavGraphGeneratorInterface : public Interface
 
   class AddObstacleMessage : public Message
   {
-    AddObstacleMessage(char * ini_id, float ini_x, float ini_y);
+    AddObstacleMessage(char * ini_name, float ini_x, float ini_y);
     AddObstacleMessage();
     ~AddObstacleMessage();
 
-    char * id();
-    void set_id(const char * new_id);
-    int maxlenof_id() const;
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
+    char * name();
+    void set_name(const char * new_name);
+    int maxlenof_name() const;
     float x();
     void set_x(const float new_x);
     int maxlenof_x() const;
@@ -114,24 +216,58 @@ class NavGraphGeneratorInterface : public Interface
 
   class RemoveObstacleMessage : public Message
   {
-    RemoveObstacleMessage(char * ini_id);
+    RemoveObstacleMessage(char * ini_name);
     RemoveObstacleMessage();
     ~RemoveObstacleMessage();
 
-    char * id();
-    void set_id(const char * new_id);
-    int maxlenof_id() const;
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
+    char * name();
+    void set_name(const char * new_name);
+    int maxlenof_name() const;
   };
 
   class AddPointOfInterestMessage : public Message
   {
-    AddPointOfInterestMessage(char * ini_id, float ini_x, float ini_y, ConnectionMode ini_mode);
+    AddPointOfInterestMessage(char * ini_name, float ini_x, float ini_y, ConnectionMode ini_mode);
     AddPointOfInterestMessage();
     ~AddPointOfInterestMessage();
 
-    char * id();
-    void set_id(const char * new_id);
-    int maxlenof_id() const;
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
+    char * name();
+    void set_name(const char * new_name);
+    int maxlenof_name() const;
     float x();
     void set_x(const float new_x);
     int maxlenof_x() const;
@@ -145,13 +281,30 @@ class NavGraphGeneratorInterface : public Interface
 
   class AddPointOfInterestWithOriMessage : public Message
   {
-    AddPointOfInterestWithOriMessage(char * ini_id, float ini_x, float ini_y, float ini_ori, ConnectionMode ini_mode);
+    AddPointOfInterestWithOriMessage(char * ini_name, float ini_x, float ini_y, float ini_ori, ConnectionMode ini_mode);
     AddPointOfInterestWithOriMessage();
     ~AddPointOfInterestWithOriMessage();
 
-    char * id();
-    void set_id(const char * new_id);
-    int maxlenof_id() const;
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
+    char * name();
+    void set_name(const char * new_name);
+    int maxlenof_name() const;
     float x();
     void set_x(const float new_x);
     int maxlenof_x() const;
@@ -168,13 +321,30 @@ class NavGraphGeneratorInterface : public Interface
 
   class SetPointOfInterestPropertyMessage : public Message
   {
-    SetPointOfInterestPropertyMessage(char * ini_id, char * ini_property_name, char * ini_property_value);
+    SetPointOfInterestPropertyMessage(char * ini_name, char * ini_property_name, char * ini_property_value);
     SetPointOfInterestPropertyMessage();
     ~SetPointOfInterestPropertyMessage();
 
-    char * id();
-    void set_id(const char * new_id);
-    int maxlenof_id() const;
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
+    char * name();
+    void set_name(const char * new_name);
+    int maxlenof_name() const;
     char * property_name();
     void set_property_name(const char * new_property_name);
     int maxlenof_property_name() const;
@@ -189,6 +359,23 @@ class NavGraphGeneratorInterface : public Interface
     AddEdgeMessage();
     ~AddEdgeMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * p1();
     void set_p1(const char * new_p1);
     int maxlenof_p1() const;
@@ -209,6 +396,23 @@ class NavGraphGeneratorInterface : public Interface
     SetGraphDefaultPropertyMessage();
     ~SetGraphDefaultPropertyMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * property_name();
     void set_property_name(const char * new_property_name);
     int maxlenof_property_name() const;
@@ -223,6 +427,23 @@ class NavGraphGeneratorInterface : public Interface
     SetCopyGraphDefaultPropertiesMessage();
     ~SetCopyGraphDefaultPropertiesMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     bool is_enable_copy();
     void set_enable_copy(const bool new_enable_copy);
     int maxlenof_enable_copy() const;
@@ -230,13 +451,30 @@ class NavGraphGeneratorInterface : public Interface
 
   class RemovePointOfInterestMessage : public Message
   {
-    RemovePointOfInterestMessage(char * ini_id);
+    RemovePointOfInterestMessage(char * ini_name);
     RemovePointOfInterestMessage();
     ~RemovePointOfInterestMessage();
 
-    char * id();
-    void set_id(const char * new_id);
-    int maxlenof_id() const;
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
+    char * name();
+    void set_name(const char * new_name);
+    int maxlenof_name() const;
   };
 
   class ComputeMessage : public Message
@@ -244,6 +482,23 @@ class NavGraphGeneratorInterface : public Interface
     ComputeMessage();
     ~ComputeMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   unsigned int msgid();
@@ -266,7 +521,7 @@ class NavGraphGeneratorInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -285,10 +540,23 @@ class NavGraphGeneratorInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.NavGraphGeneratorInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.NavGraphGeneratorInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.NavGraphGeneratorInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }
diff --git a/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.xml b/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.xml
index 84310e9..4181995 100644
--- a/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.xml
+++ b/src/plugins/navgraph-generator/interfaces/NavGraphGeneratorInterface.xml
@@ -158,7 +158,7 @@
       given as a centroid in X-Y ground-support plane of global frame,
       typical /map frame.
     </comment>
-    <field type="string" name="id" length="64">
+    <field type="string" name="name" length="64">
       ID of the obstacle. Can later be used to remove it again.
     </field>
     <field type="float" name="x">X coordinate of obstacle in global frame.</field>
@@ -166,7 +166,7 @@
   </message>
   <message name="RemoveObstacle">
     <comment></comment>
-    <field type="string" name="id" length="64">
+    <field type="string" name="name" length="64">
       ID of the obstacle to remove.
     </field>    
   </message>
@@ -176,7 +176,7 @@
       given as a centroid in X-Y ground-support plane of global frame,
       typical /map frame.
     </comment>
-    <field type="string" name="id" length="64">
+    <field type="string" name="name" length="64">
       ID of the obstacle. Can later be used to remove it again.
     </field>
     <field type="float" name="x">X coordinate of obstacle in global frame.</field>
@@ -192,7 +192,7 @@
       typical /map frame. This form also accepts a desired target
       orientation for the point.
     </comment>
-    <field type="string" name="id" length="64">
+    <field type="string" name="name" length="64">
       ID of the obstacle. Can later be used to remove it again.
     </field>
     <field type="float" name="x">X coordinate of obstacle in global frame.</field>
@@ -206,7 +206,7 @@
     <comment>
       Set a property for an already added point of interest.
     </comment>
-    <field type="string" name="id" length="64">
+    <field type="string" name="name" length="64">
       ID of the point of interest.
     </field>
     <field type="string" name="property_name" length="64">Name of the property to set.</field>
@@ -246,7 +246,7 @@
   </message>
   <message name="RemovePointOfInterest">
     <comment>Remove a specific point of interest.</comment>
-    <field type="string" name="id" length="64">
+    <field type="string" name="name" length="64">
       ID of the obstacle to remove.
     </field>    
   </message>
diff --git a/src/plugins/navgraph-generator/navgraph_generator_thread.cpp b/src/plugins/navgraph-generator/navgraph_generator_thread.cpp
index 00c0e12..08f2261 100644
--- a/src/plugins/navgraph-generator/navgraph_generator_thread.cpp
+++ b/src/plugins/navgraph-generator/navgraph_generator_thread.cpp
@@ -348,7 +348,7 @@ NavGraphGeneratorThread::bb_interface_message_received(Interface *interface,
     NavGraphGeneratorInterface::AddObstacleMessage *msg =
       message->as_type<NavGraphGeneratorInterface::AddObstacleMessage>();
     if (std::isfinite(msg->x()) && std::isfinite(msg->x())) {
-      obstacles_[msg->id()] = cart_coord_2d_t(msg->x(), msg->y());
+      obstacles_[msg->name()] = cart_coord_2d_t(msg->x(), msg->y());
     } else {
       logger->log_error(name(), "Received non-finite obstacle (%.2f,%.2f), ignoring",
 			msg->x(), msg->y());
@@ -357,7 +357,7 @@ NavGraphGeneratorThread::bb_interface_message_received(Interface *interface,
     NavGraphGeneratorInterface::RemoveObstacleMessage *msg =
       message->as_type<NavGraphGeneratorInterface::RemoveObstacleMessage>();
     ObstacleMap::iterator f;
-    if ((f = obstacles_.find(msg->id())) != obstacles_.end()) {
+    if ((f = obstacles_.find(msg->name())) != obstacles_.end()) {
       obstacles_.erase(f);
     }
 
@@ -368,7 +368,7 @@ NavGraphGeneratorThread::bb_interface_message_received(Interface *interface,
       PointOfInterest poi;
       poi.position  = cart_coord_2d_t(msg->x(), msg->y());
       poi.conn_mode = msg->mode();
-      pois_[msg->id()] = poi;
+      pois_[msg->name()] = poi;
     } else {
       logger->log_error(name(), "Received non-finite POI (%.2f,%.2f), ignoring",
 			msg->x(), msg->y());
@@ -398,7 +398,7 @@ NavGraphGeneratorThread::bb_interface_message_received(Interface *interface,
 	logger->log_warn(name(), "Received POI with non-finite ori %f, ignoring ori",
 			 msg->ori());
       }
-      pois_[msg->id()] = poi;
+      pois_[msg->name()] = poi;
     } else {
       logger->log_error(name(), "Received non-finite POI (%.2f,%.2f), ignoring ori",
 			msg->x(), msg->y());
@@ -408,7 +408,7 @@ NavGraphGeneratorThread::bb_interface_message_received(Interface *interface,
     NavGraphGeneratorInterface::RemovePointOfInterestMessage *msg =
       message->as_type<NavGraphGeneratorInterface::RemovePointOfInterestMessage>();
     PoiMap::iterator f;
-    if ((f = pois_.find(msg->id())) != pois_.end()) {
+    if ((f = pois_.find(msg->name())) != pois_.end()) {
       pois_.erase(f);
     }
 
@@ -416,11 +416,11 @@ NavGraphGeneratorThread::bb_interface_message_received(Interface *interface,
     NavGraphGeneratorInterface::SetPointOfInterestPropertyMessage *msg =
       message->as_type<NavGraphGeneratorInterface::SetPointOfInterestPropertyMessage>();
     PoiMap::iterator f;
-    if ((f = pois_.find(msg->id())) != pois_.end()) {
+    if ((f = pois_.find(msg->name())) != pois_.end()) {
       f->second.properties[msg->property_name()] = msg->property_value();
     } else {
       logger->log_warn(name(), "POI %s unknown, cannot set property %s=%s",
-		       msg->id(), msg->property_name(), msg->property_value());
+		       msg->name(), msg->property_name(), msg->property_value());
     }
 
   } else if (message->is_of_type<NavGraphGeneratorInterface::SetGraphDefaultPropertyMessage>()) {

- *commit* d8a31299cc630023462d46c70f898e7251841089 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 14 23:14:35 2016 +0100
Subject: openni: re-generate interfaces with new ffifacegen

 .../HumanSkeletonProjectionInterface.tolua         |   17 +++++++++++++++--
 1 files changed, 15 insertions(+), 2 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/openni/interfaces/HumanSkeletonProjectionInterface.tolua b/src/plugins/openni/interfaces/HumanSkeletonProjectionInterface.tolua
index 7aa2ec1..5539778 100644
--- a/src/plugins/openni/interfaces/HumanSkeletonProjectionInterface.tolua
+++ b/src/plugins/openni/interfaces/HumanSkeletonProjectionInterface.tolua
@@ -110,7 +110,7 @@ class HumanSkeletonProjectionInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -129,10 +129,23 @@ class HumanSkeletonProjectionInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.HumanSkeletonProjectionInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.HumanSkeletonProjectionInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.HumanSkeletonProjectionInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }

- *commit* 1bd585a4325d13674d9338da493d8848885cb273 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 14 23:14:35 2016 +0100
Subject: openrave: re-generate interfaces with new ffifacegen

 .../openrave/interfaces/OpenRaveInterface.tolua    |  204 +++++++++++++++++++-
 1 files changed, 202 insertions(+), 2 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/openrave/interfaces/OpenRaveInterface.tolua b/src/plugins/openrave/interfaces/OpenRaveInterface.tolua
index e0104cc..e0667dd 100644
--- a/src/plugins/openrave/interfaces/OpenRaveInterface.tolua
+++ b/src/plugins/openrave/interfaces/OpenRaveInterface.tolua
@@ -11,6 +11,23 @@ class OpenRaveInterface : public Interface
     StartViewerMessage();
     ~StartViewerMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class AddObjectMessage : public Message
@@ -19,6 +36,23 @@ class OpenRaveInterface : public Interface
     AddObjectMessage();
     ~AddObjectMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * name();
     void set_name(const char * new_name);
     int maxlenof_name() const;
@@ -33,6 +67,23 @@ class OpenRaveInterface : public Interface
     DeleteObjectMessage();
     ~DeleteObjectMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * name();
     void set_name(const char * new_name);
     int maxlenof_name() const;
@@ -43,6 +94,23 @@ class OpenRaveInterface : public Interface
     DeleteAllObjectsMessage();
     ~DeleteAllObjectsMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class AttachObjectMessage : public Message
@@ -51,6 +119,23 @@ class OpenRaveInterface : public Interface
     AttachObjectMessage();
     ~AttachObjectMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * name();
     void set_name(const char * new_name);
     int maxlenof_name() const;
@@ -65,6 +150,23 @@ class OpenRaveInterface : public Interface
     ReleaseObjectMessage();
     ~ReleaseObjectMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * name();
     void set_name(const char * new_name);
     int maxlenof_name() const;
@@ -75,6 +177,23 @@ class OpenRaveInterface : public Interface
     ReleaseAllObjectsMessage();
     ~ReleaseAllObjectsMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class MoveObjectMessage : public Message
@@ -83,6 +202,23 @@ class OpenRaveInterface : public Interface
     MoveObjectMessage();
     ~MoveObjectMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * name();
     void set_name(const char * new_name);
     int maxlenof_name() const;
@@ -103,6 +239,23 @@ class OpenRaveInterface : public Interface
     RotateObjectQuatMessage();
     ~RotateObjectQuatMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * name();
     void set_name(const char * new_name);
     int maxlenof_name() const;
@@ -126,6 +279,23 @@ class OpenRaveInterface : public Interface
     RotateObjectMessage();
     ~RotateObjectMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * name();
     void set_name(const char * new_name);
     int maxlenof_name() const;
@@ -146,6 +316,23 @@ class OpenRaveInterface : public Interface
     RenameObjectMessage();
     ~RenameObjectMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * name();
     void set_name(const char * new_name);
     int maxlenof_name() const;
@@ -180,7 +367,7 @@ class OpenRaveInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -199,10 +386,23 @@ class OpenRaveInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.OpenRaveInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.OpenRaveInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.OpenRaveInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }

- *commit* 70b8a87ba5f994c22bc624d5dd99f611ba317f60 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 14 23:14:35 2016 +0100
Subject: pantilt: re-generate interfaces with new ffifacegen

 .../pantilt/interfaces/PanTiltInterface.tolua      |  170 +++++++++++++++++++-
 1 files changed, 168 insertions(+), 2 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/pantilt/interfaces/PanTiltInterface.tolua b/src/plugins/pantilt/interfaces/PanTiltInterface.tolua
index 7093c5a..3a4a214 100644
--- a/src/plugins/pantilt/interfaces/PanTiltInterface.tolua
+++ b/src/plugins/pantilt/interfaces/PanTiltInterface.tolua
@@ -18,6 +18,23 @@ class PanTiltInterface : public Interface
     StopMessage();
     ~StopMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class FlushMessage : public Message
@@ -25,6 +42,23 @@ class PanTiltInterface : public Interface
     FlushMessage();
     ~FlushMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class CalibrateMessage : public Message
@@ -32,6 +66,23 @@ class PanTiltInterface : public Interface
     CalibrateMessage();
     ~CalibrateMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class ParkMessage : public Message
@@ -39,6 +90,23 @@ class PanTiltInterface : public Interface
     ParkMessage();
     ~ParkMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class GotoMessage : public Message
@@ -47,6 +115,23 @@ class PanTiltInterface : public Interface
     GotoMessage();
     ~GotoMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float pan();
     void set_pan(const float new_pan);
     int maxlenof_pan() const;
@@ -61,6 +146,23 @@ class PanTiltInterface : public Interface
     TimedGotoMessage();
     ~TimedGotoMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float time_sec();
     void set_time_sec(const float new_time_sec);
     int maxlenof_time_sec() const;
@@ -78,6 +180,23 @@ class PanTiltInterface : public Interface
     SetEnabledMessage();
     ~SetEnabledMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     bool is_enabled();
     void set_enabled(const bool new_enabled);
     int maxlenof_enabled() const;
@@ -89,6 +208,23 @@ class PanTiltInterface : public Interface
     SetVelocityMessage();
     ~SetVelocityMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float pan_velocity();
     void set_pan_velocity(const float new_pan_velocity);
     int maxlenof_pan_velocity() const;
@@ -103,6 +239,23 @@ class PanTiltInterface : public Interface
     SetMarginMessage();
     ~SetMarginMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     float pan_margin();
     void set_pan_margin(const float new_pan_margin);
     int maxlenof_pan_margin() const;
@@ -179,7 +332,7 @@ class PanTiltInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -198,10 +351,23 @@ class PanTiltInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.PanTiltInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.PanTiltInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.PanTiltInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }

- *commit* 4edbd1315b79cbfb2a0f4a43e0b896f849f25ac6 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 14 23:16:53 2016 +0100
Subject: pcl-db: re-generate interfaces with new ffifacegen

 .../interfaces/PclDatabaseMergeInterface.tolua     |   34 ++++++++++++++++++-
 .../interfaces/PclDatabaseRetrieveInterface.tolua  |   34 ++++++++++++++++++-
 .../interfaces/PclDatabaseStoreInterface.tolua     |   34 ++++++++++++++++++-
 3 files changed, 96 insertions(+), 6 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/perception/pcl-db/interfaces/PclDatabaseMergeInterface.tolua b/src/plugins/perception/pcl-db/interfaces/PclDatabaseMergeInterface.tolua
index 0bd6be6..ecb0cdb 100644
--- a/src/plugins/perception/pcl-db/interfaces/PclDatabaseMergeInterface.tolua
+++ b/src/plugins/perception/pcl-db/interfaces/PclDatabaseMergeInterface.tolua
@@ -12,6 +12,23 @@ class PclDatabaseMergeInterface : public Interface
     MergeMessage();
     ~MergeMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     long timestamps(int index);
     void set_timestamps(unsigned int index, const long new_timestamps);
     int maxlenof_timestamps() const;
@@ -46,7 +63,7 @@ class PclDatabaseMergeInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -65,10 +82,23 @@ class PclDatabaseMergeInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.PclDatabaseMergeInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.PclDatabaseMergeInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.PclDatabaseMergeInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }
diff --git a/src/plugins/perception/pcl-db/interfaces/PclDatabaseRetrieveInterface.tolua b/src/plugins/perception/pcl-db/interfaces/PclDatabaseRetrieveInterface.tolua
index f9ebf2d..2a2651b 100644
--- a/src/plugins/perception/pcl-db/interfaces/PclDatabaseRetrieveInterface.tolua
+++ b/src/plugins/perception/pcl-db/interfaces/PclDatabaseRetrieveInterface.tolua
@@ -12,6 +12,23 @@ class PclDatabaseRetrieveInterface : public Interface
     RetrieveMessage();
     ~RetrieveMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     long timestamp();
     void set_timestamp(const long new_timestamp);
     int maxlenof_timestamp() const;
@@ -52,7 +69,7 @@ class PclDatabaseRetrieveInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -71,10 +88,23 @@ class PclDatabaseRetrieveInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.PclDatabaseRetrieveInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.PclDatabaseRetrieveInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.PclDatabaseRetrieveInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }
diff --git a/src/plugins/perception/pcl-db/interfaces/PclDatabaseStoreInterface.tolua b/src/plugins/perception/pcl-db/interfaces/PclDatabaseStoreInterface.tolua
index 9f55d2a..ea8e962 100644
--- a/src/plugins/perception/pcl-db/interfaces/PclDatabaseStoreInterface.tolua
+++ b/src/plugins/perception/pcl-db/interfaces/PclDatabaseStoreInterface.tolua
@@ -12,6 +12,23 @@ class PclDatabaseStoreInterface : public Interface
     StoreMessage();
     ~StoreMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     char * pcl_id();
     void set_pcl_id(const char * new_pcl_id);
     int maxlenof_pcl_id() const;
@@ -46,7 +63,7 @@ class PclDatabaseStoreInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -65,10 +82,23 @@ class PclDatabaseStoreInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.PclDatabaseStoreInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.PclDatabaseStoreInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.PclDatabaseStoreInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }

- *commit* e2abb6cddf6bc4c5afcddf86f4439f6ca604f005 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 14 23:14:35 2016 +0100
Subject: robotino: re-generate interfaces with new ffifacegen

 .../interfaces/RobotinoSensorInterface.tolua       |   34 ++++++++++++++++++-
 1 files changed, 32 insertions(+), 2 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/robotino/interfaces/RobotinoSensorInterface.tolua b/src/plugins/robotino/interfaces/RobotinoSensorInterface.tolua
index 639527d..0f1c807 100644
--- a/src/plugins/robotino/interfaces/RobotinoSensorInterface.tolua
+++ b/src/plugins/robotino/interfaces/RobotinoSensorInterface.tolua
@@ -12,6 +12,23 @@ class RobotinoSensorInterface : public Interface
     SetBumperEStopEnabledMessage();
     ~SetBumperEStopEnabledMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     bool is_enabled();
     void set_enabled(const bool new_enabled);
     int maxlenof_enabled() const;
@@ -55,7 +72,7 @@ class RobotinoSensorInterface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -74,10 +91,23 @@ class RobotinoSensorInterface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.RobotinoSensorInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.RobotinoSensorInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.RobotinoSensorInterface.create_message = fawkes.Interface.create_message
+
+$]
+
 }

- *commit* 4efd0a781bf34e908bfcd6cf3753fea174ca2b4c - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 14 23:14:35 2016 +0100
Subject: roomba: re-generate interfaces with new ffifacegen

 src/plugins/roomba/Roomba500Interface.tolua |  119 ++++++++++++++++++++++++++-
 1 files changed, 117 insertions(+), 2 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/roomba/Roomba500Interface.tolua b/src/plugins/roomba/Roomba500Interface.tolua
index fe2b4de..5968b33 100644
--- a/src/plugins/roomba/Roomba500Interface.tolua
+++ b/src/plugins/roomba/Roomba500Interface.tolua
@@ -69,6 +69,23 @@ class Roomba500Interface : public Interface
     StopMessage();
     ~StopMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class DockMessage : public Message
@@ -76,6 +93,23 @@ class Roomba500Interface : public Interface
     DockMessage();
     ~DockMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
   };
 
   class SetModeMessage : public Message
@@ -84,6 +118,23 @@ class Roomba500Interface : public Interface
     SetModeMessage();
     ~SetModeMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     Mode mode();
     void set_mode(const Mode new_mode);
     int maxlenof_mode() const;
@@ -95,6 +146,23 @@ class Roomba500Interface : public Interface
     DriveStraightMessage();
     ~DriveStraightMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     short velocity();
     void set_velocity(const short new_velocity);
     int maxlenof_velocity() const;
@@ -106,6 +174,23 @@ class Roomba500Interface : public Interface
     DriveMessage();
     ~DriveMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     short velocity();
     void set_velocity(const short new_velocity);
     int maxlenof_velocity() const;
@@ -120,6 +205,23 @@ class Roomba500Interface : public Interface
     SetMotorsMessage();
     ~SetMotorsMessage();
 
+    unsigned int      id() const;
+
+    unsigned int      sender_id() const;
+    const char *      sender_thread_name() const;
+    Interface *       interface() const;
+    const char *      type() const;
+
+    const void *      datachunk() const;
+    unsigned int      datasize() const;
+
+    void              set_from_chunk(const void *chunk);
+
+    /* from RefCount */
+    void              ref();
+    void              unref();
+    unsigned int      refcount();
+
     bool is_vacuuming();
     void set_vacuuming(const bool new_vacuuming);
     int maxlenof_vacuuming() const;
@@ -346,7 +448,7 @@ class Roomba500Interface : public Interface
   const char *            hash_printable() const;
   bool                    is_writer() const;
   void                    set_from_chunk(void *chunk);
-  virtual Message *   create_message(const char *type) const = 0;
+  virtual fawkes::Message *  create_message @ create_message_generic(const char *type) const;
   void          read();
   void          write();
   bool          has_writer() const;
@@ -365,10 +467,23 @@ class Roomba500Interface : public Interface
   bool          msgq_try_lock();
   void          msgq_unlock();
   void          msgq_pop();
-  Message *     msgq_first();
+  fawkes::Message * msgq_first @ msgq_first_generic();
   bool          msgq_empty();
 
 
 };
 
+
+$[
+
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
+fawkes.Roomba500Interface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.Roomba500Interface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
+fawkes.Roomba500Interface.create_message = fawkes.Interface.create_message
+
+$]
+
 }

- *commit* ece8ea28533a9c66ccea41dee1ad11d877b6515e - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Wed Jan 20 13:45:50 2016 +0100
Subject: skiller: re-generate interfaces with new ffifacegen

 src/plugins/skiller/SkillerDebugInterface.tolua |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

_Diff for modified files_:
diff --git a/src/plugins/skiller/SkillerDebugInterface.tolua b/src/plugins/skiller/SkillerDebugInterface.tolua
index cb33f07..6713be8 100644
--- a/src/plugins/skiller/SkillerDebugInterface.tolua
+++ b/src/plugins/skiller/SkillerDebugInterface.tolua
@@ -151,7 +151,12 @@ class SkillerDebugInterface : public Interface
 
 $[
 
+assert(fawkes.Interface.msgq_first)
+assert(fawkes.Interface.msgq_enqueue)
+assert(fawkes.Interface.create_message)
+
 fawkes.SkillerDebugInterface.msgq_first     = fawkes.Interface.msgq_first
+fawkes.SkillerDebugInterface.msgq_enqueue   = fawkes.Interface.msgq_enqueue
 fawkes.SkillerDebugInterface.create_message = fawkes.Interface.create_message
 
 $]

- *commit* c1043b7bd19c354e17da7a2fc696ab64cd723bba - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 21 13:38:05 2016 +0100
Subject: logging: add method to set component logger name (again)

 src/libs/logging/component.cpp |   19 +++++++++++++++++++
 src/libs/logging/component.h   |    2 ++
 2 files changed, 21 insertions(+), 0 deletions(-)

_Diff for modified files_:
diff --git a/src/libs/logging/component.cpp b/src/libs/logging/component.cpp
index 5201530..ce02751 100644
--- a/src/libs/logging/component.cpp
+++ b/src/libs/logging/component.cpp
@@ -26,6 +26,7 @@
 
 #include <cstring>
 #include <cstdlib>
+#include <cstdio>
 
 namespace fawkes {
 
@@ -56,6 +57,24 @@ ComponentLogger::~ComponentLogger()
 }
 
 
+/** Set a new component name.
+ * @param format format string for the new command string, cf. sprintf
+ * man page for allowed syntax.
+ */
+void
+ComponentLogger::set_component(const char *format, ...)
+{
+  va_list arg;
+  va_start(arg, format);
+  char *new_component;
+  if (vasprintf(&new_component, format, arg) > 0) {
+	  char *old_component = __component;
+	  __component = new_component;
+	  free(old_component);
+  }
+  va_end(arg);
+}
+	
 /** Log debug message.
  * @param format format of the message, see man page of sprintf for available
  * tokens.
diff --git a/src/libs/logging/component.h b/src/libs/logging/component.h
index 041e321..b19b2d0 100644
--- a/src/libs/logging/component.h
+++ b/src/libs/logging/component.h
@@ -38,6 +38,8 @@ class ComponentLogger
   ComponentLogger(Logger *logger, const char *component);
   ~ComponentLogger();
 
+  void set_component(const char *format, ...);
+  
   void log_debug(const char *format, ...); 
   void log_info(const char *format, ...);
   void log_warn(const char *format, ...);

- *commit* a5279a19b989430d6c57b9d15175796564bcd106 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 21 13:39:36 2016 +0100
Subject: lua: add support for pre-loading in interface initializer

 src/lua/fawkes/interface_initializer.lua |   38 +++++++++++++++++++++++++++++-
 1 files changed, 37 insertions(+), 1 deletions(-)

_Diff for modified files_:
diff --git a/src/lua/fawkes/interface_initializer.lua b/src/lua/fawkes/interface_initializer.lua
index c822776..6b6d1d1 100644
--- a/src/lua/fawkes/interface_initializer.lua
+++ b/src/lua/fawkes/interface_initializer.lua
@@ -29,15 +29,35 @@ module(..., fawkes.modinit.module_init)
 local interfaces_reading = {}
 local interfaces_writing = {}
 
+local interfaces_writing_stash = {}
+local interfaces_writing_preloaded = {}
+
 local blackboard = _G.blackboard
 
+function finalize_prepare()
+	 interfaces_writing_stash = interfaces_writing
+	 interfaces_writing = {}
+	 return interfaces_writing_stash
+end
+
+function finalize_cancel()
+	 interfaces_writing = interfaces_writing_stash
+	 interfaces_writing_stash = {}
+end
+
 function finalize()
 	 for _,v in pairs(interfaces_reading) do
 			blackboard:close(v)
 	 end
+	 interfaces_reading = {}
 	 for _,v in pairs(interfaces_writing) do
 			blackboard:close(v)
 	 end
+	 interfaces_writing = {}
+	 for _,v in pairs(interfaces_writing_stash) do
+			tolua.releaseownership(v)
+	 end
+	 interfaces_writing_stash = {}
 end
 
 function read()
@@ -47,13 +67,29 @@ function read()
 end
 
 function write()
-	 for _,v in pairs(interfaces_writing) do
+	 for k,v in pairs(interfaces_writing) do
 			if v:changed() then
 				 v:write()
 			end
 	 end	 
 end
 
+function preload(interfaces_writing_preload)
+	 for k,v in pairs(interfaces_writing_preload) do
+			print_debug("Preloading writing interface " .. tostring(k) .. "::" .. tostring(v))
+			interfaces_writing[k] = v
+			interfaces_writing_preloaded[k] = v
+	 end
+end
+
+--- Renive preloaded interfaces
+-- This can be used to prevent closing preloaded interfaces.
+function preloaded_remove_without_closing()
+	 for k,_ in pairs(interfaces_writing_preloaded) do
+			interfaces_writing[k] = nil
+	 end
+end
+
 function init_interfaces(module, table)
    local name = module.name
    local dependencies = module.depends_interfaces

- *commit* 5904ca521c1ea4be9d0a1eab893c7169a49efa25 - - - - - - - - - -
Author:  Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:    Thu Jan 21 13:43:02 2016 +0100
Subject: skiller: support re-loading with writing interfaces

 src/lua/skiller/fawkes/init.lua     |   23 ++++++++++++++++++-----
 src/lua/skiller/fawkes/start.lua    |    8 +++++++-
 src/plugins/skiller/exec_thread.cpp |   23 ++++++++++++++++++++++-
 3 files changed, 47 insertions(+), 7 deletions(-)

_Diff for modified files_:
diff --git a/src/lua/skiller/fawkes/init.lua b/src/lua/skiller/fawkes/init.lua
index 2739b66..9d73bb3 100644
--- a/src/lua/skiller/fawkes/init.lua
+++ b/src/lua/skiller/fawkes/init.lua
@@ -21,6 +21,7 @@
 module("skiller.fawkes", package.seeall)
 
 require("fawkes.logprint")
+require("fawkes.interface_initializer")
 fawkes.logprint.init(logger)
 
 require("interfaces.SkillerInterface")
@@ -43,6 +44,8 @@ local skdbg_what = "ACTIVE"
 local skdbg_graphdir = "TB"
 local skdbg_graphcolored = true
 
+local loop_has_run = false
+
 function notify_reader_removed(instance_serial)
 	 if instance_serial == skiller_if:exclusive_controller() then
 			print_info("Controlling interface instance was closed, revoking exclusive control")
@@ -197,6 +200,16 @@ function publish_skdbg()
 end
 
 function loop()
+	 if not loop_has_run then
+			skdbg_if:set_graph_colored(skdbg_graphcolored)
+			skdbg_if:write()
+			skdbg_layouted_if:set_graph_colored(skdbg_graphcolored)
+			skdbg_layouted_if:write()
+
+			loop_has_run = true
+	 end
+
+
 	 process_skdbg_messages()
 	 process_skiller_messages()
 
@@ -234,6 +247,10 @@ function finalize()
 	 skdbg_if = nil
 	 skdbg_layouted_if = nil
 
+	 if not loop_has_run then
+			-- Initialization failed and we are cleaned up
+			fawkes.interface_initializer.preloaded_remove_without_closing()
+	 end
 	 skillenv.finalize()
 end
 
@@ -250,6 +267,7 @@ end
 
 function finalize_cancel()
 	 init()
+	 fawkes.interface_initializer.finalize_cancel()
 end
 
 function init()
@@ -260,9 +278,4 @@ function init()
 	 -- read interface once to enable keeping the
 	 -- exclusive controller on a Lua context restart
 	 skiller_if:read()
-
-	 skdbg_if:set_graph_colored(skdbg_graphcolored)
-	 skdbg_if:write()
-	 skdbg_layouted_if:set_graph_colored(skdbg_graphcolored)
-	 skdbg_layouted_if:write()
 end
diff --git a/src/lua/skiller/fawkes/start.lua b/src/lua/skiller/fawkes/start.lua
index 4f8ce6b..f3edcfd 100644
--- a/src/lua/skiller/fawkes/start.lua
+++ b/src/lua/skiller/fawkes/start.lua
@@ -56,6 +56,11 @@ local ifinitmod = require("fawkes.interface_initializer")
 
 skillenv = require("skiller.skillenv")
 
+if interfaces_writing_preload then
+	 ifinitmod.preload(interfaces_writing_preload)
+	 interfaces_writing_preload = nil
+end
+
 fawkes.depinit.add_module_initializer(ifinitmod.init_interfaces)
 skillenv.add_finalize_callback("interface_initializer", ifinitmod.finalize)
 skillenv.add_preloop_callback("fawkes_interfaces_read", ifinitmod.read)
@@ -89,6 +94,7 @@ end
 require("skiller.fawkes")
 skiller.fawkes.init()
 
-skillenv.init(SKILLSPACE, skiller.fawkes.loop)
+local ok, errmsg = xpcall(function() skillenv.init(SKILLSPACE, skiller.fawkes.loop) end, debug.traceback)
+if not ok then error(errmsg) end
 
 logger:log_debug("Lua startup completed")
diff --git a/src/plugins/skiller/exec_thread.cpp b/src/plugins/skiller/exec_thread.cpp
index 097bfcc..e86b537 100644
--- a/src/plugins/skiller/exec_thread.cpp
+++ b/src/plugins/skiller/exec_thread.cpp
@@ -183,13 +183,34 @@ SkillerExecutionThread::add_skiller_feature(SkillerFeature *feature)
 void
 SkillerExecutionThread::lua_restarted(LuaContext *context)
 {
-  context->create_table();
+	context->create_table();
   context->set_global("features_env_template");
 
   std::list<SkillerFeature *>::iterator f;
   for (f = __features.begin(); f != __features.end(); ++f) {
     (*f)->init_lua_context(context);
   }
+
+  // move writing interfaces
+  __lua->do_string("return fawkes.interface_initializer.finalize_prepare()");
+
+  context->create_table();
+
+  __lua->push_nil();
+  while (__lua->table_next(-2) ) {
+	  void * udata = __lua->to_usertype(-1);
+	  if (udata) {
+		  std::string type, id;
+		  Interface::parse_uid(__lua->to_string(-2), type, id);
+		  context->do_string("require(\"interfaces.%s\")", type.c_str());
+		  context->push_string(__lua->to_string(-2));
+		  context->push_usertype(udata, type.c_str(), "fawkes");
+		  context->set_table(-3);
+		  __lua->pop(1);
+	  }
+  }
+
+  context->set_global("interfaces_writing_preload");
 }
 
 




-- 
Fawkes Robotics Framework                 http://www.fawkesrobotics.org


More information about the fawkes-commits mailing list