From: Geoffrey B. <g....@au...> - 2007-05-21 11:05:54
|
Good news, everyone! - Professor Farnsworth Something that's been increasingly frequently requested is going to be in the Player 2.1 release: pluggable interfaces. Aside from the standard difficulty level of writing an interface, they're surprisingly easy to create and use. A dynamically loaded library provides the XDR functions to the server, the same library is linked into clients as a shared library at compile time, and a header file(s) provides the client proxy and interface definition. Clients will need to make a function call to load the XDR functions for the new interface into the function table; this is provided by a new playerc_ call. Drivers can use the plugged in interface like any other. The server config file must specify the plugin for the interface. All other necessary changes are under the hood and (hopefully) won't be noticed. There is one breaking change in this: the exported symbol name in plugin drivers had to change for clarity, so any plugin drivers will need to be updated. The changes to Player itself have just gone in. I'll clean up the stuff I tested it with and check it in as an example tomorrow, so you can see how it all works in detail (and probably more clearly than this rambling, brief explanation). Geoff -- Robotics research group, University of Auckland http://www.ece.auckland.ac.nz/~gbig005/ |
From: Geoffrey B. <g....@au...> - 2007-05-22 07:58:24
|
I've added an example to the examples/plugins directory. This should fairly comprehensively explain what needs to be done to add a new interface, but people will need to refer to the driver writing and client writing documentation as well. I'll write a tutorial and put it in the wiki soon. It would be good if someone could try writing a plugin interface some time soon to see if I've missed anything. There's also an issue with the auto-generated makefile, in that the configure scripts (or autoreconf or something) isn't entering the example's directory and creating its Makefile. If someone who's more familiar with Player's build system could take a look at this and figure out why, that'd be great. :) Geoff Geoffrey Biggs wrote: > Good news, everyone! > - Professor Farnsworth > > Something that's been increasingly frequently requested is going to be > in the Player 2.1 release: pluggable interfaces. > > Aside from the standard difficulty level of writing an interface, > they're surprisingly easy to create and use. A dynamically loaded > library provides the XDR functions to the server, the same library is > linked into clients as a shared library at compile time, and a header > file(s) provides the client proxy and interface definition. Clients will > need to make a function call to load the XDR functions for the new > interface into the function table; this is provided by a new playerc_ > call. Drivers can use the plugged in interface like any other. The > server config file must specify the plugin for the interface. All other > necessary changes are under the hood and (hopefully) won't be noticed. > > There is one breaking change in this: the exported symbol name in plugin > drivers had to change for clarity, so any plugin drivers will need to be > updated. > > The changes to Player itself have just gone in. I'll clean up the stuff > I tested it with and check it in as an example tomorrow, so you can see > how it all works in detail (and probably more clearly than this > rambling, brief explanation). > > Geoff > -- Robotics research group, University of Auckland http://www.ece.auckland.ac.nz/~gbig005/ |
From: Brian G. <br...@ge...> - 2007-05-22 16:18:05
|
On May 22, 2007, at 1:58 AM, Geoffrey Biggs wrote: > I've added an example to the examples/plugins directory. This should > fairly comprehensively explain what needs to be done to add a new > interface, but people will need to refer to the driver writing and > client writing documentation as well. Sounds great, Geoff. > > I'll write a tutorial and put it in the wiki soon. It would be good if > someone could try writing a plugin interface some time soon to see if > I've missed anything. I'll give a try and let you know how it goes. > > There's also an issue with the auto-generated makefile, in that the > configure scripts (or autoreconf or something) isn't entering the > example's directory and creating its Makefile. If someone who's more > familiar with Player's build system could take a look at this and > figure > out why, that'd be great. :) That's because examples/plugins/exampleinterface was not listed in the AC_OUTPUT call in configure.ac. I've fixed that, am testing the build now, and will check it in soon. brian. |