Lines Matching refs:r

195 nmea_reader_update_utc_diff( NmeaReader*  r )  in nmea_reader_update_utc_diff()  argument
217 r->utc_diff = time_utc - time_local; in nmea_reader_update_utc_diff()
222 nmea_reader_init( NmeaReader* r ) in nmea_reader_init() argument
224 memset( r, 0, sizeof(*r) ); in nmea_reader_init()
226 r->pos = 0; in nmea_reader_init()
227 r->overflow = 0; in nmea_reader_init()
228 r->utc_year = -1; in nmea_reader_init()
229 r->utc_mon = -1; in nmea_reader_init()
230 r->utc_day = -1; in nmea_reader_init()
231 r->callback = NULL; in nmea_reader_init()
232 r->fix.size = sizeof(r->fix); in nmea_reader_init()
234 nmea_reader_update_utc_diff( r ); in nmea_reader_init()
239 nmea_reader_set_callback( NmeaReader* r, gps_location_callback cb ) in nmea_reader_set_callback() argument
241 r->callback = cb; in nmea_reader_set_callback()
242 if (cb != NULL && r->fix.flags != 0) { in nmea_reader_set_callback()
244 r->callback( &r->fix ); in nmea_reader_set_callback()
245 r->fix.flags = 0; in nmea_reader_set_callback()
251 nmea_reader_update_time( NmeaReader* r, Token tok ) in nmea_reader_update_time() argument
261 if (r->utc_year < 0) { in nmea_reader_update_time()
265 r->utc_year = tm.tm_year + 1900; in nmea_reader_update_time()
266 r->utc_mon = tm.tm_mon + 1; in nmea_reader_update_time()
267 r->utc_day = tm.tm_mday; in nmea_reader_update_time()
277 tm.tm_year = r->utc_year - 1900; in nmea_reader_update_time()
278 tm.tm_mon = r->utc_mon - 1; in nmea_reader_update_time()
279 tm.tm_mday = r->utc_day; in nmea_reader_update_time()
282 fix_time = mktime( &tm ) + r->utc_diff; in nmea_reader_update_time()
283 r->fix.timestamp = (long long)fix_time * 1000; in nmea_reader_update_time()
288 nmea_reader_update_date( NmeaReader* r, Token date, Token time ) in nmea_reader_update_date() argument
306 r->utc_year = year; in nmea_reader_update_date()
307 r->utc_mon = mon; in nmea_reader_update_date()
308 r->utc_day = day; in nmea_reader_update_date()
310 return nmea_reader_update_time( r, time ); in nmea_reader_update_date()
326 nmea_reader_update_latlong( NmeaReader* r, in nmea_reader_update_latlong() argument
353 r->fix.flags |= GPS_LOCATION_HAS_LAT_LONG; in nmea_reader_update_latlong()
354 r->fix.latitude = lat; in nmea_reader_update_latlong()
355 r->fix.longitude = lon; in nmea_reader_update_latlong()
361 nmea_reader_update_altitude( NmeaReader* r, in nmea_reader_update_altitude() argument
371 r->fix.flags |= GPS_LOCATION_HAS_ALTITUDE; in nmea_reader_update_altitude()
372 r->fix.altitude = str2float(tok.p, tok.end); in nmea_reader_update_altitude()
378 nmea_reader_update_bearing( NmeaReader* r, in nmea_reader_update_bearing() argument
387 r->fix.flags |= GPS_LOCATION_HAS_BEARING; in nmea_reader_update_bearing()
388 r->fix.bearing = str2float(tok.p, tok.end); in nmea_reader_update_bearing()
394 nmea_reader_update_speed( NmeaReader* r, in nmea_reader_update_speed() argument
403 r->fix.flags |= GPS_LOCATION_HAS_SPEED; in nmea_reader_update_speed()
404 r->fix.speed = str2float(tok.p, tok.end); in nmea_reader_update_speed()
409 nmea_reader_update_accuracy( NmeaReader* r ) in nmea_reader_update_accuracy() argument
413 r->fix.flags |= GPS_LOCATION_HAS_ACCURACY; in nmea_reader_update_accuracy()
414 r->fix.accuracy = 20; in nmea_reader_update_accuracy()
420 nmea_reader_parse( NmeaReader* r ) in nmea_reader_parse() argument
428 D("Received: '%.*s'", r->pos, r->in); in nmea_reader_parse()
429 if (r->pos < 9) { in nmea_reader_parse()
434 nmea_tokenizer_init(tzer, r->in, r->in + r->pos); in nmea_reader_parse()
464 nmea_reader_update_time(r, tok_time); in nmea_reader_parse()
465 nmea_reader_update_latlong(r, tok_latitude, in nmea_reader_parse()
469 nmea_reader_update_altitude(r, tok_altitude, tok_altitudeUnits); in nmea_reader_parse()
487 nmea_reader_update_date( r, tok_date, tok_time ); in nmea_reader_parse()
489 nmea_reader_update_latlong( r, tok_latitude, in nmea_reader_parse()
494 nmea_reader_update_bearing( r, tok_bearing ); in nmea_reader_parse()
495 nmea_reader_update_speed ( r, tok_speed ); in nmea_reader_parse()
503 nmea_reader_update_accuracy( r ); in nmea_reader_parse()
505 if (r->fix.flags != 0) { in nmea_reader_parse()
513 if (r->fix.flags & GPS_LOCATION_HAS_LAT_LONG) { in nmea_reader_parse()
514 p += snprintf(p, end-p, " lat=%g lon=%g", r->fix.latitude, r->fix.longitude); in nmea_reader_parse()
516 if (r->fix.flags & GPS_LOCATION_HAS_ALTITUDE) { in nmea_reader_parse()
517 p += snprintf(p, end-p, " altitude=%g", r->fix.altitude); in nmea_reader_parse()
519 if (r->fix.flags & GPS_LOCATION_HAS_SPEED) { in nmea_reader_parse()
520 p += snprintf(p, end-p, " speed=%g", r->fix.speed); in nmea_reader_parse()
522 if (r->fix.flags & GPS_LOCATION_HAS_BEARING) { in nmea_reader_parse()
523 p += snprintf(p, end-p, " bearing=%g", r->fix.bearing); in nmea_reader_parse()
525 if (r->fix.flags & GPS_LOCATION_HAS_ACCURACY) { in nmea_reader_parse()
526 p += snprintf(p,end-p, " accuracy=%g", r->fix.accuracy); in nmea_reader_parse()
528 gmtime_r( (time_t*) &r->fix.timestamp, &utc ); in nmea_reader_parse()
532 if (r->callback) { in nmea_reader_parse()
533 r->callback( &r->fix ); in nmea_reader_parse()
534 r->fix.flags = 0; in nmea_reader_parse()
544 nmea_reader_addc( NmeaReader* r, int c ) in nmea_reader_addc() argument
546 if (r->overflow) { in nmea_reader_addc()
547 r->overflow = (c != '\n'); in nmea_reader_addc()
551 if (r->pos >= (int) sizeof(r->in)-1 ) { in nmea_reader_addc()
552 r->overflow = 1; in nmea_reader_addc()
553 r->pos = 0; in nmea_reader_addc()
557 r->in[r->pos] = (char)c; in nmea_reader_addc()
558 r->pos += 1; in nmea_reader_addc()
561 nmea_reader_parse( r ); in nmea_reader_addc()
562 r->pos = 0; in nmea_reader_addc()