[Trac] [AllemaniACs] #34: Plugin related custom interfaces

AllemaniACs trac-notifications at lists.kbsg.rwth-aachen.de
Fri Apr 11 00:18:01 CEST 2008


#34: Plugin related custom interfaces
---------------------+------------------------------------------------------
 Reporter:  tim      |       Owner:  tim       
     Type:  feature  |      Status:  new       
 Priority:  major    |   Milestone:            
Component:  Fawkes   |    Keywords:  BlackBoard
---------------------+------------------------------------------------------
 Currently all interfaces are defined in XML files stored in
 {{{src/interfaces}}}. They are then generated there and all compiled into
 a single shared library. This approach has a few short comings:
  * {{{src/interfaces}}} will get cluttered with interfaces, especially if
 special purpose interfaces for the !AtHome league are created
  * There is currently now way for binary-only plugins to also bring in
 their interfaces in an easy manner.
  * Since the interface shared library is opened on Fawkes startup and
 never unloaded before Fawkes exits there is no way to change the
 interfaces during runtime. This is especially bad if two developers are
 working on different components on the same robot/Fawkes instance. In that
 case if one developer needs a new/changed interface both have to interrupt
 work.

 I thought about this under the shower and then we were discussing the
 interfaces in RCSoftX just today. To avoid especially the cluttering
 problem it deems necessary to change the interfaces system to have the
 ability to create smaller and plugin-custom interfaces.

 Currently the following ideas came up:
  * have a shared library per interface, which is only loaded and kept
 loaded as long as at least one instance of this interface is opened
  * allow for plugin-custom interfaces. This means that the XML file and
 generated code will be in a plugin's directory. Tools or other plugins get
 the header from there. Maybe put generated headers in {{{src/interfaces}}}
 for easy access?

 Currently ruled out in discussions with Daniel is the way of creating an
 API in libinterface to create interfaces on the fly with some
 "{{{add_*()}}}" methods to add fields and then freeze it before
 instantiating it. This will just foster an API inside a plugin to create
 the interface, effectively making it easier to use the interface
 generator.

 This effort is planned for later this year, definitely after GO2008,
 probably before China as this can make life easier for the Naos as well.

-- 
Ticket URL: <https://lechuck.informatik.rwth-aachen.de:2342/trac/ticket/34>
AllemaniACs <http://robocup.rwth-aachen.de>
AllemaniACs Trac


More information about the fawkes-trac mailing list