static void nmea_reader_init( NmeaReader* r ) { memset( r, 0, sizeof(*r) ); r->pos = 0; r->overflow = 0; r->utc_year = -1; r->utc_mon = -1; r->utc_day = -1; nmea_reader_update_utc_diff( r ); }
static void nmea_reader_init( NmeaReader* r ) { memset( r, 0, sizeof(*r) ); r->pos = 0; r->overflow = 0; r->utc_year = -1; r->utc_mon = -1; r->utc_day = -1; r->callback = NULL; r->fix.size = sizeof(GpsLocation); nmea_reader_update_utc_diff( r ); }
static int nmea_reader_get_timestamp(NmeaReader* r, Token tok, time_t *timestamp) { int hour, minute; double seconds; struct tm tm; time_t ttime; if (tok.p + 6 > tok.end) return -1; if (r->utc_year < 0) { return -1; } hour = str2int(tok.p, tok.p+2); minute = str2int(tok.p+2, tok.p+4); seconds = str2float(tok.p+4, tok.end); tm.tm_hour = hour; tm.tm_min = minute; tm.tm_sec = (int) seconds; tm.tm_year = r->utc_year - 1900; tm.tm_mon = r->utc_mon - 1; tm.tm_mday = r->utc_day; tm.tm_isdst = -1; // D("h: %d, m: %d, s: %d", tm.tm_hour, tm.tm_min, tm.tm_sec); // D("Y: %d, M: %d, D: %d", tm.tm_year, tm.tm_mon, tm.tm_mday); nmea_reader_update_utc_diff(r); ttime = mktime( &tm ); *timestamp = ttime - r->utc_diff; return 0; }