public override NmeaMessage Parse(ReadOnlySequence <Byte> sentence) { var lexer = new Lexer(sentence); if (lexer.NextString() != "GPGSV") { throw lexer.Error(); } var gsv = new GSV() { TotalMessages = lexer.NextInteger(), MessageNumber = lexer.NextInteger(), SatellitesInView = lexer.NextInteger(), SV1 = SV.Create(lexer.NextInteger(), lexer.NextInteger(), lexer.NextInteger(), lexer.NextInteger()) }; if (!lexer.EOL) { gsv.SV2 = SV.Create(lexer.NextInteger(), lexer.NextInteger(), lexer.NextInteger(), lexer.NextInteger()); } if (!lexer.EOL) { gsv.SV3 = SV.Create(lexer.NextInteger(), lexer.NextInteger(), lexer.NextInteger(), lexer.NextInteger()); } if (!lexer.EOL) { gsv.SV4 = SV.Create(lexer.NextInteger(), lexer.NextInteger(), lexer.NextInteger(), lexer.NextInteger()); } gsv.Checksum = lexer.NextChecksum(); return(gsv); }