From 7d2a1e4ba02e393c00602a7004690b89c1ee0390 Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Thu, 3 Oct 2024 17:05:49 +0200 Subject: [PATCH] fix (AndroidFileDownloader.java, IOSFileDownloader.swift): if the file-downloading operation fails to commence we now return error code .FAILED__ERROR_UPON_COMMENCING / .failedErrorUponCommencing (old was: .errorInvalidSettings which wasn't accurate) --- .../AndroidFileDownloader.java | 28 +++++++++---------- .../EAndroidFileDownloaderVerdict.java | 3 +- ...FileDownloadingInitializationVerdict.swift | 3 +- .../McuMgrBindingsiOS/IOSFileDownloader.swift | 2 +- .../Droid/FileDownloader/FileDownloader.cs | 7 ++++- .../Contracts/Enums/EFileDownloaderVerdict.cs | 3 +- .../iOS/FileDownloader/FileDownloader.cs | 5 ++++ 7 files changed, 32 insertions(+), 19 deletions(-) diff --git a/Laerdal.McuMgr.Bindings.Android.Native/mcumgr-laerdal-wrapper/src/main/java/no/laerdal/mcumgr_laerdal_wrapper/AndroidFileDownloader.java b/Laerdal.McuMgr.Bindings.Android.Native/mcumgr-laerdal-wrapper/src/main/java/no/laerdal/mcumgr_laerdal_wrapper/AndroidFileDownloader.java index 465ca8a3..a6fd0239 100644 --- a/Laerdal.McuMgr.Bindings.Android.Native/mcumgr-laerdal-wrapper/src/main/java/no/laerdal/mcumgr_laerdal_wrapper/AndroidFileDownloader.java +++ b/Laerdal.McuMgr.Bindings.Android.Native/mcumgr-laerdal-wrapper/src/main/java/no/laerdal/mcumgr_laerdal_wrapper/AndroidFileDownloader.java @@ -81,25 +81,25 @@ public EAndroidFileDownloaderVerdict beginDownload( return EAndroidFileDownloaderVerdict.FAILED__INVALID_SETTINGS; } - try + if (initialMtuSize > 0) { - if (initialMtuSize > 0) - { - _transport.setInitialMtu(initialMtuSize); - } + _transport.setInitialMtu(initialMtuSize); + } - _fileSystemManager = new FsManager(_transport); + _fileSystemManager = new FsManager(_transport); - setLoggingEnabled(false); - requestHighConnectionPriority(); + setLoggingEnabled(false); + requestHighConnectionPriority(); - setState(EAndroidFileDownloaderState.IDLE); - busyStateChangedAdvertisement(true); - fileDownloadProgressPercentageAndDataThroughputChangedAdvertisement(0, 0); + setState(EAndroidFileDownloaderState.IDLE); + busyStateChangedAdvertisement(true); + fileDownloadProgressPercentageAndDataThroughputChangedAdvertisement(0, 0); - _initialBytes = 0; + _initialBytes = 0; + _remoteFilePathSanitized = remoteFilePathSanitized; - _remoteFilePathSanitized = remoteFilePathSanitized; + try + { _downloadingController = _fileSystemManager.fileDownload(remoteFilePathSanitized, new FileDownloaderCallbackProxy()); } catch (final Exception ex) @@ -107,7 +107,7 @@ public EAndroidFileDownloaderVerdict beginDownload( setState(EAndroidFileDownloaderState.ERROR); fatalErrorOccurredAdvertisement(_remoteFilePathSanitized, ex.getMessage()); - return EAndroidFileDownloaderVerdict.FAILED__INVALID_SETTINGS; + return EAndroidFileDownloaderVerdict.FAILED__ERROR_UPON_COMMENCING; } return EAndroidFileDownloaderVerdict.SUCCESS; diff --git a/Laerdal.McuMgr.Bindings.Android.Native/mcumgr-laerdal-wrapper/src/main/java/no/laerdal/mcumgr_laerdal_wrapper/EAndroidFileDownloaderVerdict.java b/Laerdal.McuMgr.Bindings.Android.Native/mcumgr-laerdal-wrapper/src/main/java/no/laerdal/mcumgr_laerdal_wrapper/EAndroidFileDownloaderVerdict.java index 69256fa3..423e388a 100644 --- a/Laerdal.McuMgr.Bindings.Android.Native/mcumgr-laerdal-wrapper/src/main/java/no/laerdal/mcumgr_laerdal_wrapper/EAndroidFileDownloaderVerdict.java +++ b/Laerdal.McuMgr.Bindings.Android.Native/mcumgr-laerdal-wrapper/src/main/java/no/laerdal/mcumgr_laerdal_wrapper/EAndroidFileDownloaderVerdict.java @@ -4,7 +4,8 @@ public enum EAndroidFileDownloaderVerdict //this must mirror the enum values of { SUCCESS(0), FAILED__INVALID_SETTINGS(1), - FAILED__DOWNLOAD_ALREADY_IN_PROGRESS(2); + FAILED__ERROR_UPON_COMMENCING(2), + FAILED__DOWNLOAD_ALREADY_IN_PROGRESS(3); @SuppressWarnings({"FieldCanBeLocal", "unused"}) private final int _value; diff --git a/Laerdal.McuMgr.Bindings.MacCatalystAndIos.Native/McuMgrBindingsiOS/McuMgrBindingsiOS/EIOSFileDownloadingInitializationVerdict.swift b/Laerdal.McuMgr.Bindings.MacCatalystAndIos.Native/McuMgrBindingsiOS/McuMgrBindingsiOS/EIOSFileDownloadingInitializationVerdict.swift index 422a03d4..1f2a2013 100644 --- a/Laerdal.McuMgr.Bindings.MacCatalystAndIos.Native/McuMgrBindingsiOS/McuMgrBindingsiOS/EIOSFileDownloadingInitializationVerdict.swift +++ b/Laerdal.McuMgr.Bindings.MacCatalystAndIos.Native/McuMgrBindingsiOS/McuMgrBindingsiOS/EIOSFileDownloadingInitializationVerdict.swift @@ -2,5 +2,6 @@ public enum EIOSFileDownloadingInitializationVerdict: Int { case success = 0 case failedInvalidSettings = 1 - case failedDownloadAlreadyInProgress = 2 + case failedErrorUponCommencing = 2 + case failedDownloadAlreadyInProgress = 3 } diff --git a/Laerdal.McuMgr.Bindings.MacCatalystAndIos.Native/McuMgrBindingsiOS/McuMgrBindingsiOS/IOSFileDownloader.swift b/Laerdal.McuMgr.Bindings.MacCatalystAndIos.Native/McuMgrBindingsiOS/McuMgrBindingsiOS/IOSFileDownloader.swift index 49555c18..cc207b47 100644 --- a/Laerdal.McuMgr.Bindings.MacCatalystAndIos.Native/McuMgrBindingsiOS/McuMgrBindingsiOS/IOSFileDownloader.swift +++ b/Laerdal.McuMgr.Bindings.MacCatalystAndIos.Native/McuMgrBindingsiOS/McuMgrBindingsiOS/IOSFileDownloader.swift @@ -69,7 +69,7 @@ public class IOSFileDownloader: NSObject { setState(EIOSFileDownloaderState.error) fatalErrorOccurredAdvertisement(_remoteFilePathSanitized, "Failed to commence file-Downloading (check logs for details)") - return EIOSFileDownloadingInitializationVerdict.failedInvalidSettings + return EIOSFileDownloadingInitializationVerdict.failedErrorUponCommencing } return EIOSFileDownloadingInitializationVerdict.success diff --git a/Laerdal.McuMgr/Droid/FileDownloader/FileDownloader.cs b/Laerdal.McuMgr/Droid/FileDownloader/FileDownloader.cs index dc19ba9b..6be5ff28 100644 --- a/Laerdal.McuMgr/Droid/FileDownloader/FileDownloader.cs +++ b/Laerdal.McuMgr/Droid/FileDownloader/FileDownloader.cs @@ -201,7 +201,12 @@ static private EFileDownloaderVerdict TranslateFileDownloaderVerdict(EAndroidFil { return EFileDownloaderVerdict.FailedInvalidSettings; } - + + if (verdict == EAndroidFileDownloaderVerdict.FailedErrorUponCommencing) + { + return EFileDownloaderVerdict.FailedErrorUponCommencing; + } + if (verdict == EAndroidFileDownloaderVerdict.FailedDownloadAlreadyInProgress) { return EFileDownloaderVerdict.FailedDownloadAlreadyInProgress; diff --git a/Laerdal.McuMgr/Shared/FileDownloader/Contracts/Enums/EFileDownloaderVerdict.cs b/Laerdal.McuMgr/Shared/FileDownloader/Contracts/Enums/EFileDownloaderVerdict.cs index fd7bfcfe..67406846 100644 --- a/Laerdal.McuMgr/Shared/FileDownloader/Contracts/Enums/EFileDownloaderVerdict.cs +++ b/Laerdal.McuMgr/Shared/FileDownloader/Contracts/Enums/EFileDownloaderVerdict.cs @@ -7,6 +7,7 @@ public enum EFileDownloaderVerdict //this must mirror the java enum values of E[ { Success = 0, FailedInvalidSettings = 1, - FailedDownloadAlreadyInProgress = 2, + FailedErrorUponCommencing = 2, + FailedDownloadAlreadyInProgress = 3, } } \ No newline at end of file diff --git a/Laerdal.McuMgr/iOS/FileDownloader/FileDownloader.cs b/Laerdal.McuMgr/iOS/FileDownloader/FileDownloader.cs index 0ae35b87..f7e2bc46 100644 --- a/Laerdal.McuMgr/iOS/FileDownloader/FileDownloader.cs +++ b/Laerdal.McuMgr/iOS/FileDownloader/FileDownloader.cs @@ -184,6 +184,11 @@ static private EFileDownloaderVerdict TranslateFileDownloaderVerdict(EIOSFileDow { return EFileDownloaderVerdict.FailedInvalidSettings; } + + if (verdict == EIOSFileDownloadingInitializationVerdict.FailedErrorUponCommencing) + { + return EFileDownloaderVerdict.FailedErrorUponCommencing; + } if (verdict == EIOSFileDownloadingInitializationVerdict.FailedDownloadAlreadyInProgress) {