private void GPSA_BurstReceived(GpsAccess.NmeaBurst b)
        {
            if (logging)
            {
                if (logged == 0)
                {
                    b.CalcZone(_currmeta.Zone);

                    if (TtUtils.FilterBurst(b, Values.Settings.DeviceOptions.Filter_WALK_FixType,
                        Values.Settings.DeviceOptions.Filter_WALK_DOP_TYPE,
                        Values.Settings.DeviceOptions.Filter_WALK_DOP_VALUE))
                    {
                        if (Values.Settings.DeviceOptions.Filter_Accuracy > 0)
                        {
                            if (CurrentNmea == null || TtUtils.BurstDistance(CurrentNmea, b) > Values.Settings.DeviceOptions.Filter_Accuracy)
                            {
                                CreateWalkPoint(b);
                            }
                            else
                            {
                                logged--;   //try again next point
                            }
                        }
                        else
                        {
                            CreateWalkPoint(b);
                        }
                    }
                    else
                    {
                        logged--;   //try again next point
                    }
                }

                if (logged >= Values.Settings.DeviceOptions.Filter_Frequency)
                    logged = 0;
                else
                    logged++;
            }
        }
        private void GPSA_BurstReceived(GpsAccess.NmeaBurst b)
        {
            if (checkMeta && b.IsValid)
            {
                if (b.CalcRealZone() != CurrMeta.Zone)
                {
                    MessageBox.Show("The current UTM zone does not match the set metadata zone.",
                        "Zone mismatch", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }

                checkMeta = false;
            }

            if (logging)
            {
                if (logged < Values.Settings.DeviceOptions.Take5NmeaAmount &&
                    (Values.Settings.DeviceOptions.IgnoreFirst ?
                        (Values.Settings.DeviceOptions.IgnoreFirstX - 1 < ignore) : true))
                {
                    b.CalcZone(CurrMeta.Zone);

                    if (TtUtils.FilterBurst(b, Values.Settings.DeviceOptions.Filter_T5_FixType,
                        Values.Settings.DeviceOptions.Filter_T5_DOP_TYPE,
                        Values.Settings.DeviceOptions.Filter_T5_DOP_VALUE))
                    {
                        b._Used = true;
                        logged++;
                    }
                    else
                    {
                        b._Used = false;
                    }

                    CurrentNmea.Add(b);

                    this.GuiInvoke(()=> { progCapture.Value = logged; });

                    if (logged == Values.Settings.DeviceOptions.Take5NmeaAmount)
                    {
                        logging = false;
                        gpsInfoAdvCtrl.UtmRange = false;
                        CreateNewTake5Point();
                    }

                    if (Values.Settings.DeviceOptions.Take5FailTrigger &&
                        CurrentNmea.Count == Values.Settings.DeviceOptions.Take5NmeaAmount +
                            Values.Settings.DeviceOptions.Take5FailTriggerAmount)
                    {
                        logging = false;
                        gpsInfoAdvCtrl.UtmRange = false;

                        foreach (NmeaBurst burst in CurrentNmea)
                        {
                            burst._Used = true;
                        }

                        CreateNewTake5Point();
                    }
                }
                else
                    ignore++;
            }
        }