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