I've spoken with a number of OEMs & ISVs regarding GPSID and many people assume that a call to GPSGetPosition() will cause the GPS device to be queried for the latest + greatest position. That's actually not the way that it works (today). GPSID is designed to work with GPS devices that generate NMEA only. NMEA GPS devices will always be giving GPSID updates as to position in the background, they do not have any mechanism for an app or driver to call "GiveMePositionNow()".
For the record GPSGetPosition() is a glorified memcpy() of the position fields that GPSID has cached from the most recent position that the GPS driver. Anyone who's stared at NMEA would probably assume the API worked this way, but the point of GPSID was so that people don't need to stare at NMEA :). I have asked the documentation team to update the GPSGetPosition() docs to clear up any ambiguity on how it works. Sorry for the pain this may have caused.
In the future, I'm looking at having GPSID work better with non-NMEA devices that would be smart enough to do an on-demand position determination so that's why I have (today) in comments above about how GPSGetPosition() works.
[Author: John Spaith]