static void nmea_reader_addc( NmeaReader* r, int c ) { int cnt; if (r->overflow) { r->overflow = (c != '\n'); return; } if (r->pos >= (int) sizeof(r->in)-1 ) { r->overflow = 1; r->pos = 0; return; } r->in[r->pos] = (char)c; r->pos += 1; if (c == '\n') { gps_state_lock_fix(gps_state); nmea_reader_parse( r ); gps_state_unlock_fix(gps_state); r->pos = 0; } }
void nmea_reader_append (char *buff, int size) { for (int n = 0; n < size; n++){ if (overflow) { overflow = (buff[n] != '\n'); return; } if (pos >= NMEA_MAX_SIZE ) { overflow = true; pos = 0; return; } line[pos] = (char) buff[n]; pos++; if (buff[n] == '\n') { line[pos] = '\0'; nmea_reader_parse(line); pos = 0; } } }
static void nmea_reader_addc( NmeaReader* r, int c ) { if (r->overflow) { r->overflow = (c != '\n'); return; } if (r->pos >= (int) sizeof(r->in)-1 ) { r->overflow = 1; r->pos = 0; return; } r->in[r->pos] = (char)c; r->pos += 1; if (c == '\n') { nmea_reader_parse( r ); r->pos = 0; } }