So, taking inventory of the ada bindings for player, I'm finding them surprisingly thin. I'm willing to live with it, but we'll have to extend them a fair amount, which beats the hell out of starting them from scratch.
Here's what I'm thinking for basic rover logic.
Some definitions first. Internal server is the server in the rover control program itself. We'll connect to it with our own desktop application to gain access to our own data structures and see what the rover is thinking. MCP is master control program, which is that desktop application. The MCP should connect to at least the rover's internal server to gain us access to command it and read its data, and may also connect to Player. If we wind up disregarding Player, we still need this setup anyway.
1. Initialize, start up internal server.
2. Scan available hardware.
3. Initialize all hardware and start reading sensors.
4. Check available hardware against an internal list that contains a minimum hardware configuration for operations.
5. Enter standard operations loop and continue until told to quit.
6. Undo everything and power down.
The ada bindings fall down on the second step, scanning available hardware. Ada has a neat way of interfacing to a C library and has a lot of built-in stuff for doing exactly that. So no swig or anything, which is really neat. I'm liking it enough that I'd almost be willing to suggest it as a "script" language for arma.

But it looks like a fair amount of work to represent a C struct. So the player_client_t struct is just represented with a simple access pointer, which prevents us from reading anything inside it while allowing us to use it everywhere the player_client_t struct is needed. The device list is in that struct, however, and one device is type _player_device_t. So we need to get both of those structs ada-ized to get past step 2.
I kind of looked around for socket information so we can setup the internal server, but didn't find much.
So, classes don't exist in ada, but there is oop still. OOP is through something called a package, which you can pretend is a class and probably survive. There's inheritance and polymorphism, public/private scope, and all sorts of things. But the available tutorials I found, at least the ones I read, are pretty technical reads. So consider this a fair warning, and when you go to find out how to make a class, "package" is the key word you're looking for. Also, the wikibook for ada is pretty complete and detailed, I highly recommend it.
So we have three programming tasks right now. Start the MCP, write the socket class for the RCS (rover control software, I'm American so I love making up acronyms), get those two data structures made available to us in ada.
I'm inclined to do the MCP with PyQt, but there is a licensing issue I hadn't considered. Are we programming for commercial reasons? If we are, we have to pony up for commercial licenses for everyone coding qt code, and then again to riverbank for pyqt. We can probably skate on the ambiguity for now and just use PyQt, but I'm interested in alternatives. We could use pygame for example, but it'll be a lot of work. I'm not at all interested in pygtk, and we do have to require the MCP run on Windows, Mac OS X, and Linux. It's a regular desktop application. I'm obviously very much in favor of PySomething. Any preferences here? (A web application is right out, sorry) There's also wxPython, which I've used and it works well, but it's wxWidgets, which I don't really like. I'm very biased, though, I like PyQt a lot. Is there a py-fltk?
The MCP and the socket class are linked, obviously, because we have to build in a network protocol at the same time. An advantage to using python here is that I've already got a network layer mostly written that I can plug in on the MCP side, but will have to be rewritten with ada. If we find a pretty good C/C++ library that's also very small, we can use that too since ada has builtin facilities for using those libraries.