November 27, 2003

Clock offset?

One theory for the missing Bluetooth packets on connection establishment is that I don't send the clock offset when connecting. It doesn't seem to matter on the 3650, but maybe the USB dongle on the Mac works better if the clock offset is available. It helps keeping packet transmission in sync... for now, connections to the USB dongle succeed only the second time around, and my guess is that the clock offset is at that point known.

Posted by Eckhart at 12:02 AM

November 19, 2003

NIE Support

After exploring the various bits and pieces which NIE installs, I managed to put together a first version of a "NIE Nitro & Blunt" module. It reuses much of the Serial & Modem module and adds a new internet setup (IrDA for now, Bluetooth will follow). This will make the patched NIE module (which has to be currently used with Nitro) obsolete. One open issue is the connection slip for Blunt since that requires a field for the peer device, but I don't expect that to be too complicated. Getting closer to true Bluetooth integration...

Posted by Eckhart at 12:09 AM

November 16, 2003

More Bluetooth Setup

Discovery and Pairing look ok. There is still the issue with crashes after sending data (or a -48200 error), and Neo should not register transports for IrDA and Bluetooth when they are not installed. But the Bluetooth routing slip now uses the discovered device information and sets the pairing link key if available. The current archive on the Experiments page contains these latest developments.

The tricky part is now to get the same level of integration for Internet Setup... and not to forget about a more intelligent SDP server implementation.

Posted by Eckhart at 11:28 PM

November 12, 2003

Back to SDP

I made some progress with the Bluetooth Setup application (it's part of the Blunt.sit archive on the Experiments page). Discovery works, but overall, it's still quite rough. The preferences for chosing the Bluetooth device settings are integrated as well and are fetched by the comm tool when an endpoint is created.

The next steps would be pairing and discovering remote services. This probably one process, i.e. pairing also gets the available services on the peer device. This requires some additions to the SDP layer of Blunt. Not my favorite part...

The last steps are to use the discovery and SDP information in Neo to build the route slip when sending data to another device. I also have a vague idea on how to do the same for Internet Setup, making it possible to chose a peer device for a PPP connection. If my idea works, it will help Nitro as well and make the patched NIE Serial module obsolete.

Posted by Eckhart at 12:16 AM

November 04, 2003

Much better

The Blunt PPP speed problem was indeed caused by the wrong MTU settings. While trying to fix a problem when sending data via OBEX, I saw that the code for correct data segmentation during sending was still missing. The workaround at the moment is to use a small MTU size which will fit into the HCI buffer to the card and maybe add segmentation later. PPP over GPRS works fine now... the Newton is not a speed daemon, but it is definitely enough for browsing the web with Courier. And there is still the option to add gzip compression to NHttpLib.

Posted by Eckhart at 10:49 PM

November 03, 2003

Tricky, tricky...

The interactions between the various buffers in the TAsyncSerTool seem to be clear now. I reverse engineered the EmptyInputBuffer method more thoroughly and found out that the comm tool tries to get as much data into the NewtonScript buffers. There is still something to do about data which won't fit... it looks like the async tool will lose some of that data because it might be overwritten. Or maybe it will use flow control. Anyway, I'll just store it in an intermediate buffer which is hopefully big enough for all higher level protocols. For OBEX, it is 2k, and PPP should be happy with 1.5k. Having this now out of the way I can continue working on the Bluetooth setup application.

Posted by Eckhart at 11:53 PM