Ejemplo n.º 1
0
        internal override IEnumerable <NavMessage> Parse()
        {
            while (!Sr.EndOfStream)
            {
                var  ch = Sr.Peek();
                char s  = Convert.ToChar(ch);
                var  satelliteSystem = s.ConvertToEnum();

                switch (satelliteSystem)
                {
                case SatelliteSystem.Gps:
                    var gpsParser = _parserMap[satelliteSystem] as GpsNavMessageContentParser;
                    Debug.Assert(gpsParser != null, "temp != null");
                    yield return(gpsParser.ParseImpl <GpsNavMessage>());

                    break;

                case SatelliteSystem.Glo:
                    var gloParser = _parserMap[satelliteSystem] as GloNavMessageContentParser;
                    Debug.Assert(gloParser != null, "temp != null");
                    yield return(gloParser.ParseImpl <GloNavMessage>());

                    break;

                case SatelliteSystem.Gal:
                    var galParser = _parserMap[satelliteSystem] as GalNavMessageContentParser;
                    Debug.Assert(galParser != null, "temp != null");
                    yield return(galParser.ParseImpl <GalNavMessage>());

                    break;

                case SatelliteSystem.Qzss:
                    var qzssParser = _parserMap[satelliteSystem] as QzssNavMessageContentParser;
                    Debug.Assert(qzssParser != null, "temp != null");
                    yield return(qzssParser.ParseImpl <QzssNavMessage>());

                    break;

                case SatelliteSystem.Bds:
                    var bdsParser = _parserMap[satelliteSystem] as BdsNavMessageContentParser;
                    Debug.Assert(bdsParser != null, "temp != null");
                    yield return(bdsParser.ParseImpl <BdsNavMessage>());

                    break;

                case SatelliteSystem.Irnss:
                    var irnssParser = _parserMap[satelliteSystem] as IrnssNavMessageContentParser;
                    Debug.Assert(irnssParser != null, "temp != null");
                    yield return(irnssParser.ParseImpl <IrnssNavMessage>());

                    break;

                case SatelliteSystem.Sbas:
                    var sbasParser = _parserMap[satelliteSystem] as SbasNavMessageContentParser;
                    Debug.Assert(sbasParser != null, "temp != null");
                    yield return(sbasParser.ParseImpl <SbasNavMessage>());

                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }