public void OnTelemetryNotification(int vehicleId, List <Telemetry> telemetryList)
        {
            if (_vehiclesManager.SelectedVehicle.Id != vehicleId)
            {
                return;
            }

            var knownTelemetry = telemetryList.Where(t => Array.IndexOf(_knownCodes, t.TelemetryField.Code) != -1).ToArray();

            if (knownTelemetry.Length == 0)
            {
                return;
            }

            var telemetryDto = new LocationTelemetryDto(vehicleId);

            foreach (var telemetry in knownTelemetry)
            {
                var telemetryValue = telemetry.Value;
                if (telemetryValue == null)
                {
                    continue;
                }
                var value = telemetryValue.DoubleValueSpecified ? telemetryValue.DoubleValue : telemetryValue.FloatValue;

                switch (telemetry.TelemetryField.Code)
                {
                case ALT_AMSL_TELE_FIELD_CODE:
                    telemetryDto.Altitude = value;
                    break;

                case LAT_TELE_FIELD_CODE:
                    telemetryDto.Latitude = value;
                    break;

                case LON_TELE_FIELD_CODE:
                    telemetryDto.Longitude = value;
                    break;
                }
            }
            onLocationTelemetryChanged(telemetryDto);
        }
 private void onLocationTelemetryChanged(LocationTelemetryDto telemetryDto)
 {
     LocationTelemetryChanged?.Invoke(this, telemetryDto);
 }