Thanks, Mike!
Re differentiating boards, on the USB level there are OS-specific differences:
- On Windows the port assignment is pretty non-deterministic.
- On OSX, the device (file) name depends on which USB port it is connected to.
- On Linux, you can access by connection or serial number.
So it doesn't seem like there's an easy way to secure a consistent name on all OS. Also, currently there is no serial number programmed, but this is solvable with some effort.
An easy alternative for you is to either jumper some of the unused pins to act as an ID (for example, decide that pins 45-46 on each board act as ID, where on one both will be shorted to GND, on one only 45 and on one only 46). You can even be clever and distinguish between "GND", "3V3" and "un-connected" if you open each pin twice, once with a pull-up and once with a pull-down. A similar alternative is to connect an external EEPROM over I2C to each of your boards. Many EEPROMs have built in unique serial numbers, and if not, you can use the EEPROM itself to write an ID.
As far as how the software should be delivered: initially, the main use case has been Android. The official way to distribute libraries was in source + Eclipse project form. Sux, I know, but JARs aren't sufficient for all the metadata. Now that Android has moved to AS / Gradle I'm very open to moving. Maven is something that has been discussed as well and I'm very interested in doing that. Essentially, the fewer number of steps for setting up "Hello World" and the less boilerplate code, the better. Only problem is that I'm not personally familiar with state-of-the-art ways of doing these things. I've previously called out for people on the mailing list to help out, but nobody stepped up (well, some did, who admitted to not being too sure about how this "should" be done). If you think you know how to do this right, please let me know. I'd like to discuss some details with you before you spend any efforts, just to make sure we're on the same page and that you're aware of all the relevant work-flows.
Ytai