gpsdrive reads nmea sentences directly from gpsd (see nmea_handler.c). This had lead to a number of problems in the past (see for example debian bug #456149).
Maybe it would be better to use libgps or similiar?
right. gpsdrice should use libgps and the nmea parsing code should be removed.
I already tested this within another application, but there are still some issues, that prevented me from changing this in gpsdrive.
but it is on the TODO list.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
instead of requesting raw NMEA with "R+" in gps_handler.c, we could initialize in watcher mode (W+), then parse the [nema parsed] "O" string.
send (sock, "W+\n", 3, 0);
"The recommended mode for clients is watcher mode. In
watcher mode gpsd ships a line of data to the client each
time the GPS gets either a fix update or a satellite
picture, but rather than being raw NMEA the line is a gpsd
'o' or 'y' response. Additionally, watching clients get
notifications in the form X=0 or X=%f when the
online/offline status of the GPS changes, and an I response
giving the device type when the user is assigned a device.
Clients should be prepared for the possibility that
additional fields (such as heading or roll/pitch/yaw) may
be added to the O command, and not treat the occurrence of
extra fields as an error. The protocol number will be
incremented if and when such fields are added."
?
Hamish
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
right. gpsdrice should use libgps and the nmea parsing code should be removed.
I already tested this within another application, but there are still some issues, that prevented me from changing this in gpsdrive.
but it is on the TODO list.
alternatively, a path of minimal change:
instead of requesting raw NMEA with "R+" in gps_handler.c, we could initialize in watcher mode (W+), then parse the [nema parsed] "O" string.
send (sock, "W+\n", 3, 0);
"The recommended mode for clients is watcher mode. In
watcher mode gpsd ships a line of data to the client each
time the GPS gets either a fix update or a satellite
picture, but rather than being raw NMEA the line is a gpsd
'o' or 'y' response. Additionally, watching clients get
notifications in the form X=0 or X=%f when the
online/offline status of the GPS changes, and an I response
giving the device type when the user is assigned a device.
Clients should be prepared for the possibility that
additional fields (such as heading or roll/pitch/yaw) may
be added to the O command, and not treat the occurrence of
extra fields as an error. The protocol number will be
incremented if and when such fields are added."
?
Hamish
done with svn revision 2243.