From 6a1ad7803171dfdd792d3c1aa67e1c6be88ad889 Mon Sep 17 00:00:00 2001 From: Doug Slater Date: Sun, 11 May 2025 21:25:13 -0400 Subject: [PATCH] Fix broken merge when timestamps not available or contiguous. --- Directory.Build.props | 4 ++-- Infrastructure/FitEdit.Adapters.Fit/Decode.cs | 2 +- Infrastructure/FitEdit.Adapters.Fit/FitConfig.cs | 2 +- Infrastructure/FitEdit.Data/Fit/FitFileExtensions.cs | 6 ++---- Ui/FitEdit.Ui.iOS/Info.plist | 2 +- 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 683287d9..5acaee21 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -9,8 +9,8 @@ disable latest - 5.10.0 - 50 + 5.10.1 + 51 FitEdit EnduraByte LLC 2024 diff --git a/Infrastructure/FitEdit.Adapters.Fit/Decode.cs b/Infrastructure/FitEdit.Adapters.Fit/Decode.cs index e9de1692..0805a28e 100644 --- a/Infrastructure/FitEdit.Adapters.Fit/Decode.cs +++ b/Infrastructure/FitEdit.Adapters.Fit/Decode.cs @@ -415,7 +415,7 @@ private void ReadDataMesg(Stream fitStream, BinaryReader br, long sourceIndex, b if (timeTraveled) { - var dt = new RecordMesg(mesg).GetTimestamp().GetDateTime(); + var dt = new RecordMesg(mesg).GetTimestamp()?.GetDateTime(); Log.Warn($"Discarding suspicious message at {dt} with timestamp change of {diff}s"); Log.Debug($"Source data: {string.Join(" ", mesg.SourceData?.Select(b => $"{b:X2}") ?? new List())}"); return; diff --git a/Infrastructure/FitEdit.Adapters.Fit/FitConfig.cs b/Infrastructure/FitEdit.Adapters.Fit/FitConfig.cs index 47b26876..a2dfc860 100644 --- a/Infrastructure/FitEdit.Adapters.Fit/FitConfig.cs +++ b/Infrastructure/FitEdit.Adapters.Fit/FitConfig.cs @@ -22,7 +22,7 @@ public class DataMessages public static bool OfLargeSize { get; set; } = false; public static bool WithLargeLatitudeChange { get; set; } = true; public static bool WithLargeLongitudeChange { get; set; } = true; - public static bool WithLargeTimestampChange { get; set; } = true; + public static bool WithLargeTimestampChange { get; set; } = false; /// /// Ignore any FileId message other than the first or any FileId message that is not at the beginning of the file. diff --git a/Infrastructure/FitEdit.Data/Fit/FitFileExtensions.cs b/Infrastructure/FitEdit.Data/Fit/FitFileExtensions.cs index 1e6126ad..3bfbfc3e 100644 --- a/Infrastructure/FitEdit.Data/Fit/FitFileExtensions.cs +++ b/Infrastructure/FitEdit.Data/Fit/FitFileExtensions.cs @@ -358,15 +358,13 @@ public static FitFile ApplySpeeds(this FitFile fitFile, Dictionary l merged.Append(file); } - var activityMesg = merged.FindFirst(); - DateTime firstActivityTime = activityMesg?.GetTimestamp().GetDateTime() ?? default; - + merged.BackfillEvents(); + merged.RemoveNonfirst(typeof(FileIdMesg)); merged.RemoveNonfirst(typeof(FileCreatorMesg)); merged.RemoveNonfirst(typeof(DeviceSettingsMesg)); merged.RemoveNonfirst(typeof(UserProfileMesg)); merged.RemoveNonfirst(typeof(ActivityMesg)); - merged.RemoveAll(typeof(DeviceInfoMesg), after: firstActivityTime); return merged; } diff --git a/Ui/FitEdit.Ui.iOS/Info.plist b/Ui/FitEdit.Ui.iOS/Info.plist index ea3a4ad5..a2107b00 100644 --- a/Ui/FitEdit.Ui.iOS/Info.plist +++ b/Ui/FitEdit.Ui.iOS/Info.plist @@ -57,6 +57,6 @@ CFBundleVersion - 50 + 51 \ No newline at end of file