Version 1.9.0

This commit is contained in:
Aleksander Nowakowski 2019-02-20 13:16:07 +01:00
parent 8e2681fdff
commit e749cecf53
4 changed files with 52 additions and 23 deletions

View File

@ -4,7 +4,14 @@
### Usage ### Usage
The compat library may be found on jcenter and Maven Central repository. Add it to your project by adding the following dependency: The DFU library may be found on jcenter and Maven Central repository. Add it to your project by
adding the following dependency:
```Groovy
implementation 'no.nordicsemi.android:dfu:1.9.0'
```
For projects not migrated to Android Jetpack, use:
```Groovy ```Groovy
implementation 'no.nordicsemi.android:dfu:1.8.1' implementation 'no.nordicsemi.android:dfu:1.8.1'
@ -13,18 +20,28 @@ implementation 'no.nordicsemi.android:dfu:1.8.1'
If you use proguard, add the following line to your proguard rules: If you use proguard, add the following line to your proguard rules:
```-keep class no.nordicsemi.android.dfu.** { *; }``` ```-keep class no.nordicsemi.android.dfu.** { *; }```
Starting from version 1.9.0 the library is able to retry a DFU update in case of an unwanted
disconnection. However, to maintain backward compatibility, this feature is by default disabled.
Call `initiator.setNumberOfRetries(int)` to set how many attempts the service should perform.
Secure DFU will be resumed after it has been interrupted from the point it stopped, while the
Legacy DFU will start again.
### Device Firmware Update (DFU) ### Device Firmware Update (DFU)
The nRF5x Series chips are flash-based SoCs, and as such they represent the most flexible solution available. A key feature of the nRF5x Series and their associated software architecture The nRF5x Series chips are flash-based SoCs, and as such they represent the most flexible solution available.
and S-Series SoftDevices is the possibility for Over-The-Air Device Firmware Upgrade (OTA-DFU). See Figure 1. OTA-DFU allows firmware upgrades to be issued and downloaded to products A key feature of the nRF5x Series and their associated software architecture and S-Series SoftDevices
in the field via the cloud and so enables OEMs to fix bugs and introduce new features to products that are already out on the market. is the possibility for Over-The-Air Device Firmware Upgrade (OTA-DFU). See Figure 1.
OTA-DFU allows firmware upgrades to be issued and downloaded to products in the field via the cloud
and so enables OEMs to fix bugs and introduce new features to products that are already out on the market.
This brings added security and flexibility to product development when using the nRF5x Series SoCs. This brings added security and flexibility to product development when using the nRF5x Series SoCs.
![Device Firmware Update](resources/dfu.png) ![Device Firmware Update](resources/dfu.png)
This repository contains a tested library for Android 4.3+ platform which may be used to perform Device Firmware Update on the nRF5x device using a phone or a tablet. This repository contains a tested library for Android 4.3+ platform which may be used to perform
Device Firmware Update on the nRF5x device using a phone or a tablet.
DFU library has been designed to make it very easy to include these devices into your application. It is compatible with all Bootloader/DFU versions. DFU library has been designed to make it very easy to include these devices into your application.
It is compatible with all Bootloader/DFU versions.
[![Alt text for your video](http://img.youtube.com/vi/LdY2m_bZTgE/0.jpg)](http://youtu.be/LdY2m_bZTgE) [![Alt text for your video](http://img.youtube.com/vi/LdY2m_bZTgE/0.jpg)](http://youtu.be/LdY2m_bZTgE)
@ -34,38 +51,50 @@ See the [documentation](documentation) for more information.
### Requirements ### Requirements
The library is compatible with nRF51 and nRF52 devices with S-Series Soft Device and the DFU Bootloader flashed on. The library is compatible with nRF51 and nRF52 devices with S-Series Soft Device and the
DFU Bootloader flashed on.
### DFU History ### DFU History
#### Legacy DFU #### Legacy DFU
* **SDK 4.3.0** - First version of DFU over Bluetooth Smart. DFU supports Application update. * **SDK 4.3.0** - First version of DFU over Bluetooth Smart. DFU supports Application update.
* **SDK 6.1.0** - DFU Bootloader supports Soft Device and Bootloader update. As the updated Bootloader may be dependent on the new Soft Device, those two may be sent and installed together. * **SDK 6.1.0** - DFU Bootloader supports Soft Device and Bootloader update. As the updated
Bootloader may be dependent on the new Soft Device, those two may be sent and
installed together.
- Buttonless update support for non-bonded devices. - Buttonless update support for non-bonded devices.
* **SDK 7.0.0** - The extended init packet is required. The init packet contains additional validation information: device type and revision, application version, compatible Soft Devices and the firmware CRC. * **SDK 7.0.0** - The extended init packet is required. The init packet contains additional
* **SDK 8.0.0** - The bond information may be preserved after an application update. The new application, when first started, will send the Service Change indication to the phone to refresh the services. validation information: device type and revision, application version, compatible
Soft Devices and the firmware CRC.
* **SDK 8.0.0** - The bond information may be preserved after an application update.
The new application, when first started, will send the Service Change indication
to the phone to refresh the services.
- Buttonless update support for bonded devices - Buttonless update support for bonded devices
- sharing the LTK between an app and the bootloader. - sharing the LTK between an app and the bootloader.
#### Secure DFU #### Secure DFU
* **SDK 12.0.0** - New Secure DFU has been released. Buttonless service is experimental. * **SDK 12.0.0** - New Secure DFU has been released. Buttonless service is experimental.
* **SDK 13.0.0** - Buttonless DFU (still experimental) uses different UUIDs. No bond sharing supported. Bootloader will use address +1. * **SDK 13.0.0** - Buttonless DFU (still experimental) uses different UUIDs. No bond sharing
* **SDK 14.0.0** - Buttonless DFU is no longer experimental. A new UUID (0004) added for bonded only devices (previous one (0003) is for non-bonded only). supported. Bootloader will use address +1.
* **SDK 14.0.0** - Buttonless DFU is no longer experimental. A new UUID (0004) added for bonded
only devices (previous one (0003) is for non-bonded only).
* **SDK 15.0.0** - Support for higher MTUs added. * **SDK 15.0.0** - Support for higher MTUs added.
This library is fully backwards compatible and supports both the new and legacy DFU. This library is fully backwards compatible and supports both the new and legacy DFU.
The experimental buttonless DFU service from SDK 12 is supported since version 1.1.0. Due to the fact, that this experimental service from SDK 12 is not safe, The experimental buttonless DFU service from SDK 12 is supported since version 1.1.0.
you have to call [starter.setUnsafeExperimentalButtonlessServiceInSecureDfuEnabled(true)](https://github.com/NordicSemiconductor/Android-DFU-Library/blob/release/dfu/src/main/java/no/nordicsemi/android/dfu/DfuServiceInitiator.java#L376) Due to the fact, that this experimental service from SDK 12 is not safe, you have to call
to enable it. Read the method documentation for details. It is recommended to use the Buttonless service from SDK 13 (for non-bonded devices, or 14 for bonded). [starter.setUnsafeExperimentalButtonlessServiceInSecureDfuEnabled(true)](https://github.com/NordicSemiconductor/Android-DFU-Library/blob/release/dfu/src/main/java/no/nordicsemi/android/dfu/DfuServiceInitiator.java#L376)
to enable it. Read the method documentation for details. It is recommended to use the Buttonless
service from SDK 13 (for non-bonded devices, or 14 for bonded).
Both are supported since DFU Library 1.3.0. Both are supported since DFU Library 1.3.0.
Check platform folders for mode details about compatibility for each library. Check platform folders for mode details about compatibility for each library.
### React Native ### React Native
A library for both iOS and Android that is based on this library is available for React Native: [react-native-nordic-dfu](https://github.com/Pilloxa/react-native-nordic-dfu) A library for both iOS and Android that is based on this library is available for React Native:
[react-native-nordic-dfu](https://github.com/Pilloxa/react-native-nordic-dfu)
### Resources ### Resources

View File

@ -6,7 +6,7 @@ buildscript {
google() google()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.2.1' classpath 'com.android.tools.build:gradle:3.3.1'
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4" classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4"
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'

View File

@ -15,7 +15,7 @@ apply plugin: 'com.jfrog.bintray'
ext { ext {
PUBLISH_GROUP_ID = 'no.nordicsemi.android' PUBLISH_GROUP_ID = 'no.nordicsemi.android'
PUBLISH_ARTIFACT_ID = 'dfu' PUBLISH_ARTIFACT_ID = 'dfu'
PUBLISH_VERSION = '1.8.1' PUBLISH_VERSION = '1.9.0'
bintrayRepo = 'android' bintrayRepo = 'android'
bintrayName = 'dfu-library' bintrayName = 'dfu-library'
@ -45,8 +45,8 @@ android {
defaultConfig { defaultConfig {
minSdkVersion 18 minSdkVersion 18
targetSdkVersion 28 targetSdkVersion 28
versionCode 22 versionCode 23
versionName "1.8.1" versionName "1.9.0"
} }
buildTypes { buildTypes {
@ -58,7 +58,7 @@ android {
} }
dependencies { dependencies {
implementation 'androidx.core:core:1.1.0-alpha02' implementation 'androidx.core:core:1.1.0-alpha04'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0' implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
implementation 'androidx.annotation:annotation:1.0.1' implementation 'androidx.annotation:annotation:1.0.1'
implementation 'com.google.code.gson:gson:2.8.5' implementation 'com.google.code.gson:gson:2.8.5'

View File

@ -1,6 +1,6 @@
#Mon Oct 01 13:36:04 CEST 2018 #Wed Feb 20 13:14:30 CET 2019
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip