diff --git a/Source/Managers/DFU/FirmwareUpgradeManager.swift b/Source/Managers/DFU/FirmwareUpgradeManager.swift index 7106879..aaee93f 100644 --- a/Source/Managers/DFU/FirmwareUpgradeManager.swift +++ b/Source/Managers/DFU/FirmwareUpgradeManager.swift @@ -379,7 +379,7 @@ public class FirmwareUpgradeManager: FirmwareUpgradeController, ConnectionObserv private lazy var mcuManagerParametersCallback: McuMgrCallback = { [weak self] response, error in guard let self = self else { return } - guard error == nil, let response, response.rc != .unsupported else { + guard error == nil, let response, response.rc.isSupported() else { self.log(msg: "Mcu Manager parameters not supported", atLevel: .warning) self.bootloaderInfo() // Continue to Bootloader Info. return @@ -400,7 +400,7 @@ public class FirmwareUpgradeManager: FirmwareUpgradeController, ConnectionObserv private lazy var bootloaderInfoCallback: McuMgrCallback = { [weak self] response, error in guard let self else { return } - guard error == nil, let response, response.rc != .unsupported else { + guard error == nil, let response, response.rc.isSupported() else { self.log(msg: "Bootloader Info not supported.", atLevel: .warning) self.log(msg: "Assuming MCUBoot Bootloader.", atLevel: .debug) self.bootloader = .mcuboot @@ -427,7 +427,7 @@ public class FirmwareUpgradeManager: FirmwareUpgradeController, ConnectionObserv private lazy var bootloaderModeCallback: McuMgrCallback = { [weak self] response, error in guard let self else { return } - guard error == nil, let response, response.rc != .unsupported else { + guard error == nil, let response, response.rc.isSupported() else { self.log(msg: "Bootloader Mode not supported", atLevel: .warning) self.validate() // Continue Upload return diff --git a/Source/Managers/SuitManager.swift b/Source/Managers/SuitManager.swift index 7814ed6..57a1a0c 100644 --- a/Source/Managers/SuitManager.swift +++ b/Source/Managers/SuitManager.swift @@ -121,7 +121,7 @@ public class SuitManager: McuManager { private lazy var listManifestCallback: McuMgrCallback = { [weak self] response, error in guard let self else { return } - guard error == nil, let response, response.rc != .unsupported else { + guard error == nil, let response, response.rc.isSupported() else { self.logDelegate?.log("List Manifest Callback not Supported.", ofCategory: .suit, atLevel: .error) self.callback?(nil, error) return @@ -141,7 +141,7 @@ public class SuitManager: McuManager { private lazy var roleStateCallback: McuMgrCallback = { [weak self] response, error in guard let self else { return } - guard error == nil, let response, response.rc != .unsupported else { + guard error == nil, let response, response.rc.isSupported() else { self.logDelegate?.log("List Manifest Callback not Supported.", ofCategory: .suit, atLevel: .error) return } @@ -297,8 +297,8 @@ public class SuitManager: McuManager { } if let response { - guard response.rc != .unsupported else { - // Not supported, so either no polling or device restarted. + guard response.rc.isSupported() else { + // Not supported, so either no polling, or device restarted. // It means success / continue. self.uploadDelegate?.uploadDidFinish() return diff --git a/Source/McuManager.swift b/Source/McuManager.swift index 7cd0876..ec6ea66 100644 --- a/Source/McuManager.swift +++ b/Source/McuManager.swift @@ -468,6 +468,15 @@ public enum McuMgrReturnCode: UInt64, Error { return self == .ok } + public func isSupported() -> Bool { + switch self { + case .unsupported, .unsupportedTooOld, .unsupportedTooNew: + return false + default: + return true + } + } + public func isError() -> Bool { return self != .ok }