ddmcf

First of all, thanks for doing this. I don't have a due board, but i often benefit from work like yours.

I've been considering using qp for a project, but as a single threaded async finite state machine. You indicate you are less enthusiastic about state machines. Could you elaborate. It may save me some development time. I am an experienced windows real time software developer, but have very little experience with micro controllers.

The classroom version of using state machines is great. In practice not so much.

The idea is that you design with something like UML state diagrams. Once you totally understand the problem, you implement the solution possibly with the help of some tools. You then live happily ever after.

The problem is that you never understand the real world while you are drawing state charts. Systems evolve and the real world is messy.

The end result is that the code to implement state machines is not readable so you need or should go back to the design documents to make changes.

This just doesn't work well in the development of large embedded systems.

This article, that is selling a tool for state machines, hits on a lot of the problems but this type of tool doesn't solve them in the real world.

At one point I was a principal in a start-up company that promoted a state machine approach to embedded systems. After leaving the company I went back to building large embedded systems for big science projects. I found once again that tools like QP are not nearly as important as fundamental knowledge of the problem to be solved. Having a PhD in physics trumps use of any tool when you are dealing with a Large Hadron Collider.

You might want to pay attention to whether the license permits "free" commercial use, as well as hobbyist/educational use. It can be quite a moral quandary to be faced with the possibility of selling a few of your arduino-based gadget, only to need to spend thousands of dollars of licensing fees to stay compliant.

What do you think about Contiki? I know it's already been ported to mid-sized AVRs (Raven) to implement wireless IPv6 sensor networks; Networking seems to frequently be one of the factors pushing people to real OSes.