// GPGLL  - Geographic Position - Latitude longitude
        // GPRMC  - Recommended Minimum Specific GNSS Sentence
        // GPVTG  - Course over Ground and Ground Speed
        // GPGGA  - GPS Fix Data
        // GPGSA  - GNSS DOPS and Active Satellites
        // GPGSV  - GNSS Satellites in View

        /// <summary>
        /// DispatchSentnce
        /// Sends sentence to a parser based on sentence type
        /// </summary>
        /// <param name="sentence"></param>
        private void DispatchSentence(string sentence)
        {
            if (IsValid(sentence))
            {
                string sentenceType = sentence.Substring(1, 5);
                switch (sentenceType)
                {
                case "GPRMC":
                    RMC = new GPSRMC(sentence.Substring(sentence.IndexOf(',') + 1));
                    OnRMCEvent(RMC);
                    break;

                case "GPGGA":
                    GGA = new GPSGGA(sentence.Substring(sentence.IndexOf(',') + 1));
                    OnGGAEvent(GGA);
                    break;

                case "GPGLL":
                    GLL = new GPSGLL(sentence.Substring(sentence.IndexOf(',') + 1));
                    OnGLLEvent(GLL);
                    break;

                case "GPVTG":
                    VTG = new GPSVTG(sentence.Substring(sentence.IndexOf(',') + 1));
                    OnVTGEvent(VTG);
                    break;

                case "GPGSA":
                    GSA = new GPSGSA(sentence.Substring(sentence.IndexOf(',') + 1));
                    OnGSAEvent(GSA);
                    break;

                case "GPGSV":
                    GSV = new GPSGSV(sentence.Substring(sentence.IndexOf(',') + 1));
                    OnGSVEvent(GSV);
                    break;

                default:
                    break;
                }
            }
        }
 protected virtual void OnGSAEvent(GPSGSA e)
 {
     GSAEvent(this, e);
 }