Module: NMEA

Defined in:
ext/ruby_nmea.cpp,
lib/nmea.rb,
ext/ruby_nmea.cpp

Overview

NMEA module has the only method: scan. Better read about it.

Defined Under Namespace

Classes: DataError, HandlerFilter, ParseError, SmoothingFilter

Constant Summary collapse

SatelliteInfo =

number, :elevation, :azimuth, :signal_level): assigned to SatelliteInfo

Struct.new(

Class Method Summary collapse

Class Method Details

.scan(sentence, handler) ⇒ Object

Usage: NMEA::scan(nmea_sentence, handler)



220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
# File 'ext/ruby_nmea.cpp', line 220

static VALUE scan(VALUE self, VALUE sentence, VALUE handler) {
	Check_Type(sentence, T_STRING);
	char *ptr = RSTRING(sentence)->ptr;
	char last = ptr[RSTRING(sentence)->len-1];
	char ptr_copy[RSTRING(sentence)->len+2];
	if(last != '\n' && last != '\r') {
		memcpy(ptr_copy, ptr, sizeof(ptr_copy)-2);
		ptr_copy[sizeof(ptr_copy)-2] = '\n';
		ptr_copy[sizeof(ptr_copy)-1] = 0;
		ptr = ptr_copy;
	}
	NMEA::RubyHandler h(handler);
	try {
		NMEA::scan(ptr, h);
	}
	catch(NMEA::Error& e) {
		h.do_throw(e);
	}
	return Qnil;
}