From 0f2550c726cd1a3fb651ba70bf806afb34749a0a Mon Sep 17 00:00:00 2001 From: Keegan Currie Date: Thu, 15 Aug 2024 09:45:23 -0500 Subject: [PATCH 1/4] Ios dfu resume --- index.d.ts | 2 ++ index.js | 3 +++ ios/RNNordicDfu.m | 3 +++ 3 files changed, 8 insertions(+) diff --git a/index.d.ts b/index.d.ts index a7f4b3d..9176f9e 100644 --- a/index.d.ts +++ b/index.d.ts @@ -6,6 +6,7 @@ declare module "react-native-nordic-dfu" { filePath, alternativeAdvertisingNameEnabled, packetReceiptNotificationParameter, + disableDfuResume, retries, maxMtu, }: { @@ -14,6 +15,7 @@ declare module "react-native-nordic-dfu" { filePath: string | null; alternativeAdvertisingNameEnabled?: boolean; packetReceiptNotificationParameter?: number; + disableDfuResume?: boolean; retries?: number; maxMtu?: number; }): Promise; diff --git a/index.js b/index.js index 3ad12b9..aae844b 100644 --- a/index.js +++ b/index.js @@ -26,6 +26,7 @@ function rejectPromise(message) { * @param {string} obj.filePath The file system path to the zip-file used for updating * @param {Boolean} obj.alternativeAdvertisingNameEnabled Send unique name to device before it is switched into bootloader mode (iOS only) * @param {number} obj.packetReceiptNotificationParameter set number of packets of firmware data to be received by the DFU target before sending a new Packet Receipt Notification + * @param {boolean} obj.disableDfuResume Disable resuming of an interrupted DFU process * @returns {Promise} A promise that resolves or rejects with the `deviceAddress` in the return value * * @example @@ -45,6 +46,7 @@ function startDFU({ filePath, alternativeAdvertisingNameEnabled = true, //iOS only packetReceiptNotificationParameter = 12, + disableDfuResume = true, retries = 3, // Android only maxMtu = 23, // Android only }) { @@ -61,6 +63,7 @@ function startDFU({ deviceName, filePath, packetReceiptNotificationParameter, + disableDfuResume, alternativeAdvertisingNameEnabled ); } else if (Platform.OS === "android") { diff --git a/ios/RNNordicDfu.m b/ios/RNNordicDfu.m index e56f5b7..90b95ff 100644 --- a/ios/RNNordicDfu.m +++ b/ios/RNNordicDfu.m @@ -187,6 +187,7 @@ - (void)logWith:(enum LogLevel)level message:(NSString * _Nonnull)message filePath:(NSString *)filePath packetReceiptNotificationParameter:(NSInteger *)packetReceiptNotificationParameter alternativeAdvertisingNameEnabled:(BOOL *)alternativeAdvertisingNameEnabled + disableDfuResume:(BOOL *)disableDfuResume resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { @@ -243,6 +244,8 @@ - (void)logWith:(enum LogLevel)level message:(NSString * _Nonnull)message initiator.packetReceiptNotificationParameter = packetReceiptNotificationParameter; initiator.alternativeAdvertisingNameEnabled = alternativeAdvertisingNameEnabled; + initiator.disableResume = disableDfuResume + // Change for iOS 13 initiator.packetReceiptNotificationParameter = 1; //Rate limit the DFU using PRN. [NSThread sleepForTimeInterval: 2]; //Work around for being stuck in iOS 13 From 9128fe8a246a5fdcccd6f12964b44882e7b41820 Mon Sep 17 00:00:00 2001 From: Keegan Currie Date: Thu, 15 Aug 2024 11:17:04 -0500 Subject: [PATCH 2/4] Update RNNordicDfu.m --- ios/RNNordicDfu.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RNNordicDfu.m b/ios/RNNordicDfu.m index 90b95ff..313e34f 100644 --- a/ios/RNNordicDfu.m +++ b/ios/RNNordicDfu.m @@ -244,7 +244,7 @@ - (void)logWith:(enum LogLevel)level message:(NSString * _Nonnull)message initiator.packetReceiptNotificationParameter = packetReceiptNotificationParameter; initiator.alternativeAdvertisingNameEnabled = alternativeAdvertisingNameEnabled; - initiator.disableResume = disableDfuResume + initiator.disableResume = disableDfuResume; // Change for iOS 13 initiator.packetReceiptNotificationParameter = 1; //Rate limit the DFU using PRN. From ee7e4f70b356e5de3c2625b652ef95ce2013a1b0 Mon Sep 17 00:00:00 2001 From: Keegan Currie Date: Thu, 15 Aug 2024 12:10:48 -0500 Subject: [PATCH 3/4] Update RNNordicDfuModule.java --- .../src/main/java/com/pilloxa/dfu/RNNordicDfuModule.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/android/src/main/java/com/pilloxa/dfu/RNNordicDfuModule.java b/android/src/main/java/com/pilloxa/dfu/RNNordicDfuModule.java index 39a0347..35ae412 100644 --- a/android/src/main/java/com/pilloxa/dfu/RNNordicDfuModule.java +++ b/android/src/main/java/com/pilloxa/dfu/RNNordicDfuModule.java @@ -45,6 +45,12 @@ public void startDFU(String address, String name, String filePath, int packetRec int mtu = options.getInt("maxMtu"); starter.setMtu(mtu); } + + if(options.hasKey("disableResume")) { + boolean disableResume = options.getBoolean("disableResume"); + starter.setDisableResume(disableResume); + } + if (name != null) { starter.setDeviceName(name); } From ed97ee3b7ef331f6fe8fe4f4e0e477082428de69 Mon Sep 17 00:00:00 2001 From: Keegan Currie Date: Thu, 15 Aug 2024 12:22:53 -0500 Subject: [PATCH 4/4] Update RNNordicDfuModule.java --- android/src/main/java/com/pilloxa/dfu/RNNordicDfuModule.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/pilloxa/dfu/RNNordicDfuModule.java b/android/src/main/java/com/pilloxa/dfu/RNNordicDfuModule.java index 35ae412..cf3dfa3 100644 --- a/android/src/main/java/com/pilloxa/dfu/RNNordicDfuModule.java +++ b/android/src/main/java/com/pilloxa/dfu/RNNordicDfuModule.java @@ -48,7 +48,9 @@ public void startDFU(String address, String name, String filePath, int packetRec if(options.hasKey("disableResume")) { boolean disableResume = options.getBoolean("disableResume"); - starter.setDisableResume(disableResume); + if(disableResume){ + starter.disableResume(); + } } if (name != null) {