Introducing the GPS Intermediate Driver for Windows Mobile

It's always cool to get to add new features, especially when they're a little outside your comfort zone.  For Windows Mobile 5 (i.e. PocketPC 2005) I added the GPS Intermediate Driver (GPSID) and corresponding GPSAPI.  I usually do networking servers (web, telnet, services.exe, ...) or clients (LDAP, COM, name resolution, MSXML, ...).  I'm still not quite sure how a networking dev like me ended up working on GPS, but I'm not complaining because it was a fun project :).

GPSID makes it a lot easier to write applications that use GPS devices.  In the past you'd have to figure out the underlying COM port the GPS device was on, call CreateFile() on it, and then parse out the NMEA strings as it sent them to you.  GPSID makes all this a lot easier by giving an easy to use API that gives you lat/long directly.  GPSID also can expose itself as a virtual COM port, streaming NMEA directly to legacy applications, so we don't break backward compat.

I'm not going to say any more about technical issues since GPSID is documented here.

As a random side-note, it's interesting that everyone else I talk to calls this feature GPSAPI yet I call it GPSID.  The reason is that app developers deal with the API layer - they #include <gpsapi.h> and link to gpsapi.lib.  It turns out that GPSAPI.lib is a very tiny layer (about 100 lines) whereas the GPSID.dll is a device driver and is about 6000 lines.  Guess which one took longer to write :)  Since I spent so much more time on GPSID I can't help but think of it in those terms.  I promise to do my best to accomodate the rest of the world but please be sympathetic :)