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
-
.scan(sentence, handler) ⇒ Object
Usage: NMEA::scan(nmea_sentence, handler).
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;
}
|