I wrote a GPS driver for Mobile_XXX last week. They told me the GPS could be driven base on either UART or GPSID. I haven't heard of GPSID before that. So I decided to drive GPS on UART directly. It's a little complicated, because I have to read date from serial port, and assemble the data in buffer, analysis the text frame of GPS, and then get the position information. Besides, I have to control the power of GPS.
But at last, they asked me to implement the driver based on GPSID, because GPS might be used in several softwares simultaneously. Other softwares can't use GPS, if I open the hardware uart port. So, I had no choice but to learn how to use GPSID on the scene. Fortunately, GPSID is very very easy to use.
First, I found the sample code for Mobile's GPSID. It contains three projects, the class GPSController is the key factor in the sample code. It's a perfect driver for GPS. So I decided to use the class GPSController in my driver. I don't have to do much change on it.
1) define two callback functions to retrive GPS position information and device status information;
2) add precompile option clause to add gpsapi.lib
3) implement callback functions
4) write main() function, transport the callback functions to GPSController
Notes: there is no UI in this demo
GPS_driver.cpp
GPSController.h (some comments are deleted, to short this artical)
GPSController.cpp (some comments are deleted, to short this artical)