Simon - I'm glad I have an interesting problem... ;-)
The secret other virtue of the desktop app is, of course, a debugger. Though i thank you for the suggestions. I did start on the mbed, dumping images to files, but it is hard to find the stupid bugs when working that way.
I did think of one candidate for your Whiteboard of The Future, if it isn't there already - provide an emulation of the whole mbed environment as a set of headers & libs for the desktop, with proxying to the real mbed down the USB cable.
It woudn't be a perfect emulation, especially in the timing department, but would be a great way to do debugging.
Closer to home, I can see two ways to do the workflow for the current project. Let me tell you what we have right now, probably in more detail than you need.
There's the mbed code:
http://mbed.org/users/jarkman/published/1a04748bdf30c12230994b6731b67d20/ucam.zip
which talks to the 4DSystems uCam camera module over a serial port. That code also contains a bit of elementary image analysis. Its destiny is to end up running a motorised eyeball as part of a Dorkbot Bristol project.
I feel as though I ought to separate the parts, so that there's a distinct camera-interface module available for anyone else who wants to do the same thing on an mbed (the camera thing, not the eyebvall thing), and I'd welcome your thoughts on that. Is that best done as a solitary standalone project, with a bit of demo code in its main() ?
Then there's the test frame, which exists right now as a Visual Studio C++ project:
http://code.google.com/p/theeyestheeyes/source/checkout
That code also contains the mbed code. Oh, and my collaborator, Ben, will probably add another testframe built with some Unix toolset, which will exists in the same source tree at Google Code. And when his mbed turns up (Farnell are out of stock), he will also want to work on the mbed code in the mbed compiler, which raises a different collaboration question.
So, ways to make it work:
(0) Copy the shared code back and forth between Visual Studio and the mbed compiler, and try never to copy it the wrong way.
(1) Keep the mbed code in mbed's repository (assuming there is such a thing), and the rest of the code in Google's repository.
In the mbed compiler, have it automagically appear all up-to-date automatically, and commit back to the repository when it is saved.
On the desktop, check out the two parts of the source tree separately from the two repositories.
(2) Keep all the code in Google's repository, and create a project in the mbed compiler which uses that repository for a store instead of the bit of your disk it uses now.
(3) Keep all the code in Google's repository, and give the mbed compiler explicit update and commit buttons.
I think (3) is the most rational. If you're going to provide version control in the compiler, you need to do most of the update/commit UI work anyhow, and then you just need a couple of extra knobs to let projects specify an external repository instead of the mbed repository.
That model also supports the collaborating-in-the-mbed-compiler case for pure-mbed projects. Say, for example, I make a project in the compiler, put it in the mbed repository (or find you have magically put it there already), then give Ben a link to it. He works on it in the compiler, and we share via the mbed repository.
Does that help ?
Richard
I'm making good progress with my mbed and a serial camera, doing a bit of image processing work.
Because of the tragic lack of a built-in screen on the mbed, I'm building the same code in two environments:
(1) The mbed compiler, for deployment on the real device
(2) In a testframe app on my desktop, where I can see and debug image issues
I've built cheap emulations of the mbed libraries that I'm using, so the bulk of the code can be identical in both places.
Right now I am moving code between the two environments by copying and pasting the contents of editors, which is obviously a bit fraught and error-prone. The code moves back & forth quite often.
To add to the complications, I now have a collaborator, so the desktop codebase is in a Google Code repository.
Is there any tidier way to solve this problem ?
Thanks!
Richard