Example #1
0
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;
		}

	}
}
Example #3
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;
    }
}