September 13, 2004

Communication Breakdown

One of the recurring problems in Blunt is that there are actually two different layers of communications, each with different semantics. As an example, connecting to Blunt itself is a bit different than connecting to a peer device. On the lower level, the CommTool is connecting to the serial chip, and that's it, whereas on the higher level, the whole Bluetooth connection setup process is done.

Semantically, the connection is mapped to the Bluetooth world, which means that whenever a problem occurs in connecting, the cleanup actions require a lot of asynchronous messages, e.g. tearing down the HCI or L2CAP links. This error handling is not implemented very well in Blunt. Right now, Blunt has problems cleaning up everything, but things work better when they are triggered from the NewtonScript side. One way to deal with this is to let the NewtonScript side always to the cleanup, but this requires that timeouts are used, or that the user is able to cancel things.

Posted by Eckhart at September 13, 2004 11:06 PM