#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
+#include <errno.h>
#include <string.h>
#include <termios.h>
}
}
- if (strlen(nmea_params[3].str) != 9 || strlen(nmea_params[5].str) != 10) {
- ERROR("lat/lng have invalid string length\n");
+ if (strlen(nmea_params[3].str) < 9 || strlen(nmea_params[5].str) < 10) {
+ ERROR("lat/lng have invalid string length %d<9, %d<10\n",
+ strlen(nmea_params[3].str), strlen(nmea_params[5].str));
} else {
int latd, latm, lats;
int lngd, lngm, lngs;
if (!gps_valid)
return;
strncpy(course, nmea_params[1].str, sizeof(course));
- strncpy(speed, nmea_params[6].str, sizeof(speed));
+ strncpy(speed, nmea_params[7].str, sizeof(speed));
DEBUG(4, "course: %s\n", course);
DEBUG(4, "speed: %s\n", speed);
}
return;
if (nmea_verify_checksum(a)) {
- ERROR("nmea message has invlid checksum\n");
+ ERROR("nmea message has invalid checksum\n");
return;
}
tty = open(dev, O_RDWR | O_NOCTTY | O_NONBLOCK);
if (tty < 0) {
- ERROR("%s: device open failed\n", dev);
+ ERROR("%s: device open failed: %s\n", dev, strerror(errno));
return -1;
}