I've decided to take a step back from the Nessie code for a bit and consider the architecture of the system. At the current rate, I've coded myself in to a corner, back tracked, tried again, and coded myself into another corner. The system has gotten too large and complex for me to keep straight and I've found myself trying to get tests to pass by simply hacking away at code. I think some better organization and a clear architectural goal could be of help here. The chart below is my first graphical concept of how I think the architecture should work. There are some areas which lack detail, but I think it's enough to start restructuring the code a bit. Hopefully, in doing so, the missing details will become more apparent and I can then add them to the chart.
I just published Bot Commander , the code for my Lego NXT rover . There's a lot left to be done, but release early and often, right? Currently it provides a UI for controlling the direction and speed of all three motor ports on the NXT brick. You can link motors together to adjust their speed in unison. In addition, you can enable "Tilt Control" for a steering-wheel-type experience. To use tilt control: Hook up motor A and B to be the left and right wheels of your vehicle. Hold the phone sideways (i.e. landscape). Tilt the phone forward and backward to drive forward and backward. Turn the phone right and left (like a steering wheel) to steer right and left. As you tilt the phone, you'll see the UI update the slider controls for the speed of motors A and B. I plan to expand the UI to provide a lot more than just motor control. Before that, though, I'll push a JAR to make it easy to integrate control of Lego NXT robots into your own Android project. The code...