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); }